<?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>73317</bug_id>
          
          <creation_ts>2011-11-29 06:32:35 -0800</creation_ts>
          <short_desc>[CSS Shaders] Add FECustomFilter that renders custom filters</short_desc>
          <delta_ts>2023-04-28 21:05:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>71392</blocked>
    
    <blocked>74840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>japhet</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>510730</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-11-29 06:32:35 -0800</bug_when>
    <thetext>Add a FECustomFilter that can render the shader using GPU, but read back the result to be used with other software shaders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510731</commentid>
    <comment_count>1</comment_count>
      <attachid>116960</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-11-29 06:34:05 -0800</bug_when>
    <thetext>Created attachment 116960
Work in progress

Just a dump of the current progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519709</commentid>
    <comment_count>2</comment_count>
      <attachid>116960</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-12-12 17:07:49 -0800</bug_when>
    <thetext>Comment on attachment 116960
Work in progress

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

Looking good. We&apos;re going to be hooking up the hardware compositing for the other effects this week. That might allow you to skip the readback from the GPU, although I&apos;m not sure if you&apos;ll get the compositing for free in RenderLayerBacking on ports other than OS X. I haven&apos;t looked to see how Chrome and others do this.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterShader.cpp:149
&gt; +    if (m_vertexShader)
&gt; +        m_context-&gt;deleteShader(m_vertexShader);
&gt; +    if (m_fragmentShader)
&gt; +        m_context-&gt;deleteShader(m_fragmentShader);
&gt; +}

Can&apos;t we delete the shaders as soon as we&apos;ve linked?

&gt; Source/WebCore/platform/graphics/filters/FECustomFilter.cpp:69
&gt; +    const float farValue = 10000;
&gt; +    const float nearValue = -10000;

Do we describe why we pick these values anywhere?

&gt; Source/WebCore/platform/graphics/filters/FECustomFilter.cpp:95
&gt; +static void toGLMatrix(float* flattened, const TransformationMatrix&amp; m)
&gt; +{
&gt; +    flattened[0] = m.m11();
&gt; +    flattened[1] = m.m12();
&gt; +    flattened[2] = m.m13();
&gt; +    flattened[3] = m.m14();
&gt; +    flattened[4] = m.m21();
&gt; +    flattened[5] = m.m22();
&gt; +    flattened[6] = m.m23();
&gt; +    flattened[7] = m.m24();
&gt; +    flattened[8] = m.m31();
&gt; +    flattened[9] = m.m32();
&gt; +    flattened[10] = m.m33();
&gt; +    flattened[11] = m.m34();
&gt; +    flattened[12] = m.m41();
&gt; +    flattened[13] = m.m42();
&gt; +    flattened[14] = m.m43();
&gt; +    flattened[15] = m.m44();
&gt; +}

Aside: we really need to improve matrices in WebKit. This type of thing should be supported directly on TransformationMatrix.

&gt; Source/WebCore/platform/graphics/filters/FECustomFilter.cpp:175
&gt; +    unsigned vertexSize = (m_meshType == CustomFilterOperation::ATTACHED ? 8 : 11) * sizeof(float);

I think we need to declare what these magic values mean in CustomFilterOperation and use the consts here.

&gt; Source/WebCore/platform/graphics/filters/FECustomFilter.cpp:196
&gt; +    if (m_meshType == CustomFilterOperation::DETACHED) {
&gt; +        offset += 2 * sizeof(float);

I guess to be consistent the offset line should be outside the if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519841</commentid>
    <comment_count>3</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-12 20:44:21 -0800</bug_when>
    <thetext>(In reply to comment #2)

Thanks for the review! All the comments make sense, so I will try to fix them tomorrow and also add some tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521439</commentid>
    <comment_count>4</comment_count>
      <attachid>119321</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-14 16:27:01 -0800</bug_when>
    <thetext>Created attachment 119321
Patch that generates results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521999</commentid>
    <comment_count>5</comment_count>
      <attachid>119450</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-15 10:10:02 -0800</bug_when>
    <thetext>Created attachment 119450
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522008</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 10:13:11 -0800</bug_when>
    <thetext>Attachment 119450 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/css3...&quot; exit_code: 1

Source/WebCore/WebCore.vcproj/WebCore.vcproj:43832:  mismatched tag  [xml/syntax] [5]
Total errors found: 1 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522037</commentid>
    <comment_count>7</comment_count>
      <attachid>119458</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-15 10:39:04 -0800</bug_when>
    <thetext>Created attachment 119458
Patch V2

It looks like main windows build is broken currently (there&apos;s a missing &lt;/File&gt;) 

I&apos;ve fixed that in this patch, just to make sure EWS is passing all the platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522060</commentid>
    <comment_count>8</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-15 10:53:58 -0800</bug_when>
    <thetext>The FECustomFilter is only enabled on platforms that have WebGL and will only be created if WebGL is enabled in the Settings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522104</commentid>
    <comment_count>9</comment_count>
      <attachid>119458</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 11:39:31 -0800</bug_when>
    <thetext>Comment on attachment 119458
Patch V2

Attachment 119458 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10904340</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522171</commentid>
    <comment_count>10</comment_count>
      <attachid>119487</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-15 13:00:31 -0800</bug_when>
    <thetext>Created attachment 119487
Fixing build issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522303</commentid>
    <comment_count>11</comment_count>
      <attachid>119450</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-12-15 16:09:18 -0800</bug_when>
    <thetext>Comment on attachment 119450
Patch V1

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

Please make another pass, trying to simplify the mesh manipulation logic

&gt; LayoutTests/css3/filters/resources/fragment.shader:1
&gt; +precision mediump float;

I don&apos;t like the .shader suffix much. It would be more descriptive if you used .vs and .fs, which are fairly standard shader suffixes.

&gt; LayoutTests/platform/wk2/Skipped:192
&gt; +css3/filters/custom-filter.html

Please mention why you had to turn off this test in wk2 up in your ChangeLog.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:98
&gt; +                vertices.append(hSize * i - 0.5f + meshBoxX);

Factor out common code between this and addPoint()

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:109
&gt; +        #define ADD_POINT(x, y) \

This is confusingly called ADD_POINT, when it doesn&apos;t use addPoint(), and has the same name as the ADD_POINT below, which does. Seems like all this vertex list manipulation logic could be coalesced into a small set of functions.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.h:51
&gt; +    unsigned verticesBuffer() const { return m_verticesBuffer; }

I can&apos;t tell what verticesBuffer is from the name or return type. I know it is a GC3D buffer object, so it&apos;s type should be Platform3DObject. And maybe it could be called verticesBufferObject.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.h:54
&gt; +    unsigned elementsBuffer() const { return m_elementsBuffer; }

Ditto

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:1201
&gt; +void TransformationMatrix::toColumnMajorFloatArray(float* result) const

I think we&apos;re actually storing the matrix in column major order (if not, we should be). So it seems like this could be a memcpy()

&gt; Source/WebCore/rendering/FilterEffectRenderer.cpp:242
&gt; +#if ENABLE(WEBGL)

Shouldn&apos;t this be ENABLE(WEBGL) &amp;&amp; ENABLE(CSS_SHADERS). There&apos;s no need to have this code compiled in if CSS_SHADERS is off, is there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522546</commentid>
    <comment_count>12</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-15 22:40:31 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 119450 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119450&amp;action=review
&gt; 
&gt; Please make another pass, trying to simplify the mesh manipulation logic
Yes. I&apos;m working on that. I will send an updated patch tomorrow.

&gt; 
&gt; &gt; LayoutTests/css3/filters/resources/fragment.shader:1
&gt; &gt; +precision mediump float;
&gt; 
&gt; I don&apos;t like the .shader suffix much. It would be more descriptive if you used .vs and .fs, which are fairly standard shader suffixes.
Ok.

&gt; 
&gt; &gt; LayoutTests/platform/wk2/Skipped:192
&gt; &gt; +css3/filters/custom-filter.html
&gt; 
&gt; Please mention why you had to turn off this test in wk2 up in your ChangeLog.
I had a comment in the ChangeLog: 
* platform/wk2/Skipped: WebKit2 has no option to force enable WebGL yet.
Should I add more than that? The tracking bug number for that issue is inside the Skipped file.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:98
&gt; &gt; +                vertices.append(hSize * i - 0.5f + meshBoxX);
&gt; 
&gt; Factor out common code between this and addPoint()
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:109
&gt; &gt; +        #define ADD_POINT(x, y) \
&gt; 
&gt; This is confusingly called ADD_POINT, when it doesn&apos;t use addPoint(), and has the same name as the ADD_POINT below, which does. Seems like all this vertex list manipulation logic could be coalesced into a small set of functions.
&gt; 
Ok.

&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.h:51
&gt; &gt; +    unsigned verticesBuffer() const { return m_verticesBuffer; }
&gt; 
&gt; I can&apos;t tell what verticesBuffer is from the name or return type. I know it is a GC3D buffer object, so it&apos;s type should be Platform3DObject. And maybe it could be called verticesBufferObject.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.h:54
&gt; &gt; +    unsigned elementsBuffer() const { return m_elementsBuffer; }
&gt; 
Ok.

&gt; Ditto
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:1201
&gt; &gt; +void TransformationMatrix::toColumnMajorFloatArray(float* result) const
&gt; 
&gt; I think we&apos;re actually storing the matrix in column major order (if not, we should be). So it seems like this could be a memcpy()
Ok. I thought the compiler will optimize that out and the code looked more portable.

&gt; 
&gt; &gt; Source/WebCore/rendering/FilterEffectRenderer.cpp:242
&gt; &gt; +#if ENABLE(WEBGL)
&gt; 
&gt; Shouldn&apos;t this be ENABLE(WEBGL) &amp;&amp; ENABLE(CSS_SHADERS). There&apos;s no need to have this code compiled in if CSS_SHADERS is off, is there?

There&apos;s a ENABLE(CSS_SHADER) two lines before that. I needed to have the case, so that all the values in the enum are handled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522555</commentid>
    <comment_count>13</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-15 22:54:07 -0800</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:1201
&gt; &gt; &gt; +void TransformationMatrix::toColumnMajorFloatArray(float* result) const
&gt; &gt; 
&gt; &gt; I think we&apos;re actually storing the matrix in column major order (if not, we should be). So it seems like this could be a memcpy()
&gt; Ok. I thought the compiler will optimize that out and the code looked more portable.

I take that back. The Matrix4 uses doubles and I actually need floats.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523019</commentid>
    <comment_count>14</comment_count>
      <attachid>119668</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-16 14:11:57 -0800</bug_when>
    <thetext>Created attachment 119668
Patch V3

Thanks for the review. I&apos;ve updated the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523021</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-16 14:15:12 -0800</bug_when>
    <thetext>Attachment 119668 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/css3...&quot; exit_code: 1

Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:95:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523034</commentid>
    <comment_count>16</comment_count>
      <attachid>119672</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-16 14:34:01 -0800</bug_when>
    <thetext>Created attachment 119672
Patch V4

Fixed style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523294</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-12-17 06:36:44 -0800</bug_when>
    <thetext>Mac is failing ews. Looks like MeshGenerator::DetachedMeshVertexSize() is missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523313</commentid>
    <comment_count>18</comment_count>
      <attachid>119729</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-17 10:11:09 -0800</bug_when>
    <thetext>Created attachment 119729
Patch V5

Fixing mac-gcc build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523329</commentid>
    <comment_count>19</comment_count>
      <attachid>119732</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-17 10:50:15 -0800</bug_when>
    <thetext>Created attachment 119732
Patch V6

Rebased the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523362</commentid>
    <comment_count>20</comment_count>
      <attachid>119732</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-12-17 16:57:28 -0800</bug_when>
    <thetext>Comment on attachment 119732
Patch V6

We have a winner!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523424</commentid>
    <comment_count>21</comment_count>
      <attachid>119732</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-18 03:02:35 -0800</bug_when>
    <thetext>Comment on attachment 119732
Patch V6

Clearing flags on attachment: 119732

Committed r103170: &lt;http://trac.webkit.org/changeset/103170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523425</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-18 03:02:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523512</commentid>
    <comment_count>23</comment_count>
      <attachid>119732</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-12-18 12:17:44 -0800</bug_when>
    <thetext>Comment on attachment 119732
Patch V6

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

Great that you&apos;ve worked on this. Though, I&apos;m really sad the patch went in as-is.
It does need better ChangeLogs, and commenting on what has changed. A patch, as big as this, with such an impact, needs this.

As this is already in trunk, would you want to create a follow-up patch, that fixes the issues I mention. Or shall we go as far, and roll this out? I would have given r- to the patch as-is.

&gt; LayoutTests/ChangeLog:10
&gt; +

I would have expected a much more detailed ChangeLog, for new functionality like that!
It&apos;s not obvious to anyone what&apos;s the difference between fragment/vertex shader .fs and .vs files, and what this feature is about.

&gt; LayoutTests/css3/filters/effect-custom-expected.txt:1
&gt; +    

This looks awkward. You should at least include some text in the test file explaining why that the text result doesn&apos;t matter and only the pixel test.

&gt; LayoutTests/css3/filters/resources/color-offset.fs:6
&gt; +    gl_FragColor = texture2D(s_texture, v_texCoord) + 0.3;

This should be commented IMHO, to make it easier to understand what&apos;s happening here.

&gt; LayoutTests/css3/filters/resources/vertex-explode-detached.vs:12
&gt; +    gl_Position = u_projectionMatrix * (a_position + vec4(a_triangleCoord.x / 4.0, a_triangleCoord.y / 4.0, 0.0, 0.0));

Ditto.

&gt; LayoutTests/css3/filters/resources/vertex-offset.vs:11
&gt; +    gl_Position = u_projectionMatrix * (a_position + vec4(0.1, 0.0, 0.0, 0.0));

Ditto.

&gt; Source/WebCore/ChangeLog:7
&gt; +        Using a GraphicsContext3D to render the shaders in GPU, read the
&gt; +        result back and use it in the software filters pipeline.

This ChangeLog contains waaaaay too few information. Sad, that this got in as-is.

&gt; Source/WebCore/ChangeLog:19
&gt; +        * loader/cache/CachedShader.cpp:

Inline comments for all following files would have helped. We usually use extensive ChangeLogs for new features like this.

&gt; Source/WebCore/loader/cache/CachedShader.cpp:52
&gt; +    if (!m_shaderString &amp;&amp; m_data) {

if (!m_shaderString)? What&apos;s operator bool supposed to return for a String?
I&apos;d rather use m_shaderString.isEmpty() here.

&gt; Source/WebCore/loader/cache/CachedShader.cpp:54
&gt; +        m_shaderString = m_decoder-&gt;decode(m_data-&gt;data(), m_data-&gt;size());
&gt; +        m_shaderString += m_decoder-&gt;flush();

Ouch, operator+= should be avoided. Please use StringBuilder here.

&gt; Source/WebCore/loader/cache/CachedShader.cpp:63
&gt; +    if (allDataReceived)
&gt; +        m_data = data;

There&apos;s no need to enter CachedResource::data() if allDataReceived is true. It would only early exit then.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:33
&gt; +

Newline unncessary.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:35
&gt; +

Ditto.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:38
&gt; +#define DEBUG_CUSTOM_FILTER_MESH 0

This is ugly, you should rather always compile your debug function #ifndef NDEBUG, to avoid bit-rot. Your approach is likely to break.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:47
&gt; +        , m_points(cols + 2, rows + 2)
&gt; +        , m_tiles(cols + 1, rows + 1)

This needs to be commented, so the &quot;magic&quot; numbers are understandable, w/o having to inspect all off the code.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:52
&gt; +        m_vertices.reserveCapacity(vertexCount() * floatsPerVertex());

It&apos;s not obvious why vertexCount() * floatsPerVertex() is needed here...

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:53
&gt; +        m_indices.reserveCapacity(indicesCount());

... but not for m_indices.

Whenever you read code, that&apos;s non-obvious like this, a comment is needed.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:120
&gt; +        for (int j = 0; j &lt; m_points.height(); ++j) 

We usually use an enclosing brace for the outer loop in cases like this.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:124
&gt; +        for (int j = 0; j &lt; m_tiles.height(); ++j)

Ditto.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.cpp:137
&gt; +        for (int j = 0; j &lt; m_tiles.height(); ++j)

Ditto.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterMesh.h:47
&gt; +                                               CustomFilterOperation::MeshType meshType) {

Hm, this look awkward, you could have kept one long line.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterShader.cpp:35
&gt; +
&gt; +#define SHADER0(Src) #Src
&gt; +#define SHADER(Src) SHADER0(Src)

Hm, what&apos;s that? :-) This should really be reworked, and or commented.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterShader.cpp:43
&gt; +String CustomFilterShader::defaultVertexShaderString()

How about statically allocating the string inside CustomFilterShader?

&gt; Source/WebCore/platform/graphics/filters/CustomFilterShader.cpp:61
&gt; +    return SHADER(

Ditto.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterShader.cpp:93
&gt; +    Platform3DObject vertexShader = m_context-&gt;createShader(GraphicsContext3D::VERTEX_SHADER);
&gt; +    Platform3DObject fragmentShader = m_context-&gt;createShader(GraphicsContext3D::FRAGMENT_SHADER);
&gt; +
&gt; +    m_context-&gt;shaderSource(vertexShader, m_vertexShaderString);

Endless constructor following, I&apos;d prefer this to be splitted up in more inline helper functions. Anything that splits up the beast is better.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterShader.cpp:151
&gt; +

Newline too much.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterShader.cpp:156
&gt; +
&gt; +

Ditto.

&gt; Source/WebCore/platform/graphics/filters/FECustomFilter.cpp:54
&gt; +static TransformationMatrix orthoMatrix(float left, float right, float bottom, float top)

Abbrevations should be avoided, this needs a new name.
Copying TrafoMatrix by value is a bad idea! Pass in TrafoMatrix&amp; by reference, to avoid the copies!

&gt; Source/WebCore/platform/graphics/filters/FECustomFilter.cpp:69
&gt; +    const float farValue = 10000;
&gt; +    const float nearValue = -10000;

I don&apos;t like it, but well..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523771</commentid>
    <comment_count>24</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-12-18 23:38:44 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 119732 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119732&amp;action=review

Thanks for the review. I&apos;ve posted a new follow-up bug to fix the issues
https://bugs.webkit.org/show_bug.cgi?id=74840</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530239</commentid>
    <comment_count>25</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-01-05 06:13:18 -0800</bug_when>
    <thetext>*** Bug 71405 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1951973</commentid>
    <comment_count>26</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2023-04-28 21:05:00 -0700</bug_when>
    <thetext>rdar://10386016</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116960</attachid>
            <date>2011-11-29 06:34:05 -0800</date>
            <delta_ts>2011-12-14 16:27:01 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug73317.patch</filename>
            <type>text/plain</type>
            <size>57154</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtY3VzdG9tLmh0bWwg
Yi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ODE0NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sCkBAIC0wLDAgKzEsOCBAQAor
PHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPGltZyBzdHlsZT0i
LXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJ3Jlc291cmNlcy92ZXJ0ZXguc2hhZGVyJykgdXJs
KCdyZXNvdXJjZXMvZnJhZ21lbnQuc2hhZGVyJykpIiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2Uu
cG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCdyZXNvdXJjZXMv
dmVydGV4LnNoYWRlcicpLCA1IDEwKSIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8
aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgncmVzb3VyY2VzL3ZlcnRleF9k
ZXRhY2hlZC5zaGFkZXInKSwgMTAgNSBkZXRhY2hlZCkiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5j
ZS5wbmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IGN1c3RvbShub25lIHVybCgncmVz
b3VyY2VzL2ZyYWdtZW50LnNoYWRlcicpKSIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2ZyYWdtZW50
LnNoYWRlciBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvZnJhZ21lbnQuc2hh
ZGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZDA3MzQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2ZyYWdtZW50LnNo
YWRlcgpAQCAtMCwwICsxLDcgQEAKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyB2
ZWMyIHZfdGV4Q29vcmQ7Cit1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7Cit2b2lkIG1haW4o
KQoreworICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZfdGV4Q29vcmQp
ICsgMC4zOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4LnNoYWRlciBiL0xheW91dFRlc3Rz
L2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4LnNoYWRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iOTIxYWViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXguc2hhZGVyCkBAIC0wLDAgKzEsMTIgQEAKK3By
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK2F0dHJp
YnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7CisKK3VuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb25NYXRyaXg7
Cit2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3Np
dGlvbiA9IHVfcHJvamVjdGlvbk1hdHJpeCAqIGFfcG9zaXRpb247CisgICAgdl90ZXhDb29yZCA9
IGFfdGV4Q29vcmQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVz
b3VyY2VzL3ZlcnRleF9kZXRhY2hlZC5zaGFkZXIgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMv
cmVzb3VyY2VzL3ZlcnRleF9kZXRhY2hlZC5zaGFkZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMDY3NjhiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4X2RldGFjaGVkLnNoYWRlcgpAQCAtMCwwICsxLDEzIEBA
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cith
dHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworYXR0cmlidXRlIHZlYzMgYV90cmlhbmdsZUNvb3Jk
CisKK3VuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5aW5nIHZlYzIgdl90ZXhD
b29yZDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbk1h
dHJpeCAqIGFfcG9zaXRpb247CisgICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NGU5MmVhZS4uNzkzMzk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3MSw2ICsxMzcxLDEzIEBACiAJCTUwMzhCRTQxMTQ3
MkFEOTgwMDk1RTBEMSAvKiBDYWNoZWRTaGFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMzhCRTNGMTQ3MkFEOTgwMDk1RTBEMSAvKiBDYWNoZWRT
aGFkZXIuaCAqLzsgfTsKIAkJNTA4Q0NBNEYxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dU
aHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUw
OENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi87IH07CiAJCTUw
OENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTRFMTNDRjEwNkIwMDMx
NTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLzsgfTsKKwkJNTBENDAzQzcxNDc2OEM5NDAw
RDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwM0M1MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZp
bHRlci5jcHAgKi87IH07CisJCTUwRDQwM0M4MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZp
bHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBE
NDAzQzYxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmggKi87IH07CisJCTUwRDQw
NUY5MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNUY3MTQ3RDMxRjMwMEQzMEJC
NSAvKiBDdXN0b21GaWx0ZXJNZXNoLmNwcCAqLzsgfTsKKwkJNTBENDA1RkExNDdEMzFGMzAwRDMw
QkI1IC8qIEN1c3RvbUZpbHRlck1lc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUwRDQwNUY4MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJN
ZXNoLmggKi87IH07CisJCTUwRDQwNjExMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJT
aGFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5jcHAgKi87IH07
CisJCTUwRDQwNjEyMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNjEwMTQ3RDQ5
REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAqLzsgfTsKKwkJNTBENDA2N0QxNDdF
NDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUgLyog
RmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MEU1NjZENjEzOUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFC
QUFCMTEzOTUxMTRCMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5jcHAgKi87IH07CiAJCTUxMDE4
NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2Fj
aGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxMDE4NDZBMEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRB
ODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLzsgfTsKQEAgLTg1NzMsNiArODU4MCwxMyBAQAogCQk1
MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGbG93VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUwOENDQTRFMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhy
ZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZsb3dU
aHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MEI0MjE1NzE0Njk3Njk2
MDA4N0U2MDQgLyogV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTBENDAzQzUxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZFQ3VzdG9tRmlsdGVyLmNwcDsg
cGF0aCA9IGZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MEQ0MDNDNjE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRkVDdXN0b21GaWx0ZXIuaDsgcGF0aCA9IGZp
bHRlcnMvRkVDdXN0b21GaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBE
NDA1RjcxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3VzdG9tRmlsdGVyTWVzaC5jcHA7IHBhdGggPSBm
aWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MEQ0MDVGODE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0ZXJNZXNoLmg7IHBhdGggPSBmaWx0
ZXJzL0N1c3RvbUZpbHRlck1lc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBE
NDA2MEYxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwOyBwYXRo
ID0gZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MEQ0MDYxMDE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlclNoYWRlci5oOyBw
YXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTBENDA2N0MxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2VydmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckVmZmVjdE9ic2VydmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY3MEIwODYwMkEwMDRBODI1
RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hl
ZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjgwQjA4NjAyQTAw
NEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0
QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjA1LDYgKzE3NjE5LDEyIEBACiAJCUE3
NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MEQ0MDYwRjE0N0Q0OURFMDBEMzBCQjUgLyogQ3Vz
dG9tRmlsdGVyU2hhZGVyLmNwcCAqLywKKwkJCQk1MEQ0MDYxMDE0N0Q0OURFMDBEMzBCQjUgLyog
Q3VzdG9tRmlsdGVyU2hhZGVyLmggKi8sCisJCQkJNTBENDA1RjcxNDdEMzFGMzAwRDMwQkI1IC8q
IEN1c3RvbUZpbHRlck1lc2guY3BwICovLAorCQkJCTUwRDQwNUY4MTQ3RDMxRjMwMEQzMEJCNSAv
KiBDdXN0b21GaWx0ZXJNZXNoLmggKi8sCisJCQkJNTBENDAzQzUxNDc2OEM5NDAwRDMwQkI1IC8q
IEZFQ3VzdG9tRmlsdGVyLmNwcCAqLywKKwkJCQk1MEQ0MDNDNjE0NzY4Qzk0MDBEMzBCQjUgLyog
RkVDdXN0b21GaWx0ZXIuaCAqLywKIAkJCQk1MDM4QkMwOTE0NzExRDM0MDA5NUUwRDEgLyogQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmggKi8sCiAJCQkJMTk4NDFCRkExMzY4MzZBMTAwNkVCQkI5IC8q
IGFybSAqLywKIAkJCQlBMUUxMTU0MzEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291
cmNlLmNwcCAqLywKQEAgLTIwODEzLDYgKzIwODMzLDcgQEAKIAkJRjUyM0QyRjMwMkRFNDQzQjAx
ODYzNUNBIC8qIHJlbmRlcmluZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJNTBENDA2N0MxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2Vy
dmVyLmggKi8sCiAJCQkJNDM5MDQ2QzIxMkRBMjVDRTAwQUY4MEEyIC8qIG1hdGhtbCAqLywKIAkJ
CQlCQzhDOEZBQTBERENEMkYyMDBCNTkyRjQgLyogc3R5bGUgKi8sCiAJCQkJMDg4QzJGNzQxMjM5
MDA4MDAwM0Q2NUNFIC8qIHN2ZyAqLywKQEAgLTI0NzMxLDYgKzI0NzUyLDEwIEBACiAJCQkJQTEw
REM3NkIxNDc0N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxMkMwQzQxMTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxMjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEQ0MDNDODE0NzY4Qzk0MDBEMzBCQjUgLyogRkVD
dXN0b21GaWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUwRDQwNUZBMTQ3RDMxRjMwMEQzMEJC
NSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEQ0MDYxMjE0N0Q0
OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MEQ0MDY3RDE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMjc2MDUsNiArMjc2MzAsOSBAQAogCQkJCTdBQTUxQjZGMTQ4M0I2MTYwMEFE
Mjc1MiAvKiBJbnNwZWN0b3JCYXNlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwREM3
NkExNDc0N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzEyOENBNjgxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTBENDAzQzcxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9t
RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUwRDQwNUY5MTQ3RDMxRjMwMEQzMEJCNSAv
KiBDdXN0b21GaWx0ZXJNZXNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUwRDQwNjExMTQ3RDQ5
REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwCmluZGV4IDFkOGY1NDAu
LjEzYmRhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
aGFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIu
Y3BwCkBAIC0zMiwxMSArMzIsMTQgQEAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAKICNpbmNs
dWRlICJDYWNoZWRTaGFkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVk
U2hhZGVyOjpDYWNoZWRTaGFkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShyZXNvdXJjZVJlcXVlc3QsIFNoYWRlclJlc291cmNl
KQorICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRp
b24vc2hhZGVyIikpCiB7CiB9CiAKQEAgLTQ0LDYgKzQ3LDI0IEBAIENhY2hlZFNoYWRlcjo6fkNh
Y2hlZFNoYWRlcigpCiB7CiB9CiAKK2NvbnN0IFN0cmluZyYgQ2FjaGVkU2hhZGVyOjpzaGFkZXJT
dHJpbmcoKQoreworICAgIGlmICghbV9zaGFkZXJTdHJpbmcgJiYgbV9kYXRhKSB7CisgICAgICAg
IG1fc2hhZGVyU3RyaW5nID0gbV9kZWNvZGVyLT5kZWNvZGUobV9kYXRhLT5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGFkZXJTdHJpbmcgKz0gbV9kZWNvZGVyLT5mbHVzaCgp
OworICAgIH0KKworICAgIHJldHVybiBtX3NoYWRlclN0cmluZzsKK30KKwordm9pZCBDYWNoZWRT
aGFkZXI6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQoreworICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpCisgICAgICAgIG1fZGF0YSA9IGRh
dGE7CisKKyAgICBDYWNoZWRSZXNvdXJjZTo6ZGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURF
UlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgKaW5kZXggOGRl
YWQwMS4uY2MzOGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNoYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFk
ZXIuaApAQCAtMzYsMTAgKzM2LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
VGV4dFJlc291cmNlRGVjb2RlcjsKKwogY2xhc3MgQ2FjaGVkU2hhZGVyIDogcHVibGljIENhY2hl
ZFJlc291cmNlIHsKIHB1YmxpYzoKICAgICBDYWNoZWRTaGFkZXIoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CiAgICAgdmlydHVhbCB+Q2FjaGVkU2hhZGVyKCk7CisgICAgCisgICAgY29uc3QgU3Ry
aW5nJiBzaGFkZXJTdHJpbmcoKTsKKyAgICB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgCitwcml2YXRlOgorICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisgICAgU3RyaW5nIG1fc2hhZGVyU3RyaW5n
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZDg0MDY0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAKQEAgLTAsMCAr
MSwxNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRl
ZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFT
IElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyTWVz
aC5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKworI2RlZmluZSBERUJVR19D
VVNUT01fRklMVEVSX01FU0ggMAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2b2lk
IGFkZFBvaW50KGludCBpLCBpbnQgaiwgVmVjdG9yPGZsb2F0PiYgdmVydGljZXMsIFZlY3Rvcjx1
aW50MTZfdD4mIGluZGljZXMsIGZsb2F0IGhTaXplLCBmbG9hdCB2U2l6ZSwgZmxvYXQgbWhTaXpl
LCBmbG9hdCBtdlNpemUsIGZsb2F0IG1lc2hCb3hYLCBmbG9hdCBtZXNoQm94WSwgaW50IGRpLCBp
bnQgZGosIGludCB0cmlhbmdsZSkKK3sKKyAgICBkaSArPSBpOworICAgIGRqICs9IGo7CisgICAg
dmVydGljZXMuYXBwZW5kKGhTaXplICogZGkgLSAwLjVmICsgbWVzaEJveFgpOworICAgIHZlcnRp
Y2VzLmFwcGVuZCh2U2l6ZSAqIGRqIC0gMC41ZiArIG1lc2hCb3hZKTsKKyAgICB2ZXJ0aWNlcy5h
cHBlbmQoMC4wZik7CisgICAgdmVydGljZXMuYXBwZW5kKDEuMGYpOworICAgIHZlcnRpY2VzLmFw
cGVuZChoU2l6ZSAqIGRpICsgbWVzaEJveFgpOworICAgIHZlcnRpY2VzLmFwcGVuZCh2U2l6ZSAq
IGRqICsgbWVzaEJveFkpOworICAgIHZlcnRpY2VzLmFwcGVuZChtaFNpemUgKiBkaSk7CisgICAg
dmVydGljZXMuYXBwZW5kKG12U2l6ZSAqIGRqKTsKKyAgICB2ZXJ0aWNlcy5hcHBlbmQoaSk7Cisg
ICAgdmVydGljZXMuYXBwZW5kKGopOworICAgIHZlcnRpY2VzLmFwcGVuZCh0cmlhbmdsZSk7Cisg
ICAgaW5kaWNlcy5hcHBlbmQoaW5kaWNlcy5zaXplKCkpOworfQorCitDdXN0b21GaWx0ZXJNZXNo
OjpDdXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBj
b2xzLCB1bnNpZ25lZCByb3dzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBl
IG1lc2hUeXBlKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3F1YWRWZXJ0aWNl
c1ZibygwKQorICAgICwgbV9xdWFkRWxlbWVudHNWYm8oMCkKKyAgICAsIG1fbWVzaEJveChtZXNo
Qm94KQorICAgICwgbV9tZXNoVHlwZShtZXNoVHlwZSkKK3sKKyAgICBWZWN0b3I8ZmxvYXQ+IHZl
cnRpY2VzOworICAgIFZlY3Rvcjx1aW50MTZfdD4gaW5kaWNlczsKKworICAgIHVuc2lnbmVkIGhQ
b2ludHMgPSBjb2xzICsgMjsKKyAgICB1bnNpZ25lZCB2UG9pbnRzID0gcm93cyArIDI7CisKKyAg
ICB1bnNpZ25lZCBoU3BhY2VzID0gY29scyArIDE7CisgICAgdW5zaWduZWQgdlNwYWNlcyA9IHJv
d3MgKyAxOworICAgICAgICAKKyAgICBmbG9hdCBoU2l6ZSA9IG1lc2hCb3gud2lkdGgoKSAvIGhT
cGFjZXM7CisgICAgZmxvYXQgdlNpemUgPSBtZXNoQm94LmhlaWdodCgpIC8gdlNwYWNlczsKKwor
ICAgIGZsb2F0IG1oU2l6ZSA9IDEuMCAvIGhTcGFjZXM7CisgICAgZmxvYXQgbXZTaXplID0gMS4w
IC8gdlNwYWNlczsKKyAgICAKKyAgICBmbG9hdCBtZXNoQm94WCA9IG1lc2hCb3gueCgpOworICAg
IGZsb2F0IG1lc2hCb3hZID0gbWVzaEJveC55KCk7CisgICAgCisgICAgaWYgKG1lc2hUeXBlID09
IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQpIHsKKyAgICAgICAgdmVydGljZXMucmVz
ZXJ2ZUNhcGFjaXR5KGhQb2ludHMgKiB2UG9pbnRzICogOCk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IDA7IGogPCB2UG9pbnRzOyArK2opIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBoUG9pbnRzOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNlcy5hcHBl
bmQoaFNpemUgKiBpIC0gMC41ZiArIG1lc2hCb3hYKTsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNl
cy5hcHBlbmQodlNpemUgKiBqIC0gMC41ZiArIG1lc2hCb3hZKTsKKyAgICAgICAgICAgICAgICB2
ZXJ0aWNlcy5hcHBlbmQoMC4wZik7CisgICAgICAgICAgICAgICAgdmVydGljZXMuYXBwZW5kKDEu
MGYpOworICAgICAgICAgICAgICAgIHZlcnRpY2VzLmFwcGVuZChoU2l6ZSAqIGkgKyBtZXNoQm94
WCk7CisgICAgICAgICAgICAgICAgdmVydGljZXMuYXBwZW5kKHZTaXplICogaiArIG1lc2hCb3hZ
KTsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNlcy5hcHBlbmQobWhTaXplICogaSk7CisgICAgICAg
ICAgICAgICAgdmVydGljZXMuYXBwZW5kKG12U2l6ZSAqIGopOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpbmRpY2VzLnJlc2VydmVDYXBhY2l0eShoU3BhY2Vz
ICogdlNwYWNlcyAqIDYpOyAvLyAzIGluZGljZXMgcGVyIHRyaWFuZ2xlLCAyIHRyaWFuZ2xlcyBw
ZXIgcXVhZAorICAgICAgICAKKyAgICAgICAgI2RlZmluZSBBRERfUE9JTlQoeCwgeSkgXAorICAg
ICAgICAgICAgaW5kaWNlcy5hcHBlbmQoKGogKyB5KSAqIGhQb2ludHMgKyAoaSArIHgpKTsKKyAg
ICAgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgdlNwYWNlczsgKytq
KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaFNwYWNlczsgKytpKSB7
CisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDAsIDApOworICAgICAgICAgICAgICAgIEFERF9Q
T0lOVCgxLCAwKTsKKyAgICAgICAgICAgICAgICBBRERfUE9JTlQoMSwgMSk7CisKKyAgICAgICAg
ICAgICAgICBBRERfUE9JTlQoMCwgMCk7CisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDEsIDEp
OworICAgICAgICAgICAgICAgIEFERF9QT0lOVCgwLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgI3VuZGVmIEFERF9QT0lOVAorICAgIH0gZWxzZSB7Cisg
ICAgICAgIHZlcnRpY2VzLnJlc2VydmVDYXBhY2l0eShoU3BhY2VzICogdlNwYWNlcyAqIDYgKiAx
MSk7CisgICAgICAgIGluZGljZXMucmVzZXJ2ZUNhcGFjaXR5KGhTcGFjZXMgKiB2U3BhY2VzICog
Nik7IC8vIDMgaW5kaWNlcyBwZXIgdHJpYW5nbGUsIDIgdHJpYW5nbGVzIHBlciBxdWFkCisKKyAg
ICAgICAgI2RlZmluZSBBRERfUE9JTlQoeCwgeSwgdHJpYW5nbGUpIFwKKyAgICAgICAgICAgIGFk
ZFBvaW50KGksIGosIHZlcnRpY2VzLCBpbmRpY2VzLCBoU2l6ZSwgdlNpemUsIG1oU2l6ZSwgbXZT
aXplLCBtZXNoQm94WCwgbWVzaEJveFksIHgsIHksIHRyaWFuZ2xlKQorCisgICAgICAgIGZvciAo
dW5zaWduZWQgaiA9IDA7IGogPCB2U3BhY2VzOyArK2opIHsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBoU3BhY2VzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBBRERfUE9J
TlQoMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDEsIDAsIDEpOworICAgICAg
ICAgICAgICAgIEFERF9QT0lOVCgxLCAxLCAyKTsKKworICAgICAgICAgICAgICAgIEFERF9QT0lO
VCgwLCAwLCAzKTsKKyAgICAgICAgICAgICAgICBBRERfUE9JTlQoMSwgMSwgNCk7CisgICAgICAg
ICAgICAgICAgQUREX1BPSU5UKDAsIDEsIDUpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICAjdW5kZWYgQUREX1BPSU5UCisgICAgfQorICAgIAorI2lmIERFQlVH
X0NVU1RPTV9GSUxURVJfTUVTSAorICAgIHByaW50ZigiTWVzaFZCTzogUm93czogJWQsIENvbHM6
ICVkIGJveDogJWYsICVmLCAlZiwgJWYsIHR5cGU6ICVzXG4iLCAKKyAgICAgICAgICAgIGNvbHMs
IHJvd3MsIG1lc2hCb3gueCgpLCBtZXNoQm94LnkoKSwgbWVzaEJveC53aWR0aCgpLCBtZXNoQm94
LmhlaWdodCgpLCAobWVzaFR5cGUgPT0gQXR0YWNoZWRNZXNoQm94KSA/ICJBdHRhY2hlZCIgOiAi
RGV0YWNoZWQiKTsKKyAgICBwcmludGYoIi0tLVZlcnRleDpcblx0Iik7CisgICAgdW5zaWduZWQg
ZWxlbWVudHNQZXJMaW5lID0gKG1lc2hUeXBlID09IEF0dGFjaGVkTWVzaEJveCkgPyA4IDogMTE7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlcnRpY2VzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIHByaW50ZigiJWYgIiwgdmVydGljZXMuYXQoaSkpOworICAgICAgICBpZiAoKChpICsg
MSkgJSBlbGVtZW50c1BlckxpbmUpID09IDApCisgICAgICAgICAgICBwcmludGYoIlxuXHQiKTsK
KyAgICB9CisgICAgcHJpbnRmKCJcbi0tLUluZGljZXM6ICIpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBpbmRpY2VzLnNpemUoKTsgKytpKQorICAgICAgICBwcmludGYoIiVkICIsIGlu
ZGljZXMuYXQoaSkpOworICAgIHByaW50ZigiXG4iKTsKKyNlbmRpZgorCisgICAgbV9xdWFkVmVy
dGljZXNWYm8gPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpOworICAgIG1fcXVhZEVsZW1lbnRz
VmJvID0gbV9jb250ZXh0LT5jcmVhdGVCdWZmZXIoKTsKKyAgICBtX2NvbnRleHQtPmJpbmRCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV9xdWFkVmVydGljZXNWYm8pOwor
ICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVS
LCB2ZXJ0aWNlcy5zaXplKCkgKiBzaXplb2YoZmxvYXQpLCB2ZXJ0aWNlcy5kYXRhKCksIEdyYXBo
aWNzQ29udGV4dDNEOjpTVEFUSUNfRFJBVyk7CisgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiwgbV9xdWFkRWxlbWVudHNWYm8p
OworICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9B
UlJBWV9CVUZGRVIsIGluZGljZXMuc2l6ZSgpICogc2l6ZW9mKHVpbnQxNl90KSwgaW5kaWNlcy5k
YXRhKCksIEdyYXBoaWNzQ29udGV4dDNEOjpTVEFUSUNfRFJBVyk7Cit9CisKK0N1c3RvbUZpbHRl
ck1lc2g6On5DdXN0b21GaWx0ZXJNZXNoKCkKK3sKKyAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZl
cihtX3F1YWRWZXJ0aWNlc1Zibyk7CisgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV9xdWFk
RWxlbWVudHNWYm8pOworfQorCit9IC8vbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShDU1NfU0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNmZjZTIyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRl
ZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFT
IElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21GaWx0
ZXJNZXNoX2gKKyNkZWZpbmUgQ3VzdG9tRmlsdGVyTWVzaF9oCisKKyNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlIDxG
bG9hdFJlY3QuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworCitjbGFzcyBDdXN0b21GaWx0ZXJN
ZXNoIDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyTWVzaD4geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck1lc2g+IGNyZWF0ZShHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgdW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRS
ZWN0JiBtZXNoQm94LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlck1lc2goY29udGV4dCwgY29scywgcm93
cywgbWVzaEJveCwgbWVzaFR5cGUpKTsKKyAgICB9CisgICAgfkN1c3RvbUZpbHRlck1lc2goKTsK
KworICAgIHVuc2lnbmVkIHF1YWRWZXJ0aWNlc1ZibygpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZFZl
cnRpY2VzVmJvOyB9CisgICAgdW5zaWduZWQgcXVhZEVsZW1lbnRzVmJvKCkgY29uc3QgeyByZXR1
cm4gbV9xdWFkRWxlbWVudHNWYm87IH0KKyAgICBjb25zdCBGbG9hdFJlY3QmIG1lc2hCb3goKSBj
b25zdCB7IHJldHVybiBtX21lc2hCb3g7IH0KKyAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1l
c2hUeXBlIG1lc2hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoVHlwZTsgfQorCitwcml2YXRl
OgorICAgIEN1c3RvbUZpbHRlck1lc2goR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBjb2xz
LCB1bnNpZ25lZCByb3dzLCBjb25zdCBGbG9hdFJlY3QmIG1lc2hCb3gsIEN1c3RvbUZpbHRlck9w
ZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpOworICAgIAorICAgIEdyYXBoaWNzQ29udGV4dDNE
KiBtX2NvbnRleHQ7CisgICAgdW5zaWduZWQgbV9xdWFkVmVydGljZXNWYm87CisgICAgdW5zaWdu
ZWQgbV9xdWFkRWxlbWVudHNWYm87CisgICAgRmxvYXRSZWN0IG1fbWVzaEJveDsKKyAgICBDdXN0
b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1fbWVzaFR5cGU7Cit9OworCit9IC8vbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKKworI2VuZGlmIC8v
IEN1c3RvbUZpbHRlck1lc2hfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YjJkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRl
ci5jcHAKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorCisjZGVmaW5lIFNI
QURFUjAoU3JjKSAjU3JjCisjZGVmaW5lIFNIQURFUihTcmMpIFNIQURFUjAoU3JjKQorCisjaW5j
bHVkZSAiQ3VzdG9tRmlsdGVyU2hhZGVyLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBDdXN0b21GaWx0ZXJTaGFkZXI6
OmRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcoKQoreworICAgIHJldHVybiBTSEFERVIoCisgICAg
ICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bv
c2l0aW9uOworICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworICAgICAgICB1bmlm
b3JtIG1hdDQgdV9wcm9qZWN0aW9uTWF0cml4OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhD
b29yZDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9z
aXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiBhX3Bvc2l0aW9uOworICAgICAgICAgICAgdl90
ZXhDb29yZCA9IGFfdGV4Q29vcmQ7CisgICAgICAgIH0KKyAgICApOworfQorCitTdHJpbmcgQ3Vz
dG9tRmlsdGVyU2hhZGVyOjpkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKQoreworICAgIHJl
dHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2
YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0
dXJlOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFn
Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsKKyAgICAgICAgfQorICAg
ICk7Cit9CisKK0N1c3RvbUZpbHRlclNoYWRlcjo6Q3VzdG9tRmlsdGVyU2hhZGVyKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlclN0cmluZywgY29u
c3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclN0cmluZykKKyAgICA6IG1fY29udGV4dChjb250ZXh0
KQorICAgICwgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcoIXZlcnRleFNoYWRlclN0cmluZy5pc051bGwo
KSA/IHZlcnRleFNoYWRlclN0cmluZyA6IGRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcoKSkKKyAg
ICAsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcoIWZyYWdtZW50U2hhZGVyU3RyaW5nLmlzTnVsbCgp
ID8gZnJhZ21lbnRTaGFkZXJTdHJpbmcgOiBkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKSkK
KyAgICAsIG1fdmVydGV4U2hhZGVyKDApCisgICAgLCBtX2ZyYWdtZW50U2hhZGVyKDApCisgICAg
LCBtX3Byb2dyYW0oMCkKKyAgICAsIG1fcG9zaXRpb25BdHRyaWJMb2NhdGlvbigtMSkKKyAgICAs
IG1fdGV4QXR0cmliTG9jYXRpb24oLTEpCisgICAgLCBtX21lc2hBdHRyaWJMb2NhdGlvbigtMSkK
KyAgICAsIG1fdHJpYW5nbGVBdHRyaWJMb2NhdGlvbigtMSkKKyAgICAsIG1fbWVzaEJveExvY2F0
aW9uKC0xKQorICAgICwgbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oLTEpCisgICAgLCBtX3Rp
bGVTaXplTG9jYXRpb24oLTEpCisgICAgLCBtX21lc2hTaXplTG9jYXRpb24oLTEpCisgICAgLCBt
X3NhbXBsZXJMb2NhdGlvbigtMSkKKyAgICAsIG1fc2FtcGxlclNpemVMb2NhdGlvbigtMSkKKyAg
ICAsIG1fY29udGVudFNhbXBsZXJMb2NhdGlvbigtMSkKKyAgICAsIG1faXNJbml0aWFsaXplZChm
YWxzZSkKK3sKKyAgICBtX3ZlcnRleFNoYWRlciA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKEdy
YXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVSKTsKKyAgICBtX2ZyYWdtZW50U2hhZGVyID0g
bV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQUdNRU5UX1NIQURF
Uik7CisgICAgbV9wcm9ncmFtID0gbV9jb250ZXh0LT5jcmVhdGVQcm9ncmFtKCk7CisgICAgCisg
ICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UobV92ZXJ0ZXhTaGFkZXIsIG1fdmVydGV4U2hhZGVy
U3RyaW5nKTsKKyAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIobV92ZXJ0ZXhTaGFkZXIpOwor
ICAgIAorICAgIGludCBjb21waWxlZCA9IDA7CisgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdiht
X3ZlcnRleFNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVTLCAmY29tcGls
ZWQpOworICAgIGlmICghY29tcGlsZWQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4g
aW52YWxpZCBzaGFkZXIuIFRocm93IHNvbWUgZXJyb3JzLgorICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKG1fZnJhZ21lbnRTaGFkZXIsIG1f
ZnJhZ21lbnRTaGFkZXJTdHJpbmcpOworICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihtX2Zy
YWdtZW50U2hhZGVyKTsKKyAgICAKKyAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KG1fZnJhZ21l
bnRTaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QSUxFX1NUQVRVUywgJmNvbXBpbGVkKTsK
KyAgICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGFuIGludmFs
aWQgc2hhZGVyLiBUaHJvdyBzb21lIGVycm9ycy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3Byb2dyYW0sIG1fdmVydGV4U2hhZGVy
KTsKKyAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3Byb2dyYW0sIG1fZnJhZ21lbnRTaGFk
ZXIpOworICAgIG1fY29udGV4dC0+bGlua1Byb2dyYW0obV9wcm9ncmFtKTsKKyAgICAKKyAgICBp
bnQgbGlua2VkID0gMDsKKyAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihtX3Byb2dyYW0sIEdy
YXBoaWNzQ29udGV4dDNEOjpMSU5LX1NUQVRVUywgJmxpbmtlZCk7CisgICAgaWYgKCFsaW5rZWQp
IHsKKyAgICAgICAgLy8gRklYTUU6IEludmFsaWQgdmVydGV4L2ZyYWdtZW50IHNoYWRlciBjb21i
aW5hdGlvbi4gVGhyb3cgc29tZSBlcnJvcnMgaGVyZS4KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJp
YkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKKyAgICBtX3RleEF0dHJpYkxvY2F0
aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3RleENvb3Jk
Iik7CisgICAgbV9tZXNoQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0
aW9uKG1fcHJvZ3JhbSwgImFfbWVzaENvb3JkIik7CisgICAgbV90cmlhbmdsZUF0dHJpYkxvY2F0
aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3RyaWFuZ2xl
Q29vcmQiKTsKKyAgICBtX21lc2hCb3hMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1fcHJvZ3JhbSwgInVfbWVzaEJveCIpOworICAgIG1fdGlsZVNpemVMb2NhdGlvbiA9
IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfdGlsZVNpemUiKTsK
KyAgICBtX21lc2hTaXplTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbiht
X3Byb2dyYW0sICJ1X21lc2hTaXplIik7CisgICAgbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24g
PSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3Byb2plY3Rpb25N
YXRyaXgiKTsKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1fcHJvZ3JhbSwgInNfdGV4dHVyZSIpOworICAgIG1fc2FtcGxlclNpemVMb2NhdGlv
biA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInNfdGV4dHVyZVNp
emUiKTsKKyAgICBtX2NvbnRlbnRTYW1wbGVyTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihtX3Byb2dyYW0sICJzX2NvbnRlbnRUZXh0dXJlIik7CisgICAgCisgICAgbV9p
c0luaXRpYWxpemVkID0gdHJ1ZTsKK30KKyAgICAKK0N1c3RvbUZpbHRlclNoYWRlcjo6fkN1c3Rv
bUZpbHRlclNoYWRlcigpCit7CisgICAgaWYgKG1fcHJvZ3JhbSkKKyAgICAgICAgbV9jb250ZXh0
LT5kZWxldGVQcm9ncmFtKG1fcHJvZ3JhbSk7CisgICAgaWYgKG1fdmVydGV4U2hhZGVyKQorICAg
ICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihtX3ZlcnRleFNoYWRlcik7CisgICAgaWYgKG1f
ZnJhZ21lbnRTaGFkZXIpCisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKG1fZnJhZ21l
bnRTaGFkZXIpOworfQorCisKK30KKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZDFjM2VkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisg
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21GaWx0ZXJTaGFkZXJfaAor
I2RlZmluZSBDdXN0b21GaWx0ZXJTaGFkZXJfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQor
CisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKKworY2xhc3MgQ3VzdG9tRmlsdGVyU2hhZGVy
OiBwdWJsaWMgUmVmQ291bnRlZDxDdXN0b21GaWx0ZXJTaGFkZXI+IHsKK3B1YmxpYzoKKwlzdGF0
aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJTaGFkZXI+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJh
Z21lbnRTaGFkZXIpCisJeworCQlyZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlclNoYWRl
cihjb250ZXh0LCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKSk7CisJfQorICAgIAorICAg
IH5DdXN0b21GaWx0ZXJTaGFkZXIoKTsKKyAgICAKKyAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRW
ZXJ0ZXhTaGFkZXJTdHJpbmcoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRGcmFnbWVudFNo
YWRlclN0cmluZygpOyAgICAKKyAgICAKKyAgICBTdHJpbmcgdmVydGV4U2hhZGVyU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7IH0KKyAgICBTdHJpbmcgZnJhZ21l
bnRTaGFkZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nOyB9
CisgICAgCisgICAgaW50IHBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3Bvc2l0aW9uQXR0cmliTG9jYXRpb247IH0KKyAgICBpbnQgdGV4QXR0cmliTG9jYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3RleEF0dHJpYkxvY2F0aW9uOyB9CisgICAgaW50IG1lc2hBdHRyaWJM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaEF0dHJpYkxvY2F0aW9uOyB9CisgICAgaW50
IHRyaWFuZ2xlQXR0cmliTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RyaWFuZ2xlQXR0cmli
TG9jYXRpb247IH0KKyAgICBpbnQgbWVzaEJveExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9t
ZXNoQm94TG9jYXRpb247IH0KKyAgICBpbnQgcHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb247IH0KKyAgICBpbnQgdGlsZVNp
emVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZVNpemVMb2NhdGlvbjsgfQorICAgIGlu
dCBtZXNoU2l6ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoU2l6ZUxvY2F0aW9uOyB9
CisgICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlckxvY2F0
aW9uOyB9CisgICAgaW50IGNvbnRlbnRTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRTYW1wbGVyTG9jYXRpb247IH0KKyAgICBpbnQgc2FtcGxlclNpemVMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlclNpemVMb2NhdGlvbjsgfQorICAgIAorICAgIGJvb2wg
aXNJbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXplZDsgfQorICAgIAor
ICAgIFBsYXRmb3JtM0RPYmplY3QgdmVydGV4U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0
ZXhTaGFkZXI7IH0KKyAgICBQbGF0Zm9ybTNET2JqZWN0IGZyYWdtZW50U2hhZGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFnbWVudFNoYWRlcjsgfQorICAgIFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3JhbTsgfQorCitwcml2YXRlOgorICAgIEN1c3RvbUZp
bHRlclNoYWRlcihHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVy
LCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyKTsKKyAgICAKKyAgICBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IG1fY29udGV4dDsKKyAgICAKKyAgICBTdHJpbmcgbV92ZXJ0ZXhTaGFkZXJT
dHJpbmc7CisgICAgU3RyaW5nIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7CisKKyAgICBQbGF0Zm9y
bTNET2JqZWN0IG1fdmVydGV4U2hhZGVyOworICAgIFBsYXRmb3JtM0RPYmplY3QgbV9mcmFnbWVu
dFNoYWRlcjsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fcHJvZ3JhbTsKKyAgICAKKyAgICBpbnQg
bV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uOworICAgIGludCBtX3RleEF0dHJpYkxvY2F0aW9uOwor
ICAgIGludCBtX21lc2hBdHRyaWJMb2NhdGlvbjsKKyAgICBpbnQgbV90cmlhbmdsZUF0dHJpYkxv
Y2F0aW9uOworICAgIGludCBtX21lc2hCb3hMb2NhdGlvbjsKKyAgICBpbnQgbV9wcm9qZWN0aW9u
TWF0cml4TG9jYXRpb247CisgICAgaW50IG1fdGlsZVNpemVMb2NhdGlvbjsKKyAgICBpbnQgbV9t
ZXNoU2l6ZUxvY2F0aW9uOworICAgIGludCBtX3NhbXBsZXJMb2NhdGlvbjsKKyAgICBpbnQgbV9z
YW1wbGVyU2l6ZUxvY2F0aW9uOworICAgIGludCBtX2NvbnRlbnRTYW1wbGVyTG9jYXRpb247Cisg
ICAgCisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoQ1NTX1NIQURFUlMpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODliNDc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAK
QEAgLTAsMCArMSwyMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIElu
Y29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisg
KiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIkZFQ3VzdG9t
RmlsdGVyLmgiCisKKyNpbmNsdWRlICJDYWNoZWRTaGFkZXIuaCIKKyNpbmNsdWRlICJTdHlsZUNh
Y2hlZFNoYWRlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAi
Q3VzdG9tRmlsdGVyTWVzaC5oIgorI2luY2x1ZGUgIkN1c3RvbUZpbHRlclNoYWRlci5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgorI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIlJlbmRlclRy
ZWVBc1RleHQuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisjaW5jbHVkZSAiVGV4dHVyZS5o
IgorI2luY2x1ZGUgIlRpbGluZ0RhdGEuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIgorCisjaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRob01hdHJpeChmbG9hdCBsZWZ0LCBm
bG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmbG9hdCB0b3ApCit7CisgICAgZmxvYXQgZGVsdGFY
ID0gcmlnaHQgLSBsZWZ0OworICAgIGZsb2F0IGRlbHRhWSA9IHRvcCAtIGJvdHRvbTsKKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRobzsKKyAgICBpZiAoIWRlbHRhWCB8fCAhZGVsdGFZKQor
ICAgICAgICByZXR1cm4gb3J0aG87CisgICAgb3J0aG8uc2V0TTExKDIuMGYgLyBkZWx0YVgpOwor
ICAgIG9ydGhvLnNldE00MSgtKHJpZ2h0ICsgbGVmdCkgLyBkZWx0YVgpOworICAgIG9ydGhvLnNl
dE0yMigyLjBmIC8gZGVsdGFZKTsKKyAgICBvcnRoby5zZXRNNDIoLSh0b3AgKyBib3R0b20pIC8g
ZGVsdGFZKTsKKworICAgIC8vIFogY29tcG9uZW50IG9mIHZlcnRpY2VzIGlzIGFsd2F5cyBzZXQg
dG8gemVybyBhcyB3ZSBkb24ndCB1c2UgdGhlIGRlcHRoIGJ1ZmZlcgorICAgIC8vIHdoaWxlIGRy
YXdpbmcuCisgICAgY29uc3QgZmxvYXQgZmFyVmFsdWUgPSAxMDAwMDsKKyAgICBjb25zdCBmbG9h
dCBuZWFyVmFsdWUgPSAtMTAwMDA7CisgICAgb3J0aG8uc2V0TTMzKC0yLjBmIC8gKGZhclZhbHVl
IC0gbmVhclZhbHVlKSk7CisgICAgb3J0aG8uc2V0TTQzKC0gKGZhclZhbHVlICsgbmVhclZhbHVl
KSAvIChmYXJWYWx1ZSAtIG5lYXJWYWx1ZSkpOworICAgIG9ydGhvLnNldE00NCgxLjBmKTsKKwor
ICAgIHJldHVybiBvcnRobzsKK30KKworc3RhdGljIHZvaWQgdG9HTE1hdHJpeChmbG9hdCogZmxh
dHRlbmVkLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkKK3sKKyAgICBmbGF0dGVuZWRb
MF0gPSBtLm0xMSgpOworICAgIGZsYXR0ZW5lZFsxXSA9IG0ubTEyKCk7CisgICAgZmxhdHRlbmVk
WzJdID0gbS5tMTMoKTsKKyAgICBmbGF0dGVuZWRbM10gPSBtLm0xNCgpOworICAgIGZsYXR0ZW5l
ZFs0XSA9IG0ubTIxKCk7CisgICAgZmxhdHRlbmVkWzVdID0gbS5tMjIoKTsKKyAgICBmbGF0dGVu
ZWRbNl0gPSBtLm0yMygpOworICAgIGZsYXR0ZW5lZFs3XSA9IG0ubTI0KCk7CisgICAgZmxhdHRl
bmVkWzhdID0gbS5tMzEoKTsKKyAgICBmbGF0dGVuZWRbOV0gPSBtLm0zMigpOworICAgIGZsYXR0
ZW5lZFsxMF0gPSBtLm0zMygpOworICAgIGZsYXR0ZW5lZFsxMV0gPSBtLm0zNCgpOworICAgIGZs
YXR0ZW5lZFsxMl0gPSBtLm00MSgpOworICAgIGZsYXR0ZW5lZFsxM10gPSBtLm00MigpOworICAg
IGZsYXR0ZW5lZFsxNF0gPSBtLm00MygpOworICAgIGZsYXR0ZW5lZFsxNV0gPSBtLm00NCgpOwor
fQorCitGRUN1c3RvbUZpbHRlcjo6RkVDdXN0b21GaWx0ZXIoRmlsdGVyKiBmaWx0ZXIsIERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYg
ZnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bWVzaFJvd3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1l
c2hCb3hUeXBlIG1lc2hCb3hUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1
c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCisgICAgOiBGaWx0ZXJFZmZl
Y3QoZmlsdGVyKQorICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fdmVydGV4U2hh
ZGVyKHZlcnRleFNoYWRlcikKKyAgICAsIG1fZnJhZ21lbnRTaGFkZXIoZnJhZ21lbnRTaGFkZXIp
CisgICAgLCBtX21lc2hSb3dzKG1lc2hSb3dzKQorICAgICwgbV9tZXNoQ29sdW1ucyhtZXNoQ29s
dW1ucykKKyAgICAsIG1fbWVzaEJveFR5cGUobWVzaEJveFR5cGUpCisgICAgLCBtX21lc2hUeXBl
KG1lc2hUeXBlKQorCit7Cit9CisKK1Bhc3NSZWZQdHI8RkVDdXN0b21GaWx0ZXI+IEZFQ3VzdG9t
RmlsdGVyOjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVzaFJvd3Ms
IHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hCb3hUeXBl
IG1lc2hCb3hUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBGRUN1c3RvbUZpbHRlcihmaWx0ZXIsIGRvY3VtZW50LCB2ZXJ0ZXhTaGFk
ZXIsIGZyYWdtZW50U2hhZGVyLCBtZXNoUm93cywgbWVzaENvbHVtbnMsIG1lc2hCb3hUeXBlLCBt
ZXNoVHlwZSkpOworfQorCit2b2lkIEZFQ3VzdG9tRmlsdGVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQoreworICAgIEJ5dGVBcnJheSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdCgpOworICAgIGlmICghZHN0UGl4ZWxBcnJheSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOworICAgIEludFJlY3Qg
ZWZmZWN0QURyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbi0+
YWJzb2x1dGVQYWludFJlY3QoKSk7CisgICAgUmVmUHRyPEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJh
eSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3RBRHJhd2luZ1JlY3QpOworICAgIAor
ICAgIEludFNpemUgY29udGV4dFNpemUoZWZmZWN0QURyYXdpbmdSZWN0LndpZHRoKCksIGVmZmVj
dEFEcmF3aW5nUmVjdC5oZWlnaHQoKSk7CisgICAgCisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZl
ciA9IHRydWU7CisgICAgYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEgPSBmYWxzZTsKKyAg
ICAKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQoR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZShhdHRyaWJ1dGVzLCBtX2RvY3VtZW50LT52aWV3KCktPnJvb3QoKS0+aG9zdFdp
bmRvdygpKSk7CisgICAgCisgICAgUmVmUHRyPERyYXdpbmdCdWZmZXI+IGRyYXdpbmdCdWZmZXIg
PSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgY29udGV4dFNpemUsICFhdHRy
aWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcik7CisgICAgZHJhd2luZ0J1ZmZlci0+cmVzZXQo
Y29udGV4dFNpemUpOworICAgIAorICAgIGNvbnRleHQtPnJlc2hhcGUoY29udGV4dFNpemUud2lk
dGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkpOworICAgIGNvbnRleHQtPnZpZXdwb3J0KDAsIDAs
IGNvbnRleHRTaXplLndpZHRoKCksIGNvbnRleHRTaXplLmhlaWdodCgpKTsKKyAgICAKKyAgICBj
b250ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDAsIDApOworICAgIGNvbnRleHQtPmNsZWFyKEdyYXBo
aWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0JVRkZFUl9CSVQpOworICAgIAorICAgIFJlZlB0cjxUZXh0dXJlPiBpbnB1dFRleHR1cmUgPSBU
ZXh0dXJlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgVGV4dHVyZTo6UkdCQTgsIGNvbnRleHRTaXpl
LndpZHRoKCksIGNvbnRleHRTaXplLmhlaWdodCgpKTsKKyAgICBpZiAoaW5wdXRUZXh0dXJlLT50
aWxlcygpLm51bVRpbGVzKCkgIT0gMSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFJlZlB0
cjxDdXN0b21GaWx0ZXJTaGFkZXI+IHNoYWRlciA9IEN1c3RvbUZpbHRlclNoYWRlcjo6Y3JlYXRl
KGNvbnRleHQuZ2V0KCksIG1fdmVydGV4U2hhZGVyLCBtX2ZyYWdtZW50U2hhZGVyKTsKKyAgICAK
KyAgICBjb250ZXh0LT51c2VQcm9ncmFtKHNoYWRlci0+cHJvZ3JhbSgpKTsKKyAgICAKKyAgICBp
ZiAoc2hhZGVyLT5zYW1wbGVyTG9jYXRpb24oKSAhPSAtMSkgeworICAgICAgICBjb250ZXh0LT5h
Y3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7CisgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm0xaShzaGFkZXItPnNhbXBsZXJMb2NhdGlvbigpLCAwKTsKKyAgICAgICAgaW5w
dXRUZXh0dXJlLT5sb2FkKHNyY1BpeGVsQXJyYXktPmRhdGEoKSk7CisgICAgICAgIGlucHV0VGV4
dHVyZS0+YmluZFRpbGUoMCk7CisgICAgfQorICAgIAorICAgIGlmIChzaGFkZXItPnByb2plY3Rp
b25NYXRyaXhMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHByb2plY3Rpb25NYXRyaXggPSBvcnRob01hdHJpeCgtMC41LCAwLjUsIC0wLjUsIDAuNSk7Cisg
ICAgICAgIGZsb2F0IGdsUHJvamVjdGlvbk1hdHJpeFsxNl07CisgICAgICAgIHRvR0xNYXRyaXgo
JmdsUHJvamVjdGlvbk1hdHJpeFswXSwgcHJvamVjdGlvbk1hdHJpeCk7CisgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm1NYXRyaXg0ZnYoc2hhZGVyLT5wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSwg
ZmFsc2UsICZnbFByb2plY3Rpb25NYXRyaXhbMF0sIDEpOworICAgIH0KKyAgICAKKyAgICBSZWZQ
dHI8Q3VzdG9tRmlsdGVyTWVzaD4gbWVzaCA9IEN1c3RvbUZpbHRlck1lc2g6OmNyZWF0ZShjb250
ZXh0LmdldCgpLCBtX21lc2hDb2x1bW5zLCBtX21lc2hSb3dzLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFJlY3QoMCwg
MCwgY29udGV4dFNpemUud2lkdGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWVz
aFR5cGUpOworICAgIAorICAgIGNvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkFSUkFZX0JVRkZFUiwgbWVzaC0+cXVhZFZlcnRpY2VzVmJvKCkpOworICAgIGNvbnRleHQtPmJp
bmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBtZXNoLT5x
dWFkRWxlbWVudHNWYm8oKSk7CisKKyAgICB1bnNpZ25lZCB2ZXJ0ZXhTaXplID0gKG1fbWVzaFR5
cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCA/IDggOiAxMSkgKiBzaXplb2Yo
ZmxvYXQpOworICAgIAorICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7CisgICAgaWYgKHNoYWRlci0+
cG9zaXRpb25BdHRyaWJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIGNvbnRleHQtPnZlcnRl
eEF0dHJpYlBvaW50ZXIoc2hhZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCksIDQsIEdyYXBo
aWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIHZlcnRleFNpemUsIG9mZnNldCk7CisgICAgICAg
IGNvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlci0+cG9zaXRpb25BdHRyaWJM
b2NhdGlvbigpKTsKKyAgICB9CisKKyAgICBvZmZzZXQgKz0gNCAqIHNpemVvZihmbG9hdCk7Cisg
ICAgaWYgKHNoYWRlci0+dGV4QXR0cmliTG9jYXRpb24oKSAhPSAtMSkgeworICAgICAgICBjb250
ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKHNoYWRlci0+dGV4QXR0cmliTG9jYXRpb24oKSwgMiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwgdmVydGV4U2l6ZSwgb2Zmc2V0KTsKKyAg
ICAgICAgY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVyLT50ZXhBdHRyaWJM
b2NhdGlvbigpKTsKKyAgICB9CisKKyAgICBvZmZzZXQgKz0gMiAqIHNpemVvZihmbG9hdCk7Cisg
ICAgaWYgKHNoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgY29u
dGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihzaGFkZXItPm1lc2hBdHRyaWJMb2NhdGlvbigpLCAy
LCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCB2ZXJ0ZXhTaXplLCBvZmZzZXQpOwor
ICAgICAgICBjb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShzaGFkZXItPm1lc2hBdHRy
aWJMb2NhdGlvbigpKTsKKyAgICB9CisgICAgCisgICAgaWYgKG1fbWVzaFR5cGUgPT0gQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjpERVRBQ0hFRCkgeworICAgICAgICBvZmZzZXQgKz0gMiAqIHNpemVv
ZihmbG9hdCk7CisgICAgICAgIGlmIChzaGFkZXItPnRyaWFuZ2xlQXR0cmliTG9jYXRpb24oKSAh
PSAtMSkgeworICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihzaGFkZXIt
PnRyaWFuZ2xlQXR0cmliTG9jYXRpb24oKSwgMywgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBm
YWxzZSwgdmVydGV4U2l6ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KHNoYWRlci0+dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBpbnQgdHJpYW5nbGVzQ291bnQgPSAobV9tZXNoUm93cyAr
IDEpICogKG1fbWVzaENvbHVtbnMgKyAxKSAqIDY7CisgICAgY29udGV4dC0+ZHJhd0VsZW1lbnRz
KEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRVMsIHRyaWFuZ2xlc0NvdW50LCBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfU0hPUlQsIDApOworICAgIAorICAgIGRyYXdpbmdCdWZmZXItPmNv
bW1pdCgpOworCisgICAgUmVmUHRyPEltYWdlRGF0YT4gaW1hZ2VEYXRhID0gY29udGV4dC0+cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoZHJhd2luZ0J1ZmZlci5nZXQoKSk7CisgICAg
Qnl0ZUFycmF5KiBncHVSZXN1bHQgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOworICAgIEFT
U0VSVChncHVSZXN1bHQtPmxlbmd0aCgpID09IGRzdFBpeGVsQXJyYXktPmxlbmd0aCgpKTsKKyAg
ICBtZW1jcHkoZHN0UGl4ZWxBcnJheS0+ZGF0YSgpLCBncHVSZXN1bHQtPmRhdGEoKSwgZ3B1UmVz
dWx0LT5sZW5ndGgoKSk7Cit9CisKK3ZvaWQgRkVDdXN0b21GaWx0ZXI6OmR1bXAoKQoreworfQor
CitUZXh0U3RyZWFtJiBGRUN1c3RvbUZpbHRlcjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKK3sKKyAgICB3cml0ZUluZGVudCh0cywgaW5k
ZW50KTsKKyAgICB0cyA8PCAiW2ZlQ3VzdG9tRmlsdGVyIjsKKyAgICBGaWx0ZXJFZmZlY3Q6OmV4
dGVybmFsUmVwcmVzZW50YXRpb24odHMpOworICAgIHRzIDw8ICJdXG4iOworICAgIGlucHV0RWZm
ZWN0KDApLT5leHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzLCBpbmRlbnQgKyAxKTsKKyAgICByZXR1
cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShD
U1NfU0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi45MGZlMjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisg
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGRUN1c3RvbUZpbHRlcl9oCisjZGVm
aW5lIEZFQ3VzdG9tRmlsdGVyX2gKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKKworI2luY2x1ZGUgIkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgor
I2luY2x1ZGUgIkZpbHRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhY2hl
ZFNoYWRlcjsKK2NsYXNzIERvY3VtZW50OworICAgIAorY2xhc3MgRkVDdXN0b21GaWx0ZXIgOiBw
dWJsaWMgRmlsdGVyRWZmZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRUN1
c3RvbUZpbHRlcj4gY3JlYXRlKEZpbHRlciosIERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB2ZXJ0
ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbWVzaFJvd3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBDdXN0b21GaWx0ZXJP
cGVyYXRpb246Ok1lc2hCb3hUeXBlLCAKKyAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJP
cGVyYXRpb246Ok1lc2hUeXBlKTsKKworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworCisgICAgdmlydHVhbCBUZXh0U3Ry
ZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBGRUN1c3RvbUZpbHRlcihGaWx0ZXIqLCBEb2N1bWVudCos
IGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVy
LAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29s
dW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSwgCisgICAgICAgICAgICAg
ICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSk7CisgICAgCisgICAgRG9jdW1l
bnQqIG1fZG9jdW1lbnQ7CisgICAgCisgICAgU3RyaW5nIG1fdmVydGV4U2hhZGVyOworICAgIFN0
cmluZyBtX2ZyYWdtZW50U2hhZGVyOworCisgICAgdW5zaWduZWQgbV9tZXNoUm93czsKKyAgICB1
bnNpZ25lZCBtX21lc2hDb2x1bW5zOworICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaEJv
eFR5cGUgbV9tZXNoQm94VHlwZTsKKyAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBl
IG1fbWVzaFR5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQ1NTX1NIQURFUlMpCisKKyNlbmRpZiAvLyBGRUN1c3RvbUZpbHRlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggM2Nm
ZDIzMC4uNWZmN2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9UZXh0dXJlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIEVOQUJMRShBQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpIHx8IEVOQUJMRShDU1NfU0hBREVSUykKIAogI2luY2x1ZGUgIlRleHR1
cmUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmM2MDYzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdE9ic2VydmVy
LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5c3RlbXMg
SW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IK
KyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEZpbHRlckVmZmVjdE9ic2VydmVyX2gKKyNkZWZpbmUgRmlsdGVyRWZmZWN0T2JzZXJ2ZXJfaAor
CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEZpbHRlckVmZmVjdE9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5GaWx0ZXJFZmZl
Y3RPYnNlcnZlcigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKSA9
IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCisKKyNlbmRpZiAvLyBGaWx0ZXJFZmZlY3RPYnNlcnZlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCA0ZTNi
MmIzLi5jMGMyMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVy
RWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJF
ZmZlY3RSZW5kZXJlci5jcHAKQEAgLTM5LDYgKzM5LDEzIEBACiAjaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMp
CisjaW5jbHVkZSAiQ2FjaGVkU2hhZGVyLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uLmgiCisjaW5jbHVkZSAiRkVDdXN0b21GaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZl
Y3RPYnNlcnZlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGlu
bGluZSB2b2lkIGVuZE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJzKQpAQCAtNTYs
OCArNjMsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbGFzdE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+
JiBwYXJhbWV0ZXJzKQogICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwogfQogCi1GaWx0ZXJFZmZl
Y3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQotICAgIDogbV9ncmFwaGljc0J1ZmZl
ckF0dGFjaGVkKGZhbHNlKQorRmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRl
cmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKiBvYnNlcnZlcikKKyAgICA6IG1fb2JzZXJ2ZXIob2Jz
ZXJ2ZXIpCisgICAgLCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQoZmFsc2UpCiB7CiAgICAgc2V0
RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUoMSwgMSkpOwogICAgIG1fc291cmNlR3JhcGhpYyA9
IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSh0aGlzKTsKQEAgLTcyLDggKzgwLDE0IEBAIEdyYXBoaWNz
Q29udGV4dCogRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCgpCiAgICAgcmV0dXJu
IHNvdXJjZUltYWdlKCktPmNvbnRleHQoKTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6YnVpbGQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3QgTGF5b3V0
UmVjdCYgYm9yZGVyQm94KQordm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBM
YXlvdXRSZWN0JiBib3JkZXJCb3gpCiB7CisjaWYgIUVOQUJMRShDU1NfU0hBREVSUykKKyAgICBV
TlVTRURfUEFSQU0oZG9jdW1lbnQpOworI2Vsc2UKKyAgICBDYWNoZWRTaGFkZXJMaXN0IGNhY2hl
ZFNoYWRlcnM7CisjZW5kaWYKKwogICAgIG1fZWZmZWN0cy5jbGVhcigpOwogCiAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0OwpAQCAtMjE0LDcgKzIyOCwzNiBAQCB2b2lkIEZpbHRlckVm
ZmVjdFJlbmRlcmVyOjpidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBj
b25zdCBMYXlvdQogICAgICAgICB9CiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOiB7Ci0gICAgICAgICAgICAvLyBOb3QgaW1wbGVt
ZW50ZWQgaW4gdGhlIHNvZnR3YXJlIHBhdGguCisgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVy
YXRpb24qIGN1c3RvbUZpbHRlck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEN1c3RvbUZpbHRlck9w
ZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRo
ZSBmaWx0ZXJzIGFyZSBhbHJlYWR5IGxvYWRlZC4gSWYgbm90IGp1c3Qgc2tpcCB0aGVtIGhlcmUu
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50
U2hhZGVyOworICAgICAgICAgICAgYm9vbCBzaGFkZXJzTG9hZGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGlmIChjdXN0b21GaWx0ZXJPcGVyYXRpb24tPnZlcnRleFNoYWRlcigpKSB7CisgICAgICAg
ICAgICAgICAgQ2FjaGVkU2hhZGVyKiBjYWNoZWRTaGFkZXIgPSBjdXN0b21GaWx0ZXJPcGVyYXRp
b24tPnZlcnRleFNoYWRlcigpLT5jYWNoZWRTaGFkZXIoKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlQoY2FjaGVkU2hhZGVyKTsKKyAgICAgICAgICAgICAgICBjYWNoZWRTaGFkZXJzLmFwcGVuZChj
YWNoZWRTaGFkZXIpOworICAgICAgICAgICAgICAgIGNhY2hlZFNoYWRlci0+YWRkQ2xpZW50KHRo
aXMpOworICAgICAgICAgICAgICAgIGlmIChjYWNoZWRTaGFkZXItPmlzTG9hZGVkKCkpCisgICAg
ICAgICAgICAgICAgICAgIHZlcnRleFNoYWRlciA9IGNhY2hlZFNoYWRlci0+c2hhZGVyU3RyaW5n
KCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzaGFkZXJzTG9h
ZGVkID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY3VzdG9tRmlsdGVy
T3BlcmF0aW9uLT5mcmFnbWVudFNoYWRlcigpKSB7CisgICAgICAgICAgICAgICAgQ2FjaGVkU2hh
ZGVyKiBjYWNoZWRTaGFkZXIgPSBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPmZyYWdtZW50U2hhZGVy
KCktPmNhY2hlZFNoYWRlcigpOworICAgICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRTaGFkZXIp
OworICAgICAgICAgICAgICAgIGNhY2hlZFNoYWRlcnMuYXBwZW5kKGNhY2hlZFNoYWRlcik7Cisg
ICAgICAgICAgICAgICAgY2FjaGVkU2hhZGVyLT5hZGRDbGllbnQodGhpcyk7CisgICAgICAgICAg
ICAgICAgaWYgKGNhY2hlZFNoYWRlci0+aXNMb2FkZWQoKSkKKyAgICAgICAgICAgICAgICAgICAg
ZnJhZ21lbnRTaGFkZXIgPSBjYWNoZWRTaGFkZXItPnNoYWRlclN0cmluZygpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc2hhZGVyc0xvYWRlZCA9IGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNoYWRlcnNMb2FkZWQpIHsKKyAgICAgICAg
ICAgICAgICBlZmZlY3QgPSBGRUN1c3RvbUZpbHRlcjo6Y3JlYXRlKHRoaXMsIGRvY3VtZW50LCB2
ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5tZXNoUm93cygpLCBj
dXN0b21GaWx0ZXJPcGVyYXRpb24tPm1lc2hDb2x1bW5zKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPm1lc2hC
b3hUeXBlKCksIGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+bWVzaFR5cGUoKSk7CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogI2VuZGlmCkBAIC0yMzYsNiArMjc5
LDE3IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIG9wZXJhdGlvbnMsIGNvbnN0IExheW91CiAKICAgICBtX2VmZmVjdHMuZmlyc3QoKS0+
aW5wdXRFZmZlY3RzKCkuYXBwZW5kKG1fc291cmNlR3JhcGhpYyk7CiAgICAgc2V0TWF4RWZmZWN0
UmVjdHMobV9zb3VyY2VEcmF3aW5nUmVnaW9uKTsKKyAgICAKKyNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCisgICAgZm9yIChDYWNoZWRTaGFkZXJMaXN0OjppdGVyYXRvciBpdGVyID0gbV9jYWNoZWRT
aGFkZXJzLmJlZ2luKCksIGVuZCA9IG1fY2FjaGVkU2hhZGVycy5lbmQoKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikKKyAgICAgICAgaXRlci0+Z2V0KCktPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBt
X2NhY2hlZFNoYWRlcnMuc3dhcChjYWNoZWRTaGFkZXJzKTsKKyNlbmRpZgorfQorCit2b2lkIEZp
bHRlckVmZmVjdFJlbmRlcmVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCit7Cisg
ICAgbV9vYnNlcnZlci0+ZmlsdGVyTmVlZHNSZXBhaW50KCk7CiB9CiAKIHZvaWQgRmlsdGVyRWZm
ZWN0UmVuZGVyZXI6OnByZXBhcmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuaAppbmRleCAwYmFmYWM4Li40YTczYTMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtMjgsNiArMjgs
OCBAQAogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
IkZpbHRlci5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZpbHRlck9w
ZXJhdGlvbnMuaCIKQEAgLTQ0LDEyICs0NiwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0
eXBlZGVmIFZlY3RvcjxSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IEZpbHRlckVmZmVjdExpc3Q7Citj
bGFzcyBEb2N1bWVudDsKK2NsYXNzIEZpbHRlckVmZmVjdE9ic2VydmVyOworY2xhc3MgQ2FjaGVk
U2hhZGVyOwogCi1jbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciA6IHB1YmxpYyBGaWx0ZXIgewor
Y2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVyZXIgOiBwdWJsaWMgRmlsdGVyLCBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiBjcmVhdGUoKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiBjcmVhdGUoRmlsdGVyRWZm
ZWN0T2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBG
aWx0ZXJFZmZlY3RSZW5kZXJlcihvYnNlcnZlcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCkBA
IC02NywxMCArNzMsMTIgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCogaW5wdXRDb250
ZXh0KCk7CiAgICAgSW1hZ2VCdWZmZXIqIG91dHB1dCgpIGNvbnN0IHsgcmV0dXJuIGxhc3RFZmZl
Y3QoKS0+YXNJbWFnZUJ1ZmZlcigpOyB9CiAKLSAgICB2b2lkIGJ1aWxkKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmLCBjb25zdCBMYXlvdXRSZWN0Jik7CisgICAgdm9pZCBidWlsZChEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAg
ICAgdm9pZCBwcmVwYXJlKCk7CiAgICAgdm9pZCBhcHBseSgpOwogICAgIAorICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworICAgIAogcHJpdmF0ZToKIAog
ICAgIHZvaWQgc2V0TWF4RWZmZWN0UmVjdHMoY29uc3QgRmxvYXRSZWN0JiBlZmZlY3RSZWN0KQpA
QCAtODcsNyArOTUsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAg
ICBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpOworICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKEZpbHRl
ckVmZmVjdE9ic2VydmVyKik7CiAgICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0UmVuZGVyZXIoKTsK
ICAgICAKICAgICBGbG9hdFJlY3QgbV9zb3VyY2VEcmF3aW5nUmVnaW9uOwpAQCAtOTUsNiArMTAz
LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgRmlsdGVyRWZmZWN0TGlzdCBtX2VmZmVjdHM7CiAg
ICAgUmVmUHRyPFNvdXJjZUdyYXBoaWM+IG1fc291cmNlR3JhcGhpYzsKKyAgICBGaWx0ZXJFZmZl
Y3RPYnNlcnZlciogbV9vYnNlcnZlcjsgLy8gTm8gbmVlZCBmb3IgYSBzdHJvbmcgcmVmZXJlbmNl
cyBoZXJlLiBJdCBvd25zIHVzLgorICAgIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICB0
eXBlZGVmIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTaGFkZXI+ID4gQ2FjaGVk
U2hhZGVyTGlzdDsKKyAgICBDYWNoZWRTaGFkZXJMaXN0IG1fY2FjaGVkU2hhZGVyczsKKyNlbmRp
ZgogICAgIAogICAgIGJvb2wgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDA0MmU5ZmQuLjM3ZWY2MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMjcwNCwyMyArMjcw
NCwxOSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKFJlbmRlckxheWVyKiByb290TGF5
ZXIsIEdyYXBoaWNzQ29udGV4dCogcCwKICAgICAgICAgTGF5b3V0UG9pbnQgbGF5ZXJPcmlnaW47
CiAgICAgICAgIGNvbnZlcnRUb0xheWVyQ29vcmRzKHJvb3RMYXllciwgbGF5ZXJPcmlnaW4pOwog
ICAgICAgICAKLSAgICAgICAgYm9vbCBpc1Jvb3RMYXllciA9IHBhaW50c1dpdGhUcmFuc2Zvcm0o
cGFpbnRCZWhhdmlvcikgJiYgIShwYWludEZsYWdzICYgUGFpbnRMYXllckFwcGxpZWRUcmFuc2Zv
cm0pOwotICAgICAgICBpZiAoIWlzUm9vdExheWVyKSB7Ci0gICAgICAgICAgICBzb3VyY2VHcmFw
aGljc0NvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBj
b250ZXh0U2F2ZXIoKnNvdXJjZUdyYXBoaWNzQ29udGV4dCk7CisgICAgICAgIAorICAgICAgICBi
b29sIGhhc1RyYW5zZm9ybSA9IHBhaW50c1dpdGhUcmFuc2Zvcm0ocGFpbnRCZWhhdmlvcikgJiYg
IShwYWludEZsYWdzICYgUGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0pOworICAgICAgICBpZiAo
IWhhc1RyYW5zZm9ybSkKICAgICAgICAgICAgIHNvdXJjZUdyYXBoaWNzQ29udGV4dC0+dHJhbnNs
YXRlKC1sYXllck9yaWdpbi54KCksIC1sYXllck9yaWdpbi55KCkpOwotICAgICAgICB9CiAKICAg
ICAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUo
KSk7CiAgICAgICAgIHNvdXJjZUdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHBhaW50UmVjdCk7
CiAKICAgICAgICAgLy8gTm93IGRvIHRoZSByZWd1bGFyIHBhaW50IGludG8gdGhlIFNvdXJjZUdy
YXBoaWMuCi0gICAgICAgIC8vIFVzaW5nIFBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtIHRvIGF2
b2lkIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm0gYWdhaW4gaW5zaWRlIHRoZSBjb250ZXh0LgotICAg
ICAgICBwYWludExheWVyKGlzUm9vdExheWVyID8gdGhpcyA6IHJvb3RMYXllciwgc291cmNlR3Jh
cGhpY3NDb250ZXh0LCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290
LCByZWdpb24sIG92ZXJsYXBUZXN0UmVxdWVzdHMsIAorICAgICAgICBwYWludExheWVyKGhhc1Ry
YW5zZm9ybSA/IHRoaXMgOiByb290TGF5ZXIsIHNvdXJjZUdyYXBoaWNzQ29udGV4dCwgcGFpbnRE
aXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgcmVnaW9uLCBvdmVybGFwVGVz
dFJlcXVlc3RzLCAKICAgICAgICAgICAgICAgICAgICBwYWludEZsYWdzIHwgUGFpbnRMYXllclBh
aW50aW5nRmlsdGVyIHwgUGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0pOwogICAgICAgICAKLSAg
ICAgICAgaWYgKCFpc1Jvb3RMYXllcikKLSAgICAgICAgICAgIHNvdXJjZUdyYXBoaWNzQ29udGV4
dC0+cmVzdG9yZSgpOwotICAgICAgICAKICAgICAgICAgbV9maWx0ZXItPmFwcGx5KCk7CiAgICAg
ICAgIAogICAgICAgICAvLyBHZXQgdGhlIGZpbHRlcmVkIG91dHB1dCBhbmQgZHJhdyBpdCBpbiBw
bGFjZS4KQEAgLTQ0MDAsOSArNDM5Niw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU9yUmVt
b3ZlRmlsdGVyRWZmZWN0KCkKIHsKICAgICBpZiAoaGFzRmlsdGVyKCkpIHsKICAgICAgICAgaWYg
KCFtX2ZpbHRlcikKLSAgICAgICAgICAgIG1fZmlsdGVyID0gRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9maWx0ZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
Y3JlYXRlKHRoaXMpOwogCi0gICAgICAgIG1fZmlsdGVyLT5idWlsZChyZW5kZXJlcigpLT5zdHls
ZSgpLT5maWx0ZXIoKSwgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKSk7
CisgICAgICAgIG1fZmlsdGVyLT5idWlsZChyZW5kZXJlcigpLT5kb2N1bWVudCgpLCByZW5kZXJl
cigpLT5zdHlsZSgpLT5maWx0ZXIoKSwgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSktPmJvcmRlckJv
eFJlY3QoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9maWx0ZXIgPSAwOwogICAgIH0KQEAg
LTQ0MTksNiArNDQxNSwxMSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVGaWx0ZXJCYWNraW5n
U3RvcmUoKQogICAgIH0KIH0KIAordm9pZCBSZW5kZXJMYXllcjo6ZmlsdGVyTmVlZHNSZXBhaW50
KCkKK3sKKyAgICByZW5kZXJlcigpLT5ub2RlKCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhl
dGljU3R5bGVDaGFuZ2UpOworICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKK30KICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCmluZGV4IDMxMWVlYTUuLjY0ZTNkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCkBAIC00NCw2ICs0NCw5IEBACiAjaWZuZGVmIFJlbmRlckxheWVyX2gKICNkZWZp
bmUgUmVuZGVyTGF5ZXJfaAogCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorI2luY2x1ZGUgIkZp
bHRlckVmZmVjdE9ic2VydmVyLmgiCisjZW5kaWYKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNp
bmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJTY3JvbGxCZWhhdmlvci5oIgpAQCAtMjAy
LDcgKzIwNSwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9maXhlZCA6IDE7CiB9OwogCi1jbGFz
cyBSZW5kZXJMYXllciA6IHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CitjbGFzcyBSZW5kZXJMYXll
ciA6IHB1YmxpYyBTY3JvbGxhYmxlQXJlYQorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICAs
IHB1YmxpYyBGaWx0ZXJFZmZlY3RPYnNlcnZlcgorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgZnJp
ZW5kIGNsYXNzIFJlbmRlclJlcGxpY2E7CiAKQEAgLTUxMCw2ICs1MTcsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgYm9vbCBoYXNGaWx0ZXIoKSBjb25zdCB7IHJl
dHVybiByZW5kZXJlcigpLT5oYXNGaWx0ZXIoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBmaWx0ZXJO
ZWVkc1JlcGFpbnQoKTsKICNlbmRpZgogCiAgICAgLy8gT3ZlcmxvYWRlZCBuZXcgb3BlcmF0b3Iu
IERlcml2ZWQgY2xhc3NlcyBtdXN0IG92ZXJyaWRlIG9wZXJhdG9yIG5ldwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaAppbmRleCA4OGJm
YzgxLi4yNjkyMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDYWNoZWRTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDYWNoZWRTaGFkZXIuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0OwogICAgIAorICAg
IHZpcnR1YWwgQ2FjaGVkU2hhZGVyKiBjYWNoZWRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX3No
YWRlci5nZXQoKTsgfQorICAgIAogcHJpdmF0ZToKICAgICBTdHlsZUNhY2hlZFNoYWRlcihDYWNo
ZWRTaGFkZXIqKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVNoYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
U2hhZGVyLmgKaW5kZXggOWIzNjY3Ny4uZmY1ZDJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlU2hhZGVyLmgKQEAgLTM2LDggKzM2LDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRTaGFkZXI7CiBjbGFzcyBDU1NWYWx1ZTsKLSAgICAK
KwogY2xhc3MgU3R5bGVTaGFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVNoYWRlcj4gewog
cHVibGljOgogICAgIHZpcnR1YWwgflN0eWxlU2hhZGVyKCkgeyB9CkBAIC00Nyw2ICs0OCw4IEBA
IHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVl
KCkgY29uc3QgPSAwOwogICAgIAorICAgIHZpcnR1YWwgQ2FjaGVkU2hhZGVyKiBjYWNoZWRTaGFk
ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAgU3R5bGVTaGFk
ZXIoKQogICAgICAgICA6IG1faXNDYWNoZWRTaGFkZXIoZmFsc2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119321</attachid>
            <date>2011-12-14 16:27:01 -0800</date>
            <delta_ts>2011-12-15 10:10:02 -0800</delta_ts>
            <desc>Patch that generates results</desc>
            <filename>bug73317_1.patch</filename>
            <type>text/plain</type>
            <size>67483</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtY3VzdG9tLmh0bWwg
Yi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZjQ0MzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sCkBAIC0wLDAgKzEsOCBAQAor
PHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxpbWcgc3R5
bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCdyZXNvdXJjZXMvdmVydGV4LnNoYWRlcicp
IHVybCgncmVzb3VyY2VzL2ZyYWdtZW50LnNoYWRlcicpKSIgc3JjPSJyZXNvdXJjZXMvcmVmZXJl
bmNlLnBuZyI+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgncmVzb3Vy
Y2VzL3ZlcnRleC5zaGFkZXInKSwgNSAxMCkiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmci
PgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJ3Jlc291cmNlcy92ZXJ0
ZXhfZGV0YWNoZWQuc2hhZGVyJykgdXJsKCdyZXNvdXJjZXMvZnJhZ21lbnQuc2hhZGVyJyksIDIg
MiBkZXRhY2hlZCkiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHlsZT0i
LXdlYmtpdC1maWx0ZXI6IGN1c3RvbShub25lIHVybCgncmVzb3VyY2VzL2ZyYWdtZW50LnNoYWRl
cicpKSIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2ZyYWdtZW50LnNoYWRlciBiL0xheW91dFRlc3Rz
L2NzczMvZmlsdGVycy9yZXNvdXJjZXMvZnJhZ21lbnQuc2hhZGVyCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjFiZDA3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2ZyYWdtZW50LnNoYWRlcgpAQCAtMCwwICsxLDcgQEAK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7Cit1bmlm
b3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xv
ciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZfdGV4Q29vcmQpICsgMC4zOworfQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9y
ZXNvdXJjZXMvdmVydGV4LnNoYWRlciBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJj
ZXMvdmVydGV4LnNoYWRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGQ4
YzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNl
cy92ZXJ0ZXguc2hhZGVyCkBAIC0wLDAgKzEsMTMgQEAKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworCithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworYXR0cmlidXRlIHZlYzIgYV90ZXhDb29y
ZDsKKwordW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbk1hdHJpeDsKK3ZhcnlpbmcgdmVjMiB2X3Rl
eENvb3JkOworCit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9u
TWF0cml4ICogKGFfcG9zaXRpb24gKyB2ZWM0KDAuMSwgMC4wLCAwLjAsIDAuMCkpOworICAgIHZf
dGV4Q29vcmQgPSBhX3RleENvb3JkOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9m
aWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXhfZGV0YWNoZWQuc2hhZGVyIGIvTGF5b3V0VGVzdHMvY3Nz
My9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXhfZGV0YWNoZWQuc2hhZGVyCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NjhhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3ZlcnRleF9kZXRhY2hlZC5zaGFkZXIKQEAgLTAs
MCArMSwxNCBAQAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK2F0dHJpYnV0ZSB2ZWM0IGFf
cG9zaXRpb247CithdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworYXR0cmlidXRlIHZlYzMgYV90
cmlhbmdsZUNvb3JkOworCit1bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uTWF0cml4OwordmFyeWlu
ZyB2ZWMyIHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB1
X3Byb2plY3Rpb25NYXRyaXggKiAoYV9wb3NpdGlvbiArIHZlYzQoYV90cmlhbmdsZUNvb3JkLngg
LyA0LjAsIGFfdHJpYW5nbGVDb29yZC55IC8gNC4wLCAwLjAsIDAuMCkpOworICAgIHZfdGV4Q29v
cmQgPSBhX3RleENvb3JkOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2sy
L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCBiNjc2YzBm
Li5mNGJjZGI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMTg5LDYgKzE4OSw3IEBA
IGNvbXBvc2l0aW5nL3ZpZGVvLXBhZ2UtdmlzaWJpbGl0eS5odG1sCiAKICMgV2ViS2l0MiBuZWVk
cyBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UKICMgPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjE5Nz4KK2NzczMvZmlsdGVycy9jdXN0b20t
ZmlsdGVyLmh0bWwKIGZhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2ht
ZW50Lmh0bWwKIGZhc3QvY2FudmFzL3dlYmdsL2dsLXZlcnRleC1hdHRyaWItemVyby1pc3N1ZXMu
aHRtbAogZmFzdC9ldmVudHMvcGFnZWhpZGUtdGltZW91dC5odG1sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IGQ2ODRhZGEuLmI5MmUxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTA5LDEy
ICsxMTA5LDE1IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9U
ZXh0UnVuLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCiAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9uZW50VHJhbnNmZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
c2l0ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXgu
Y3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCAzODRmYWJhLi43YWQ2ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTI1MzcsNiArMjUzNywxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25NYXRyaXhD
YWlyby5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyTWVzaC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRT
b3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJs
ZW5kLmNwcCBcCkBAIC0yNTQ5LDYgKzI1NTMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZv
bHZlTWF0cml4LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDdXN0b21GaWx0ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCmluZGV4IDE0ZWRlODMuLmI5MjliOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjA3NiwxMSAr
MjA3NiwxNCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJTaGFkZXIuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5o
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaCBcCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURyb3BTaGFkb3cuaCBcCkBAIC0zMjM0LDEyICszMjM3LDE1IEBAIGNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9YU0xUPTEpIHsKIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0ZJTFRFUlM9
MSkgewogICAgIFNPVVJDRVMgKz0gXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck1lc2guY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJTaGFkZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb2xvck1hdHJpeC5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvc2l0ZS5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29udm9sdmVNYXRyaXguY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUN1c3RvbUZpbHRlci5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlmZnVzZUxpZ2h0aW5nLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaXNwbGFjZW1lbnRNYXAuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURyb3BTaGFkb3cuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0OGEwNzBkLi45OGI2YThk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjUyLDYgKzM2NTIsMTAgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VFZmwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9lZmwvSW50UG9pbnRFZmwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9lZmwvSW50UmVjdEVmbC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oJywKKyAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHAnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRT
b3VyY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5k
LmNwcCcsCkBAIC0zNjY0LDYgKzM2NjgsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmgnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggZWEyMTBkMy4uM2ZmMWU4OSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTI5NjE2LDYgKzI5NjE2LDIyIEBACiAJCQkJCU5hbWU9ImZpbHRl
cnMiCiAJCQkJCT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJNZXNoLmNwcCIKKwkJCQkJCT4KKwkJCQkJPC9G
aWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xmaWx0ZXJzXEN1c3RvbUZpbHRlck1lc2guaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorICAg
ICAgICAgICAgICAgICAgICA8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlclNoYWRlci5jcHAiCisJCQkJCQk+CisJCQkJCTwv
RmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJTaGFkZXIuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgor
CQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0
ZXJzXERpc3RhbnRMaWdodFNvdXJjZS5jcHAiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KQEAgLTI5
NjcyLDYgKzI5Njg4LDE0IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xGRUN1c3RvbUZp
bHRlci5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xGRUN1c3RvbUZpbHRlci5oIgor
CQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcRkVEaWZmdXNlTGlnaHRpbmcuY3BwIgogCQkJCQkJ
PgogCQkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggM2VkNTQ3Yi4uZWYxOThhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM4Myw2ICsxMzgz
LDEzIEBACiAJCTUwMzhCRjJCMTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDM4QkYyNzE0
NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUwOENDQTRGMTNDRjEwNkIwMDMxNTFGMyAv
KiBSZW5kZXJGbG93VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5o
ICovOyB9OwogCQk1MDhDQ0E1MDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDhDQ0E0
RTEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgKi87IH07CisJCTUwRDQw
M0M3MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDNDNTE0NzY4Qzk0MDBEMzBCQjUg
LyogRkVDdXN0b21GaWx0ZXIuY3BwICovOyB9OworCQk1MEQ0MDNDODE0NzY4Qzk0MDBEMzBCQjUg
LyogRkVDdXN0b21GaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUwRDQwM0M2MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5oICov
OyB9OworCQk1MEQ0MDVGOTE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDVGNzE0
N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5jcHAgKi87IH07CisJCTUwRDQwNUZB
MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDVGODE0N0QzMUYzMDBEMzBCQjUgLyog
Q3VzdG9tRmlsdGVyTWVzaC5oICovOyB9OworCQk1MEQ0MDYxMTE0N0Q0OURFMDBEMzBCQjUgLyog
Q3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUwRDQwNjBGMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFk
ZXIuY3BwICovOyB9OworCQk1MEQ0MDYxMjE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVy
U2hhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MEQ0MDYxMDE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggKi87IH07CisJ
CTUwRDQwNjdEMTQ3RTQwRDgwMEQzMEJCNSAvKiBGaWx0ZXJFZmZlY3RPYnNlcnZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2N0MxNDdFNDBE
ODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTBFNTY2RDYxMzlFMzhDNTAwMjE0NDMzIC8q
IENTU1dyYXBTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTAxQkFBQjExMzk1MTE0QjAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuY3BwICov
OyB9OwogCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAyQTAw
NEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2
ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi87IH07CkBAIC04NjEwLDYgKzg2
MTcsMTMgQEAKIAkJNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxvd1RocmVhZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMgLyog
UmVuZGVyRmxvd1RocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJGbG93VGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTBC
NDIxNTcxNDY5NzY5NjAwODdFNjA0IC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU1NoYWRlclZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwRDQwM0M1MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3Rv
bUZpbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGRUN1c3Rv
bUZpbHRlci5jcHA7IHBhdGggPSBmaWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDAzQzYxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9t
RmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZFQ3VzdG9tRmlsdGVy
Lmg7IHBhdGggPSBmaWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUwRDQwNUY3MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2gu
Y3BwOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTBENDA1RjgxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1l
c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyTWVzaC5o
OyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUwRDQwNjBGMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3VzdG9tRmlsdGVyU2hh
ZGVyLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDA2MTAxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZp
bHRlclNoYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0
ZXJTaGFkZXIuaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwRDQwNjdDMTQ3RTQwRDgwMEQzMEJCNSAvKiBGaWx0ZXJF
ZmZlY3RPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJF
ZmZlY3RPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2NzBC
MDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRQYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4
NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUVy
cm9yQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzY4Miw2ICsxNzY5
NiwxMiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxOTg0MUJG
QTEzNjgzNkExMDA2RUJCQjkgLyogYXJtICovLAorCQkJCTUwRDQwNjBGMTQ3RDQ5REUwMEQzMEJC
NSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwICovLAorCQkJCTUwRDQwNjEwMTQ3RDQ5REUwMEQz
MEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAqLywKKwkJCQk1MEQ0MDVGNzE0N0QzMUYzMDBE
MzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5jcHAgKi8sCisJCQkJNTBENDA1RjgxNDdEMzFGMzAw
RDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guaCAqLywKKwkJCQk1MEQ0MDNDNTE0NzY4Qzk0MDBE
MzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuY3BwICovLAorCQkJCTUwRDQwM0M2MTQ3NjhDOTQwMEQz
MEJCNSAvKiBGRUN1c3RvbUZpbHRlci5oICovLAogCQkJCUExRTExNTQzMTMwMTVDM0QwMDU0QUM4
QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwICovLAogCQkJCTg0NzMwRDVBMTI0OEYwQjMwMEQz
QTlDOSAvKiBEaXN0YW50TGlnaHRTb3VyY2UuaCAqLywKIAkJCQlBNzVFOEI4MDBFMURFMkQ2MDA3
RjI0ODEgLyogRkVCbGVuZC5jcHAgKi8sCkBAIC0yMDg5Niw2ICsyMDkxNiw3IEBACiAJCUY1MjNE
MkYzMDJERTQ0M0IwMTg2MzVDQSAvKiByZW5kZXJpbmcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUwRDQwNjdDMTQ3RTQwRDgwMEQzMEJCNSAvKiBGaWx0
ZXJFZmZlY3RPYnNlcnZlci5oICovLAogCQkJCTQzOTA0NkMyMTJEQTI1Q0UwMEFGODBBMiAvKiBt
YXRobWwgKi8sCiAJCQkJQkM4QzhGQUEwRERDRDJGMjAwQjU5MkY0IC8qIHN0eWxlICovLAogCQkJ
CTA4OEMyRjc0MTIzOTAwODAwMDNENjVDRSAvKiBzdmcgKi8sCkBAIC0yNDgxNCw2ICsyNDgzNSwx
MCBAQAogCQkJCUExMERDNzZCMTQ3NDdCQUIwMDVFMjQ3MSAvKiBTdHlsZUdyaWREYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTJDMEM0MTE0NkRDNkNDMDAxNkM5MTEgLyogTm90aWZpY2F0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTI4Q0E2QjE0NzMzMTYzMDA3NEM3MkEgLyogTm90aWZp
Y2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTBENDAzQzgxNDc2OEM5NDAw
RDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEQ0MDVGQTE0
N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTBENDA2MTIxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTBENDA2N0QxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUE1MURENjE0ODUwNkE5MDBBRDI3NTIgLyogSW5z
cGVjdG9yTWVtb3J5QWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUwMzhCRjI4MTQ3NTBGMTkw
MDk1RTBEMSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUw
MzhCRjI5MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtMjc3MDAsNiArMjc3MjUsOSBAQAogCQkJCTdBQTUxQjZGMTQ4M0I2MTYwMEFEMjc1MiAv
KiBJbnNwZWN0b3JCYXNlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwREM3NkExNDc0
N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEy
OENBNjgxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTBENDAzQzcxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUwRDQwNUY5MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0
b21GaWx0ZXJNZXNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUwRDQwNjExMTQ3RDQ5REUwMEQz
MEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBNTFE
RDUxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUwMzhCRjJBMTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTZFM0ZBRDM4MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAppbmRleCAxZDhmNTQwLi4xM2JkYTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcApAQCAtMzIsMTEg
KzMyLDE0IEBACiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogCiAjaW5jbHVkZSAiQ2FjaGVkU2hh
ZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVGV4dFJlc291cmNl
RGVjb2Rlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZFNoYWRlcjo6Q2FjaGVk
U2hhZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogICAgIDogQ2Fj
aGVkUmVzb3VyY2UocmVzb3VyY2VSZXF1ZXN0LCBTaGFkZXJSZXNvdXJjZSkKKyAgICAsIG1fZGVj
b2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3NoYWRlciIpKQog
ewogfQogCkBAIC00NCw2ICs0NywyNCBAQCBDYWNoZWRTaGFkZXI6On5DYWNoZWRTaGFkZXIoKQog
ewogfQogCitjb25zdCBTdHJpbmcmIENhY2hlZFNoYWRlcjo6c2hhZGVyU3RyaW5nKCkKK3sKKyAg
ICBpZiAoIW1fc2hhZGVyU3RyaW5nICYmIG1fZGF0YSkgeworICAgICAgICBtX3NoYWRlclN0cmlu
ZyA9IG1fZGVjb2Rlci0+ZGVjb2RlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7Cisg
ICAgICAgIG1fc2hhZGVyU3RyaW5nICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gbV9zaGFkZXJTdHJpbmc7Cit9CisKK3ZvaWQgQ2FjaGVkU2hhZGVyOjpkYXRhKFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAg
ICBpZiAoYWxsRGF0YVJlY2VpdmVkKQorICAgICAgICBtX2RhdGEgPSBkYXRhOworCisgICAgQ2Fj
aGVkUmVzb3VyY2U6OmRhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCmluZGV4IDhkZWFkMDEuLmNjMzhmNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgKQEAgLTM2LDEw
ICszNiwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFRleHRSZXNvdXJjZURl
Y29kZXI7CisKIGNsYXNzIENhY2hlZFNoYWRlciA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CiBw
dWJsaWM6CiAgICAgQ2FjaGVkU2hhZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZp
cnR1YWwgfkNhY2hlZFNoYWRlcigpOworICAgIAorICAgIGNvbnN0IFN0cmluZyYgc2hhZGVyU3Ry
aW5nKCk7CisgICAgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOworICAgIAorcHJpdmF0ZToKKyAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gbV9kZWNvZGVyOworICAgIFN0cmluZyBtX3NoYWRlclN0cmluZzsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyTWVzaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck1lc2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmM3M2VhYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCkBAIC0wLDAgKzEsMTgzIEBACisvKgor
ICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisg
KiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICog
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YK
KyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVy
TWVzaC5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKworI2RlZmluZSBERUJV
R19DVVNUT01fRklMVEVSX01FU0ggMAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2
b2lkIGFkZFBvaW50KGludCBpLCBpbnQgaiwgVmVjdG9yPGZsb2F0PiYgdmVydGljZXMsIFZlY3Rv
cjx1aW50MTZfdD4mIGluZGljZXMsIGZsb2F0IGhTaXplLCBmbG9hdCB2U2l6ZSwgZmxvYXQgbWhT
aXplLCBmbG9hdCBtdlNpemUsIGZsb2F0IG1lc2hCb3hYLCBmbG9hdCBtZXNoQm94WSwgaW50IGRp
LCBpbnQgZGosIGludCB0cmlhbmdsZSkKK3sKKyAgICBkaSArPSBpOworICAgIGRqICs9IGo7Cisg
ICAgdmVydGljZXMuYXBwZW5kKGhTaXplICogZGkgLSAwLjVmICsgbWVzaEJveFgpOworICAgIHZl
cnRpY2VzLmFwcGVuZCh2U2l6ZSAqIGRqIC0gMC41ZiArIG1lc2hCb3hZKTsKKyAgICB2ZXJ0aWNl
cy5hcHBlbmQoMC4wZik7CisgICAgdmVydGljZXMuYXBwZW5kKDEuMGYpOworICAgIHZlcnRpY2Vz
LmFwcGVuZChoU2l6ZSAqIGRpICsgbWVzaEJveFgpOworICAgIHZlcnRpY2VzLmFwcGVuZCh2U2l6
ZSAqIGRqICsgbWVzaEJveFkpOworICAgIHZlcnRpY2VzLmFwcGVuZChtaFNpemUgKiBkaSk7Cisg
ICAgdmVydGljZXMuYXBwZW5kKG12U2l6ZSAqIGRqKTsKKyAgICB2ZXJ0aWNlcy5hcHBlbmQoaSk7
CisgICAgdmVydGljZXMuYXBwZW5kKGopOworICAgIHZlcnRpY2VzLmFwcGVuZCh0cmlhbmdsZSk7
CisgICAgaW5kaWNlcy5hcHBlbmQoaW5kaWNlcy5zaXplKCkpOworfQorCitDdXN0b21GaWx0ZXJN
ZXNoOjpDdXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25l
ZCBjb2xzLCB1bnNpZ25lZCByb3dzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hU
eXBlIG1lc2hUeXBlKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3ZlcnRpY2Vz
QnVmZmVyKDApCisgICAgLCBtX2VsZW1lbnRzQnVmZmVyKDApCisgICAgLCBtX21lc2hCb3gobWVz
aEJveCkKKyAgICAsIG1fbWVzaFR5cGUobWVzaFR5cGUpCit7CisgICAgdW5zaWduZWQgZmxvYXRz
UGVyVmVydGV4OworICAgIAorICAgIFZlY3RvcjxmbG9hdD4gdmVydGljZXM7CisgICAgVmVjdG9y
PHVpbnQxNl90PiBpbmRpY2VzOworCisgICAgdW5zaWduZWQgaFBvaW50cyA9IGNvbHMgKyAyOwor
ICAgIHVuc2lnbmVkIHZQb2ludHMgPSByb3dzICsgMjsKKworICAgIHVuc2lnbmVkIGhTcGFjZXMg
PSBjb2xzICsgMTsKKyAgICB1bnNpZ25lZCB2U3BhY2VzID0gcm93cyArIDE7CisgICAgICAgIAor
ICAgIGZsb2F0IGhTaXplID0gbWVzaEJveC53aWR0aCgpIC8gaFNwYWNlczsKKyAgICBmbG9hdCB2
U2l6ZSA9IG1lc2hCb3guaGVpZ2h0KCkgLyB2U3BhY2VzOworCisgICAgZmxvYXQgbWhTaXplID0g
MS4wIC8gaFNwYWNlczsKKyAgICBmbG9hdCBtdlNpemUgPSAxLjAgLyB2U3BhY2VzOworICAgIAor
ICAgIGZsb2F0IG1lc2hCb3hYID0gbWVzaEJveC54KCk7CisgICAgZmxvYXQgbWVzaEJveFkgPSBt
ZXNoQm94LnkoKTsKKyAgICAKKyAgICBtX2luZGljZXNDb3VudCA9IGhTcGFjZXMgKiB2U3BhY2Vz
ICogMiAqIDM7IC8vIDIgdHJpYW5nbGVzIHBlciBxdWFkLCAzIGluZGljZXMgcGVyIHRyaWFuZ2xl
CisgICAgaW5kaWNlcy5yZXNlcnZlQ2FwYWNpdHkobV9pbmRpY2VzQ291bnQpOyAKKyAgICAKKyAg
ICBpZiAobWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCkgeworICAg
ICAgICBmbG9hdHNQZXJWZXJ0ZXggPSA4OworICAgICAgICAvLyBUcmlhbmdsZXMgc2hhcmUgdGhl
aXIgcG9pbnRzLgorICAgICAgICB2ZXJ0aWNlcy5yZXNlcnZlQ2FwYWNpdHkoaFBvaW50cyAqIHZQ
b2ludHMgKiBmbG9hdHNQZXJWZXJ0ZXgpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IHZQb2ludHM7ICsraikgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGhQb2ludHM7ICsraSkgeworICAgICAgICAgICAgICAgIHZlcnRpY2VzLmFwcGVu
ZChoU2l6ZSAqIGkgLSAwLjVmICsgbWVzaEJveFgpOworICAgICAgICAgICAgICAgIHZlcnRpY2Vz
LmFwcGVuZCh2U2l6ZSAqIGogLSAwLjVmICsgbWVzaEJveFkpOworICAgICAgICAgICAgICAgIHZl
cnRpY2VzLmFwcGVuZCgwLjBmKTsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNlcy5hcHBlbmQoMS4w
Zik7CisgICAgICAgICAgICAgICAgdmVydGljZXMuYXBwZW5kKGhTaXplICogaSArIG1lc2hCb3hY
KTsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNlcy5hcHBlbmQodlNpemUgKiBqICsgbWVzaEJveFkp
OworICAgICAgICAgICAgICAgIHZlcnRpY2VzLmFwcGVuZChtaFNpemUgKiBpKTsKKyAgICAgICAg
ICAgICAgICB2ZXJ0aWNlcy5hcHBlbmQobXZTaXplICogaik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgICNkZWZpbmUgQUREX1BPSU5UKHgsIHkpIFwKKyAgICAg
ICAgICAgIGluZGljZXMuYXBwZW5kKChqICsgeSkgKiBoUG9pbnRzICsgKGkgKyB4KSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHZTcGFjZXM7ICsraikg
eworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhTcGFjZXM7ICsraSkgewor
ICAgICAgICAgICAgICAgIEFERF9QT0lOVCgwLCAwKTsKKyAgICAgICAgICAgICAgICBBRERfUE9J
TlQoMSwgMCk7CisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDEsIDEpOworCisgICAgICAgICAg
ICAgICAgQUREX1BPSU5UKDAsIDApOworICAgICAgICAgICAgICAgIEFERF9QT0lOVCgxLCAxKTsK
KyAgICAgICAgICAgICAgICBBRERfUE9JTlQoMCwgMSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgICN1bmRlZiBBRERfUE9JTlQKKyAgICB9IGVsc2UgeworICAg
ICAgICBmbG9hdHNQZXJWZXJ0ZXggPSAxMTsKKyAgICAgICAgLy8gVHJpYW5nbGVzIGRvIG5vdCBz
aGFyZSBhbnkgb2YgdGhlIHZlcnRleGVzLCBzbyB3ZSBuZWVkIGEgdmVydGV4IHBlciBpbmRleC4K
KyAgICAgICAgdmVydGljZXMucmVzZXJ2ZUNhcGFjaXR5KG1faW5kaWNlc0NvdW50ICogZmxvYXRz
UGVyVmVydGV4KTsKKworICAgICAgICAjZGVmaW5lIEFERF9QT0lOVCh4LCB5LCB0cmlhbmdsZSkg
XAorICAgICAgICAgICAgYWRkUG9pbnQoaSwgaiwgdmVydGljZXMsIGluZGljZXMsIGhTaXplLCB2
U2l6ZSwgbWhTaXplLCBtdlNpemUsIG1lc2hCb3hYLCBtZXNoQm94WSwgeCwgeSwgdHJpYW5nbGUp
CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHZTcGFjZXM7ICsraikgeworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhTcGFjZXM7ICsraSkgeworICAgICAg
ICAgICAgICAgIEFERF9QT0lOVCgwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBBRERfUE9JTlQo
MSwgMCwgMSk7CisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDEsIDEsIDIpOworCisgICAgICAg
ICAgICAgICAgQUREX1BPSU5UKDAsIDAsIDMpOworICAgICAgICAgICAgICAgIEFERF9QT0lOVCgx
LCAxLCA0KTsKKyAgICAgICAgICAgICAgICBBRERfUE9JTlQoMCwgMSwgNSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICN1bmRlZiBBRERfUE9JTlQKKyAgICB9
CisgICAgCisgICAgbV9ieXRlc1BlclZlcnRleCA9IGZsb2F0c1BlclZlcnRleCAqIHNpemVvZihm
bG9hdCk7CisgICAgCisjaWYgREVCVUdfQ1VTVE9NX0ZJTFRFUl9NRVNICisgICAgcHJpbnRmKCJN
ZXNoVkJPOiBSb3dzOiAlZCwgQ29sczogJWQgYm94OiAlZiwgJWYsICVmLCAlZiwgdHlwZTogJXNc
biIsIAorICAgICAgICAgICAgY29scywgcm93cywgbWVzaEJveC54KCksIG1lc2hCb3gueSgpLCBt
ZXNoQm94LndpZHRoKCksIG1lc2hCb3guaGVpZ2h0KCksIChtZXNoVHlwZSA9PSBDdXN0b21GaWx0
ZXJPcGVyYXRpb246OkFUVEFDSEVEKSA/ICJBdHRhY2hlZCIgOiAiRGV0YWNoZWQiKTsKKyAgICBw
cmludGYoIi0tLVZlcnRleDpcblx0Iik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZl
cnRpY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHByaW50ZigiJWYgIiwgdmVydGljZXMuYXQo
aSkpOworICAgICAgICBpZiAoISgoaSArIDEpICUgZmxvYXRzUGVyVmVydGV4KSkKKyAgICAgICAg
ICAgIHByaW50ZigiXG5cdCIpOworICAgIH0KKyAgICBwcmludGYoIlxuLS0tSW5kaWNlczogIik7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluZGljZXMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIHByaW50ZigiJWQgIiwgaW5kaWNlcy5hdChpKSk7CisgICAgcHJpbnRmKCJcbiIpOworI2Vu
ZGlmCisKKyAgICBtX3ZlcnRpY2VzQnVmZmVyID0gbV9jb250ZXh0LT5jcmVhdGVCdWZmZXIoKTsK
KyAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZF
UiwgbV92ZXJ0aWNlc0J1ZmZlcik7CisgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNz
Q29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIHZlcnRpY2VzLnNpemUoKSAqIHNpemVvZihmbG9hdCks
IHZlcnRpY2VzLmRhdGEoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKTsKKyAgICAK
KyAgICBtX2VsZW1lbnRzQnVmZmVyID0gbV9jb250ZXh0LT5jcmVhdGVCdWZmZXIoKTsKKyAgICBt
X2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVG
RkVSLCBtX2VsZW1lbnRzQnVmZmVyKTsKKyAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhp
Y3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRpY2VzLnNpemUoKSAqIHNpemVv
Zih1aW50MTZfdCksIGluZGljZXMuZGF0YSgpLCBHcmFwaGljc0NvbnRleHQzRDo6U1RBVElDX0RS
QVcpOworfQorCitDdXN0b21GaWx0ZXJNZXNoOjp+Q3VzdG9tRmlsdGVyTWVzaCgpCit7CisgICAg
bV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV92ZXJ0aWNlc0J1ZmZlcik7CisgICAgbV9jb250ZXh0
LT5kZWxldGVCdWZmZXIobV9lbGVtZW50c0J1ZmZlcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlck1lc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyTWVzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmQ3YmY0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaApAQCAtMCwwICsxLDc5IEBACisvKgorICog
Q29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAg
ICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAq
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3VzdG9tRmlsdGVyTWVzaF9oCisjZGVmaW5l
IEN1c3RvbUZpbHRlck1lc2hfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUo
V0VCR0wpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlIDxG
bG9hdFJlY3QuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworCitjbGFzcyBDdXN0b21GaWx0ZXJN
ZXNoIDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyTWVzaD4geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck1lc2g+IGNyZWF0ZShHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgdW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRS
ZWN0JiBtZXNoQm94LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlck1lc2goY29udGV4dCwgY29scywgcm93
cywgbWVzaEJveCwgbWVzaFR5cGUpKTsKKyAgICB9CisgICAgfkN1c3RvbUZpbHRlck1lc2goKTsK
KworICAgIHVuc2lnbmVkIHZlcnRpY2VzQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNl
c0J1ZmZlcjsgfQorICAgIHVuc2lnbmVkIGJ5dGVzUGVyVmVydGV4KCkgY29uc3QgeyByZXR1cm4g
bV9ieXRlc1BlclZlcnRleDsgfQorICAgIAorICAgIHVuc2lnbmVkIGVsZW1lbnRzQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9lbGVtZW50c0J1ZmZlcjsgfQorICAgIHVuc2lnbmVkIGluZGljZXND
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kaWNlc0NvdW50OyB9CisgICAgCisgICAgY29uc3Qg
RmxvYXRSZWN0JiBtZXNoQm94KCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQm94OyB9CisgICAgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWVzaFR5cGU7IH0KKworcHJpdmF0ZToKKyAgICBDdXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29u
dGV4dDNEKiwgdW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRSZWN0JiBt
ZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlKTsKKyAgICAKKyAgICBHcmFw
aGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIAorICAgIHVuc2lnbmVkIG1fdmVydGljZXNC
dWZmZXI7CisgICAgdW5zaWduZWQgbV9ieXRlc1BlclZlcnRleDsKKyAgICAKKyAgICB1bnNpZ25l
ZCBtX2VsZW1lbnRzQnVmZmVyOworICAgIHVuc2lnbmVkIG1faW5kaWNlc0NvdW50OworICAgIAor
ICAgIEZsb2F0UmVjdCBtX21lc2hCb3g7CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNo
VHlwZSBtX21lc2hUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNlbmRpZiAvLyBDdXN0
b21GaWx0ZXJNZXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjNkODY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3Bw
CkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgor
ICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQor
CisjZGVmaW5lIFNIQURFUjAoU3JjKSAjU3JjCisjZGVmaW5lIFNIQURFUihTcmMpIFNIQURFUjAo
U3JjKQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyU2hhZGVyLmgiCisKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBDdXN0b21G
aWx0ZXJTaGFkZXI6OmRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcoKQoreworICAgIHJldHVybiBT
SEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICBhdHRyaWJ1
dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOwor
ICAgICAgICB1bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uTWF0cml4OworICAgICAgICB2YXJ5aW5n
IHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiBhX3Bvc2l0aW9uOworICAg
ICAgICAgICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7CisgICAgICAgIH0KKyAgICApOworfQor
CitTdHJpbmcgQ3VzdG9tRmlsdGVyU2hhZGVyOjpkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmco
KQoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBzYW1w
bGVyMkQgc190ZXh0dXJlOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAg
ICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsKKyAg
ICAgICAgfQorICAgICk7Cit9CisKK0N1c3RvbUZpbHRlclNoYWRlcjo6Q3VzdG9tRmlsdGVyU2hh
ZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRl
clN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclN0cmluZykKKyAgICA6IG1fY29u
dGV4dChjb250ZXh0KQorICAgICwgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcoIXZlcnRleFNoYWRlclN0
cmluZy5pc051bGwoKSA/IHZlcnRleFNoYWRlclN0cmluZyA6IGRlZmF1bHRWZXJ0ZXhTaGFkZXJT
dHJpbmcoKSkKKyAgICAsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcoIWZyYWdtZW50U2hhZGVyU3Ry
aW5nLmlzTnVsbCgpID8gZnJhZ21lbnRTaGFkZXJTdHJpbmcgOiBkZWZhdWx0RnJhZ21lbnRTaGFk
ZXJTdHJpbmcoKSkKKyAgICAsIG1fcHJvZ3JhbSgwKQorICAgICwgbV9wb3NpdGlvbkF0dHJpYkxv
Y2F0aW9uKC0xKQorICAgICwgbV90ZXhBdHRyaWJMb2NhdGlvbigtMSkKKyAgICAsIG1fbWVzaEF0
dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV90cmlhbmdsZUF0dHJpYkxvY2F0aW9uKC0xKQorICAg
ICwgbV9tZXNoQm94TG9jYXRpb24oLTEpCisgICAgLCBtX3Byb2plY3Rpb25NYXRyaXhMb2NhdGlv
bigtMSkKKyAgICAsIG1fdGlsZVNpemVMb2NhdGlvbigtMSkKKyAgICAsIG1fbWVzaFNpemVMb2Nh
dGlvbigtMSkKKyAgICAsIG1fc2FtcGxlckxvY2F0aW9uKC0xKQorICAgICwgbV9zYW1wbGVyU2l6
ZUxvY2F0aW9uKC0xKQorICAgICwgbV9jb250ZW50U2FtcGxlckxvY2F0aW9uKC0xKQorICAgICwg
bV9pc0luaXRpYWxpemVkKGZhbHNlKQoreworICAgIFBsYXRmb3JtM0RPYmplY3QgdmVydGV4U2hh
ZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9T
SEFERVIpOworICAgIFBsYXRmb3JtM0RPYmplY3QgZnJhZ21lbnRTaGFkZXIgPSBtX2NvbnRleHQt
PmNyZWF0ZVNoYWRlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBR01FTlRfU0hBREVSKTsKKworICAg
IG1fY29udGV4dC0+c2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwgbV92ZXJ0ZXhTaGFkZXJTdHJp
bmcpOworICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAgIAor
ICAgIGludCBjb21waWxlZCA9IDA7CisgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdih2ZXJ0ZXhT
aGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QSUxFX1NUQVRVUywgJmNvbXBpbGVkKTsKKyAg
ICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGFuIGludmFsaWQg
c2hhZGVyLiBUaHJvdyBzb21lIGVycm9ycy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDE2CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIG1fZnJhZ21lbnRT
aGFkZXJTdHJpbmcpOworICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRl
cik7CisgICAgCisgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihmcmFnbWVudFNoYWRlciwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVTLCAmY29tcGlsZWQpOworICAgIGlmICghY29t
cGlsZWQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gaW52YWxpZCBzaGFkZXIuIFRo
cm93IHNvbWUgZXJyb3JzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQ0MTYKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX3By
b2dyYW0gPSBtX2NvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICBtX2NvbnRleHQtPmF0dGFj
aFNoYWRlcihtX3Byb2dyYW0sIHZlcnRleFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5hdHRhY2hT
aGFkZXIobV9wcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5saW5rUHJv
Z3JhbShtX3Byb2dyYW0pOworICAgIAorICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRl
eFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpOwor
ICAgIAorICAgIGludCBsaW5rZWQgPSAwOworICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KG1f
cHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTktfU1RBVFVTLCAmbGlua2VkKTsKKyAgICBp
ZiAoIWxpbmtlZCkgeworICAgICAgICAvLyBGSVhNRTogSW52YWxpZCB2ZXJ0ZXgvZnJhZ21lbnQg
c2hhZGVyIGNvbWJpbmF0aW9uLiBUaHJvdyBzb21lIGVycm9ycyBoZXJlLgorICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MTYKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24gPSBtX2NvbnRl
eHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKKyAgICBtX3Rl
eEF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0s
ICJhX3RleENvb3JkIik7CisgICAgbV9tZXNoQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdl
dEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfbWVzaENvb3JkIik7CisgICAgbV90cmlhbmds
ZUF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0s
ICJhX3RyaWFuZ2xlQ29vcmQiKTsKKyAgICBtX21lc2hCb3hMb2NhdGlvbiA9IG1fY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfbWVzaEJveCIpOworICAgIG1fdGlsZVNp
emVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVf
dGlsZVNpemUiKTsKKyAgICBtX21lc2hTaXplTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X21lc2hTaXplIik7CisgICAgbV9wcm9qZWN0aW9uTWF0
cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1
X3Byb2plY3Rpb25NYXRyaXgiKTsKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInNfdGV4dHVyZSIpOworICAgIG1fc2FtcGxl
clNpemVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwg
InNfdGV4dHVyZVNpemUiKTsKKyAgICBtX2NvbnRlbnRTYW1wbGVyTG9jYXRpb24gPSBtX2NvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJzX2NvbnRlbnRUZXh0dXJlIik7Cisg
ICAgCisgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKK30KKyAgICAKK0N1c3RvbUZpbHRlclNo
YWRlcjo6fkN1c3RvbUZpbHRlclNoYWRlcigpCit7CisgICAgaWYgKG1fcHJvZ3JhbSkKKyAgICAg
ICAgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fcHJvZ3JhbSk7Cit9CisKKworfQorCisjZW5k
aWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJT
aGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyU2hhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYxZmNj
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisg
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21GaWx0ZXJTaGFkZXJfaAorI2RlZmluZSBD
dXN0b21GaWx0ZXJTaGFkZXJfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUo
V0VCR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworCitjbGFzcyBDdXN0b21GaWx0
ZXJTaGFkZXI6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRlclNoYWRlcj4geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclNoYWRlcj4gY3JlYXRlKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3Qg
U3RyaW5nJiBmcmFnbWVudFNoYWRlcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ3VzdG9tRmlsdGVyU2hhZGVyKGNvbnRleHQsIHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFk
ZXIpKTsKKyAgICB9CisgICAgCisgICAgfkN1c3RvbUZpbHRlclNoYWRlcigpOworICAgIAorICAg
IHN0YXRpYyBTdHJpbmcgZGVmYXVsdFZlcnRleFNoYWRlclN0cmluZygpOworICAgIHN0YXRpYyBT
dHJpbmcgZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCk7ICAgIAorICAgIAorICAgIFN0cmlu
ZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRlclN0cmlu
ZzsgfQorICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhZ21lbnRTaGFkZXJTdHJpbmc7IH0KKyAgICAKKyAgICBpbnQgcG9zaXRpb25BdHRyaWJMb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb25BdHRyaWJMb2NhdGlvbjsgfQorICAgIGlu
dCB0ZXhBdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4QXR0cmliTG9jYXRpb247
IH0KKyAgICBpbnQgbWVzaEF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQXR0
cmliTG9jYXRpb247IH0KKyAgICBpbnQgdHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdHJpYW5nbGVBdHRyaWJMb2NhdGlvbjsgfQorICAgIGludCBtZXNoQm94TG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX21lc2hCb3hMb2NhdGlvbjsgfQorICAgIGludCBwcm9qZWN0
aW9uTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb2plY3Rpb25NYXRyaXhMb2Nh
dGlvbjsgfQorICAgIGludCB0aWxlU2l6ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aWxl
U2l6ZUxvY2F0aW9uOyB9CisgICAgaW50IG1lc2hTaXplTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX21lc2hTaXplTG9jYXRpb247IH0KKyAgICBpbnQgc2FtcGxlckxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb247IH0KKyAgICBpbnQgY29udGVudFNhbXBsZXJMb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNhbXBsZXJMb2NhdGlvbjsgfQorICAgIGlu
dCBzYW1wbGVyU2l6ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyU2l6ZUxvY2F0
aW9uOyB9CisgICAgCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0luaXRpYWxpemVkOyB9CisgICAgCisgICAgUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9ncmFtOyB9CisKK3ByaXZhdGU6CisgICAgQ3VzdG9tRmlsdGVyU2hh
ZGVyKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0
IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpOworICAgIAorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gbV9jb250ZXh0OworICAgIAorICAgIFN0cmluZyBtX3ZlcnRleFNoYWRlclN0cmluZzsK
KyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZzsKKworICAgIFBsYXRmb3JtM0RPYmpl
Y3QgbV9wcm9ncmFtOworICAgIAorICAgIGludCBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb247Cisg
ICAgaW50IG1fdGV4QXR0cmliTG9jYXRpb247CisgICAgaW50IG1fbWVzaEF0dHJpYkxvY2F0aW9u
OworICAgIGludCBtX3RyaWFuZ2xlQXR0cmliTG9jYXRpb247CisgICAgaW50IG1fbWVzaEJveExv
Y2F0aW9uOworICAgIGludCBtX3Byb2plY3Rpb25NYXRyaXhMb2NhdGlvbjsKKyAgICBpbnQgbV90
aWxlU2l6ZUxvY2F0aW9uOworICAgIGludCBtX21lc2hTaXplTG9jYXRpb247CisgICAgaW50IG1f
c2FtcGxlckxvY2F0aW9uOworICAgIGludCBtX3NhbXBsZXJTaXplTG9jYXRpb247CisgICAgaW50
IG1fY29udGVudFNhbXBsZXJMb2NhdGlvbjsKKyAgICAKKyAgICBib29sIG1faXNJbml0aWFsaXpl
ZDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdF
QkdMKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMjNkNzQyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC0wLDAgKzEs
MjEyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJ
U+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICog
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
CisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkZF
Q3VzdG9tRmlsdGVyLmgiCisKKyNpbmNsdWRlICJDYWNoZWRTaGFkZXIuaCIKKyNpbmNsdWRlICJD
dXN0b21GaWx0ZXJNZXNoLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyU2hhZGVyLmgiCisjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCisjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU3R5
bGVDYWNoZWRTaGFkZXIuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisjaW5jbHVkZSAiVGV4
dHVyZS5oIgorI2luY2x1ZGUgIlRpbGluZ0RhdGEuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgorCisjaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRob01hdHJpeChmbG9hdCBs
ZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmbG9hdCB0b3ApCit7CisgICAgZmxvYXQg
ZGVsdGFYID0gcmlnaHQgLSBsZWZ0OworICAgIGZsb2F0IGRlbHRhWSA9IHRvcCAtIGJvdHRvbTsK
KyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRobzsKKyAgICBpZiAoIWRlbHRhWCB8fCAhZGVs
dGFZKQorICAgICAgICByZXR1cm4gb3J0aG87CisgICAgb3J0aG8uc2V0TTExKDIuMGYgLyBkZWx0
YVgpOworICAgIG9ydGhvLnNldE00MSgtKHJpZ2h0ICsgbGVmdCkgLyBkZWx0YVgpOworICAgIG9y
dGhvLnNldE0yMigyLjBmIC8gZGVsdGFZKTsKKyAgICBvcnRoby5zZXRNNDIoLSh0b3AgKyBib3R0
b20pIC8gZGVsdGFZKTsKKworICAgIC8vIFVzZSBiaWcgZW5vdWdoIG5lYXIvZmFyIHZhbHVlcywg
c28gdGhhdCBzaW1wbGUgcm90YXRpb25zIG9mIHJhdGhlciBsYXJnZSBvYmplY3RzIHdpbGwgbm90
CisgICAgLy8gZ2V0IGNsaXBwZWQuIDEwMDAwIHNob3VsZCBjb3ZlciBtb3N0IG9mIHRoZSBzY3Jl
ZW4gcmVzb2x1dGlvbnMuCisgICAgY29uc3QgZmxvYXQgZmFyVmFsdWUgPSAxMDAwMDsKKyAgICBj
b25zdCBmbG9hdCBuZWFyVmFsdWUgPSAtMTAwMDA7CisgICAgb3J0aG8uc2V0TTMzKC0yLjBmIC8g
KGZhclZhbHVlIC0gbmVhclZhbHVlKSk7CisgICAgb3J0aG8uc2V0TTQzKC0gKGZhclZhbHVlICsg
bmVhclZhbHVlKSAvIChmYXJWYWx1ZSAtIG5lYXJWYWx1ZSkpOworICAgIG9ydGhvLnNldE00NCgx
LjBmKTsKKworICAgIHJldHVybiBvcnRobzsKK30KKworRkVDdXN0b21GaWx0ZXI6OkZFQ3VzdG9t
RmlsdGVyKEZpbHRlciogZmlsdGVyLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
dmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1u
cywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSBtZXNoQm94VHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBl
IG1lc2hUeXBlKQorICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKKyAgICAsIG1fZG9jdW1lbnQo
ZG9jdW1lbnQpCisgICAgLCBtX3ZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIpCisgICAgLCBtX2Zy
YWdtZW50U2hhZGVyKGZyYWdtZW50U2hhZGVyKQorICAgICwgbV9tZXNoUm93cyhtZXNoUm93cykK
KyAgICAsIG1fbWVzaENvbHVtbnMobWVzaENvbHVtbnMpCisgICAgLCBtX21lc2hCb3hUeXBlKG1l
c2hCb3hUeXBlKQorICAgICwgbV9tZXNoVHlwZShtZXNoVHlwZSkKKworeworfQorCitQYXNzUmVm
UHRyPEZFQ3VzdG9tRmlsdGVyPiBGRUN1c3RvbUZpbHRlcjo6Y3JlYXRlKEZpbHRlciogZmlsdGVy
LCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBT
dHJpbmcmIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSBtZXNoQm94VHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hU
eXBlIG1lc2hUeXBlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVDdXN0b21GaWx0ZXIo
ZmlsdGVyLCBkb2N1bWVudCwgdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlciwgbWVzaFJvd3Ms
IG1lc2hDb2x1bW5zLCBtZXNoQm94VHlwZSwgbWVzaFR5cGUpKTsKK30KKwordm9pZCBGRUN1c3Rv
bUZpbHRlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3sKKyAgICBCeXRlQXJyYXkqIGRzdFBp
eGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBpZiAoIWRz
dFBpeGVsQXJyYXkpCisgICAgICAgIHJldHVybjsKKworICAgIEZpbHRlckVmZmVjdCogaW4gPSBp
bnB1dEVmZmVjdCgwKTsKKyAgICBJbnRSZWN0IGVmZmVjdEFEcmF3aW5nUmVjdCA9IHJlcXVlc3Rl
ZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOworICAgIFJl
ZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNQcmVtdWx0aXBsaWVkSW1hZ2Uo
ZWZmZWN0QURyYXdpbmdSZWN0KTsKKyAgICAKKyAgICBJbnRTaXplIG5ld0NvbnRleHRTaXplKGVm
ZmVjdEFEcmF3aW5nUmVjdC53aWR0aCgpLCBlZmZlY3RBRHJhd2luZ1JlY3QuaGVpZ2h0KCkpOwor
ICAgIGJvb2wgaGFkQ29udGV4dCA9IG1fY29udGV4dDsKKyAgICBpZiAoIW1fY29udGV4dCkgewor
ICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgICAg
ICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHRydWU7CisgICAgICAgIGF0dHJp
YnV0ZXMucHJlbXVsdGlwbGllZEFscGhhID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBtX2Nv
bnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIG1fZG9jdW1lbnQt
PnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJP
ZmZzY3JlZW4pOworICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVh
dGUobV9jb250ZXh0LmdldCgpLCBuZXdDb250ZXh0U2l6ZSwgIWF0dHJpYnV0ZXMucHJlc2VydmVE
cmF3aW5nQnVmZmVyKTsKKyAgICAgICAgCisgICAgICAgIG1fc2hhZGVyID0gQ3VzdG9tRmlsdGVy
U2hhZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBtX3ZlcnRleFNoYWRlciwgbV9mcmFnbWVu
dFNoYWRlcik7CisgICAgICAgIG1fbWVzaCA9IEN1c3RvbUZpbHRlck1lc2g6OmNyZWF0ZShtX2Nv
bnRleHQuZ2V0KCksIG1fbWVzaENvbHVtbnMsIG1fbWVzaFJvd3MsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRSZWN0KDAsIDAsIDEsIDEpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tZXNoVHlwZSk7CisgICAgfQor
ICAgIAorICAgIGlmICghaGFkQ29udGV4dCB8fCBtX2NvbnRleHRTaXplICE9IG5ld0NvbnRleHRT
aXplKSB7CisgICAgICAgIG1faW5wdXRUZXh0dXJlID0gMDsKKyAgICAgICAgbV9kcmF3aW5nQnVm
ZmVyLT5yZXNldChuZXdDb250ZXh0U2l6ZSk7CisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZShu
ZXdDb250ZXh0U2l6ZS53aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5oZWlnaHQoKSk7CisgICAgICAg
IG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgbmV3Q29udGV4dFNpemUud2lkdGgoKSwgbmV3Q29u
dGV4dFNpemUuaGVpZ2h0KCkpOworICAgICAgICBtX2lucHV0VGV4dHVyZSA9IFRleHR1cmU6OmNy
ZWF0ZShtX2NvbnRleHQuZ2V0KCksIFRleHR1cmU6OlJHQkE4LCBuZXdDb250ZXh0U2l6ZS53aWR0
aCgpLCBuZXdDb250ZXh0U2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIG1fY29udGV4dFNpemUgPSBu
ZXdDb250ZXh0U2l6ZTsKKyAgICB9CisgICAgCisgICAgaWYgKG1faW5wdXRUZXh0dXJlLT50aWxl
cygpLm51bVRpbGVzKCkgIT0gMSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY29udGV4
dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICBtX2NvbnRleHQtPmNsZWFyKEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JV
RkZFUl9CSVQpOworICAgIAorICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShtX3NoYWRlci0+cHJv
Z3JhbSgpKTsKKyAgICAKKyAgICBpZiAobV9zaGFkZXItPnNhbXBsZXJMb2NhdGlvbigpICE9IC0x
KSB7CisgICAgICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRTApOworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaShtX3NoYWRlci0+c2FtcGxl
ckxvY2F0aW9uKCksIDApOworICAgICAgICBtX2lucHV0VGV4dHVyZS0+bG9hZChzcmNQaXhlbEFy
cmF5LT5kYXRhKCkpOworICAgICAgICBtX2lucHV0VGV4dHVyZS0+YmluZFRpbGUoMCk7CisgICAg
fQorICAgIAorICAgIGlmIChtX3NoYWRlci0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCkgIT0g
LTEpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcHJvamVjdGlvbk1hdHJpeCA9IG9y
dGhvTWF0cml4KC0wLjUsIDAuNSwgLTAuNSwgMC41KTsKKyAgICAgICAgZmxvYXQgZ2xQcm9qZWN0
aW9uTWF0cml4WzE2XTsKKyAgICAgICAgcHJvamVjdGlvbk1hdHJpeC50b0NvbHVtbk1ham9yRmxv
YXRBcnJheShnbFByb2plY3Rpb25NYXRyaXgpOworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXg0ZnYobV9zaGFkZXItPnByb2plY3Rpb25NYXRyaXhMb2NhdGlvbigpLCBmYWxzZSwgJmds
UHJvamVjdGlvbk1hdHJpeFswXSwgMSk7CisgICAgfQorICAgIAorICAgIG1fY29udGV4dC0+Ymlu
ZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX21lc2gtPnZlcnRpY2Vz
QnVmZmVyKCkpOworICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1fbWVzaC0+ZWxlbWVudHNCdWZmZXIoKSk7CisKKyAgICB1
bnNpZ25lZCB2ZXJ0ZXhTaXplID0gbV9tZXNoLT5ieXRlc1BlclZlcnRleCgpOworICAgIAorICAg
IHVuc2lnbmVkIG9mZnNldCA9IDA7CisgICAgCisgICAgaWYgKG1fc2hhZGVyLT5wb3NpdGlvbkF0
dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKG1fc2hhZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCksIDQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpGTE9BVCwgZmFsc2UsIHZlcnRleFNpemUsIG9mZnNldCk7CisgICAgICAgIG1fY29u
dGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9zaGFkZXItPnBvc2l0aW9uQXR0cmliTG9j
YXRpb24oKSk7CisgICAgfQorICAgIG9mZnNldCArPSA0ICogc2l6ZW9mKGZsb2F0KTsKKyAgICAK
KyAgICBpZiAobV9zaGFkZXItPnRleEF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVyLT50ZXhBdHRyaWJMb2NhdGlv
bigpLCAyLCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCB2ZXJ0ZXhTaXplLCBvZmZz
ZXQpOworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fc2hhZGVy
LT50ZXhBdHRyaWJMb2NhdGlvbigpKTsKKyAgICB9CisgICAgb2Zmc2V0ICs9IDIgKiBzaXplb2Yo
ZmxvYXQpOworICAgIAorICAgIGlmIChtX3NoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCkgIT0g
LTEpIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVyLT5t
ZXNoQXR0cmliTG9jYXRpb24oKSwgMiwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwg
dmVydGV4U2l6ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShtX3NoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCkpOworICAgIH0KKyAgICBvZmZz
ZXQgKz0gMiAqIHNpemVvZihmbG9hdCk7CisgICAgCisgICAgaWYgKG1fbWVzaFR5cGUgPT0gQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpERVRBQ0hFRCAmJiBtX3NoYWRlci0+dHJpYW5nbGVBdHRyaWJM
b2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRl
cihtX3NoYWRlci0+dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpLCAzLCBHcmFwaGljc0NvbnRleHQz
RDo6RkxPQVQsIGZhbHNlLCB2ZXJ0ZXhTaXplLCBvZmZzZXQpOworICAgICAgICBtX2NvbnRleHQt
PmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fc2hhZGVyLT50cmlhbmdsZUF0dHJpYkxvY2F0aW9u
KCkpOworICAgIH0KKyAgICAKKyAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50cyhHcmFwaGljc0Nv
bnRleHQzRDo6VFJJQU5HTEVTLCBtX21lc2gtPmluZGljZXNDb3VudCgpLCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfU0hPUlQsIDApOworICAgIAorICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29t
bWl0KCk7CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSBtX2NvbnRleHQtPnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKG1fZHJhd2luZ0J1ZmZlci5nZXQoKSk7Cisg
ICAgQnl0ZUFycmF5KiBncHVSZXN1bHQgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOworICAg
IEFTU0VSVChncHVSZXN1bHQtPmxlbmd0aCgpID09IGRzdFBpeGVsQXJyYXktPmxlbmd0aCgpKTsK
KyAgICBtZW1jcHkoZHN0UGl4ZWxBcnJheS0+ZGF0YSgpLCBncHVSZXN1bHQtPmRhdGEoKSwgZ3B1
UmVzdWx0LT5sZW5ndGgoKSk7Cit9CisKK3ZvaWQgRkVDdXN0b21GaWx0ZXI6OmR1bXAoKQorewor
fQorCitUZXh0U3RyZWFtJiBGRUN1c3RvbUZpbHRlcjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKK3sKKyAgICB3cml0ZUluZGVudCh0cywg
aW5kZW50KTsKKyAgICB0cyA8PCAiW2ZlQ3VzdG9tRmlsdGVyIjsKKyAgICBGaWx0ZXJFZmZlY3Q6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOworICAgIHRzIDw8ICJdXG4iOworICAgIGlucHV0
RWZmZWN0KDApLT5leHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzLCBpbmRlbnQgKyAxKTsKKyAgICBy
ZXR1cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MjQ3OWYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmgK
QEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5j
b3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAq
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZF
Q3VzdG9tRmlsdGVyX2gKKyNkZWZpbmUgRkVDdXN0b21GaWx0ZXJfaAorCisjaWYgRU5BQkxFKENT
U19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVy
YXRpb24uaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q2FjaGVkU2hhZGVyOworY2xhc3MgQ3VzdG9tRmlsdGVyTWVzaDsKK2NsYXNzIEN1c3RvbUZpbHRl
clNoYWRlcjsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRHJhd2luZ0J1ZmZlcjsKK2NsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOworY2xhc3MgVGV4dHVyZTsKKyAgICAKK2NsYXNzIEZFQ3VzdG9tRmls
dGVyIDogcHVibGljIEZpbHRlckVmZmVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RkVDdXN0b21GaWx0ZXI+IGNyZWF0ZShGaWx0ZXIqLCBEb2N1bWVudCosIGNvbnN0IFN0cmlu
ZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSwgCisgICAgICAgICAgICAgICAgICAgQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKCk7CisgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKworICAgIHZpcnR1YWwg
VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVu
dGlvbikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRkVDdXN0b21GaWx0ZXIoRmlsdGVyKiwgRG9j
dW1lbnQqLCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVu
dFNoYWRlciwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQg
bWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaEJveFR5cGUsIAorICAgICAg
ICAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUpOworICAgIAorICAg
IERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIAorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gbV9jb250ZXh0OworICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVyPiBtX2RyYXdpbmdCdWZmZXI7
CisgICAgUmVmUHRyPFRleHR1cmU+IG1faW5wdXRUZXh0dXJlOworICAgIFJlZlB0cjxDdXN0b21G
aWx0ZXJTaGFkZXI+IG1fc2hhZGVyOworICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJNZXNoPiBtX21l
c2g7CisgICAgSW50U2l6ZSBtX2NvbnRleHRTaXplOworICAgIAorICAgIFN0cmluZyBtX3ZlcnRl
eFNoYWRlcjsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlcjsKKworICAgIHVuc2lnbmVkIG1f
bWVzaFJvd3M7CisgICAgdW5zaWduZWQgbV9tZXNoQ29sdW1uczsKKyAgICBDdXN0b21GaWx0ZXJP
cGVyYXRpb246Ok1lc2hCb3hUeXBlIG1fbWVzaEJveFR5cGU7CisgICAgQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpNZXNoVHlwZSBtX21lc2hUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNl
bmRpZiAvLyBGRUN1c3RvbUZpbHRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggM2NmZDIzMC4uNWZmN2Q4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtMzAs
NyArMzAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKQorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpIHx8IEVOQUJM
RShDU1NfU0hBREVSUykKIAogI2luY2x1ZGUgIlRleHR1cmUuaCIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1h
dHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCBlMGQ0Zjc4Li5hZjU4MjM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0
aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTE5OCw1ICsxMTk4LDI1IEBAIFRy
YW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0bzJkVHJhbnNmb3JtKCkg
Y29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tYXRyaXhbM11bMF0sIG1f
bWF0cml4WzNdWzFdLCAwLCBtX21hdHJpeFszXVszXSk7CiB9CiAKK3ZvaWQgVHJhbnNmb3JtYXRp
b25NYXRyaXg6OnRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KGZsb2F0KiByZXN1bHQpIGNvbnN0Cit7
CisgICAgcmVzdWx0WzBdID0gbTExKCk7CisgICAgcmVzdWx0WzFdID0gbTEyKCk7CisgICAgcmVz
dWx0WzJdID0gbTEzKCk7CisgICAgcmVzdWx0WzNdID0gbTE0KCk7CisgICAgcmVzdWx0WzRdID0g
bTIxKCk7CisgICAgcmVzdWx0WzVdID0gbTIyKCk7CisgICAgcmVzdWx0WzZdID0gbTIzKCk7Cisg
ICAgcmVzdWx0WzddID0gbTI0KCk7CisgICAgcmVzdWx0WzhdID0gbTMxKCk7CisgICAgcmVzdWx0
WzldID0gbTMyKCk7CisgICAgcmVzdWx0WzEwXSA9IG0zMygpOworICAgIHJlc3VsdFsxMV0gPSBt
MzQoKTsKKyAgICByZXN1bHRbMTJdID0gbTQxKCk7CisgICAgcmVzdWx0WzEzXSA9IG00MigpOwor
ICAgIHJlc3VsdFsxNF0gPSBtNDMoKTsKKyAgICByZXN1bHRbMTVdID0gbTQ0KCk7CisKK30KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IDA0NTBhZDcuLjdmNzc5
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTM1MCw2ICszNTAs
OCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBtYXRyaXggd2l0
aG91dCAzRCBjb21wb25lbnRzLgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRvMmRUcmFuc2Zv
cm0oKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KGZsb2F0
KiByZXN1bHQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIC8vIG11bHRpcGx5IHBhc3NlZCAyRCBw
b2ludCBieSBtYXRyaXggKGFzc3VtZSB6PTApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjkyYzYwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgRmlsdGVyRWZmZWN0T2JzZXJ2ZXJfaAorI2RlZmluZSBGaWx0
ZXJFZmZlY3RPYnNlcnZlcl9oCisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRmlsdGVyRWZmZWN0T2JzZXJ2ZXIgeworcHVibGljOgorICAg
IHZpcnR1YWwgfkZpbHRlckVmZmVjdE9ic2VydmVyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGZp
bHRlck5lZWRzUmVwYWludCgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKKworI2VuZGlmIC8vIEZpbHRlckVmZmVjdE9i
c2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuY3BwCmluZGV4IDQ2N2M0OTkuLjdiNjdhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtMzksNiArMzksMTQgQEAK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAorI2lm
IEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkNhY2hlZFNo
YWRlci5oIgorI2luY2x1ZGUgIkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkZF
Q3VzdG9tRmlsdGVyLmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCIKKyNpbmNs
dWRlICJTZXR0aW5ncy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGlubGluZSB2b2lkIGVuZE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJzKQpAQCAt
NTUsOSArNjMsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIGxhc3RNYXRyaXhSb3coVmVjdG9yPGZs
b2F0PiYgcGFyYW1ldGVycykKICAgICBwYXJhbWV0ZXJzLmFwcGVuZCgxKTsKICAgICBwYXJhbWV0
ZXJzLmFwcGVuZCgwKTsKIH0KKyAgICAKKyAgICAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYm
IEVOQUJMRShXRUJHTCkKK3N0YXRpYyBib29sIGlzV2ViR0xFbmFibGVkKERvY3VtZW50KiBkb2N1
bWVudCkKK3sKKyAgICAvLyBXZSBvbmx5IHdhbnQgdG8gZW5hYmxlIHNoYWRlcnMgaWYgV2ViR0wg
aXMgYWxzbyBlbmFibGVkIG9uIHRoaXMgcGxhdGZvcm0uCisgICAgU2V0dGluZ3MqIHNldHRpbmdz
ID0gZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgcmV0dXJuIHNldHRpbmdzICYmIHNldHRpbmdz
LT53ZWJHTEVuYWJsZWQoKTsKK30KKyNlbmRpZgogCi1GaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Rmls
dGVyRWZmZWN0UmVuZGVyZXIoKQotICAgIDogbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKGZhbHNl
KQorRmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcmVyKEZpbHRlckVmZmVj
dE9ic2VydmVyKiBvYnNlcnZlcikKKyAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgLCBt
X2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQoZmFsc2UpCiB7CiAgICAgc2V0RmlsdGVyUmVzb2x1dGlv
bihGbG9hdFNpemUoMSwgMSkpOwogICAgIG1fc291cmNlR3JhcGhpYyA9IFNvdXJjZUdyYXBoaWM6
OmNyZWF0ZSh0aGlzKTsKQEAgLTcyLDggKzkxLDE0IEBAIEdyYXBoaWNzQ29udGV4dCogRmlsdGVy
RWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCgpCiAgICAgcmV0dXJuIHNvdXJjZUltYWdlKCkt
PmNvbnRleHQoKTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyQm94
KQordm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoRG9jdW1lbnQqIGRvY3VtZW50LCBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBMYXlvdXRSZWN0JiBib3Jk
ZXJCb3gpCiB7CisjaWYgIUVOQUJMRShDU1NfU0hBREVSUykgfHwgIUVOQUJMRShXRUJHTCkKKyAg
ICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOworI2Vsc2UKKyAgICBDYWNoZWRTaGFkZXJMaXN0IGNh
Y2hlZFNoYWRlcnM7CisjZW5kaWYKKwogICAgIG1fZWZmZWN0cy5jbGVhcigpOwogCiAgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwpAQCAtMjE0LDcgKzIzOSw0MSBAQCB2b2lkIEZpbHRl
ckVmZmVjdFJlbmRlcmVyOjpidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25z
LCBjb25zdCBMYXlvdQogICAgICAgICB9CiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOiB7Ci0gICAgICAgICAgICAvLyBOb3QgaW1w
bGVtZW50ZWQgaW4gdGhlIHNvZnR3YXJlIHBhdGguCisjaWYgRU5BQkxFKFdFQkdMKQorICAgICAg
ICAgICAgaWYgKCFpc1dlYkdMRW5hYmxlZChkb2N1bWVudCkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbiog
Y3VzdG9tRmlsdGVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyT3BlcmF0aW9u
Kj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB0aGUgZmlsdGVycyBhcmUgYWxyZWFkeSBsb2FkZWQuIElmIG5vdCBqdXN0IHNraXAgdGhl
bSBoZXJlLgorICAgICAgICAgICAgU3RyaW5nIHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXI7
CisgICAgICAgICAgICBib29sIHNoYWRlcnNMb2FkZWQgPSB0cnVlOworICAgICAgICAgICAgaWYg
KGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+dmVydGV4U2hhZGVyKCkpIHsKKyAgICAgICAgICAgICAg
ICBDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlciA9IGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+dmVy
dGV4U2hhZGVyKCktPmNhY2hlZFNoYWRlcigpOworICAgICAgICAgICAgICAgIEFTU0VSVChjYWNo
ZWRTaGFkZXIpOworICAgICAgICAgICAgICAgIGNhY2hlZFNoYWRlcnMuYXBwZW5kKGNhY2hlZFNo
YWRlcik7CisgICAgICAgICAgICAgICAgY2FjaGVkU2hhZGVyLT5hZGRDbGllbnQodGhpcyk7Cisg
ICAgICAgICAgICAgICAgaWYgKGNhY2hlZFNoYWRlci0+aXNMb2FkZWQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgdmVydGV4U2hhZGVyID0gY2FjaGVkU2hhZGVyLT5zaGFkZXJTdHJpbmcoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNoYWRlcnNMb2FkZWQgPSBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjdXN0b21GaWx0ZXJPcGVyYXRp
b24tPmZyYWdtZW50U2hhZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBDYWNoZWRTaGFkZXIqIGNh
Y2hlZFNoYWRlciA9IGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+ZnJhZ21lbnRTaGFkZXIoKS0+Y2Fj
aGVkU2hhZGVyKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGNhY2hlZFNoYWRlcik7CisgICAg
ICAgICAgICAgICAgY2FjaGVkU2hhZGVycy5hcHBlbmQoY2FjaGVkU2hhZGVyKTsKKyAgICAgICAg
ICAgICAgICBjYWNoZWRTaGFkZXItPmFkZENsaWVudCh0aGlzKTsKKyAgICAgICAgICAgICAgICBp
ZiAoY2FjaGVkU2hhZGVyLT5pc0xvYWRlZCgpKQorICAgICAgICAgICAgICAgICAgICBmcmFnbWVu
dFNoYWRlciA9IGNhY2hlZFNoYWRlci0+c2hhZGVyU3RyaW5nKCk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBzaGFkZXJzTG9hZGVkID0gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoc2hhZGVyc0xvYWRlZCkgeworICAgICAgICAgICAgICAg
IGVmZmVjdCA9IEZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUodGhpcywgZG9jdW1lbnQsIHZlcnRleFNo
YWRlciwgZnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPm1lc2hSb3dzKCksIGN1c3RvbUZp
bHRlck9wZXJhdGlvbi0+bWVzaENvbHVtbnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+bWVzaEJveFR5cGUo
KSwgY3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5tZXNoVHlwZSgpKTsKKyAgICAgICAgICAgIH0KKyNl
bmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMjM2LDYgKzI5
NSwxNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBMYXlvdQogCiAgICAgbV9lZmZlY3RzLmZpcnN0KCkt
PmlucHV0RWZmZWN0cygpLmFwcGVuZChtX3NvdXJjZUdyYXBoaWMpOwogICAgIHNldE1heEVmZmVj
dFJlY3RzKG1fc291cmNlRHJhd2luZ1JlZ2lvbik7CisgICAgCisjaWYgRU5BQkxFKENTU19TSEFE
RVJTKSAmJiBFTkFCTEUoV0VCR0wpCisgICAgZm9yIChDYWNoZWRTaGFkZXJMaXN0OjppdGVyYXRv
ciBpdGVyID0gbV9jYWNoZWRTaGFkZXJzLmJlZ2luKCksIGVuZCA9IG1fY2FjaGVkU2hhZGVycy5l
bmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgaXRlci0+Z2V0KCktPnJlbW92ZUNs
aWVudCh0aGlzKTsKKyAgICBtX2NhY2hlZFNoYWRlcnMuc3dhcChjYWNoZWRTaGFkZXJzKTsKKyNl
bmRpZgorfQorCit2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSopCit7CisgICAgbV9vYnNlcnZlci0+ZmlsdGVyTmVlZHNSZXBhaW50KCk7CiB9
CiAKIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OnByZXBhcmUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAppbmRleCAwYmFmYWM4Li5jNmVh
Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuaApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogCisjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgog
I2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKQEAgLTQ0LDEyICs0NiwxNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IEZp
bHRlckVmZmVjdExpc3Q7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEZpbHRlckVmZmVjdE9ic2Vy
dmVyOworY2xhc3MgQ2FjaGVkU2hhZGVyOwogCi1jbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciA6
IHB1YmxpYyBGaWx0ZXIgeworY2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVyZXIgOiBwdWJsaWMgRmls
dGVyLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRl
cmVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVy
PiBjcmVhdGUoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBGaWx0ZXJFZmZlY3RSZW5kZXJlcihvYnNlcnZlcikpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgdm9pZCBzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2VJbWFnZVJlY3QpCkBAIC02NywxMCArNzMsMTIgQEAgcHVibGljOgogICAgIEdyYXBoaWNz
Q29udGV4dCogaW5wdXRDb250ZXh0KCk7CiAgICAgSW1hZ2VCdWZmZXIqIG91dHB1dCgpIGNvbnN0
IHsgcmV0dXJuIGxhc3RFZmZlY3QoKS0+YXNJbWFnZUJ1ZmZlcigpOyB9CiAKLSAgICB2b2lkIGJ1
aWxkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBjb25zdCBMYXlvdXRSZWN0Jik7CisgICAgdm9p
ZCBidWlsZChEb2N1bWVudCosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBjb25zdCBMYXlvdXRS
ZWN0Jik7CiAgICAgdm9pZCBwcmVwYXJlKCk7CiAgICAgdm9pZCBhcHBseSgpOwogICAgIAorICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworICAgIAogcHJp
dmF0ZToKIAogICAgIHZvaWQgc2V0TWF4RWZmZWN0UmVjdHMoY29uc3QgRmxvYXRSZWN0JiBlZmZl
Y3RSZWN0KQpAQCAtODcsNyArOTUsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKLSAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpOworICAgIEZpbHRlckVmZmVjdFJlbmRl
cmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKik7CiAgICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0UmVu
ZGVyZXIoKTsKICAgICAKICAgICBGbG9hdFJlY3QgbV9zb3VyY2VEcmF3aW5nUmVnaW9uOwpAQCAt
OTUsNiArMTAzLDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgRmlsdGVyRWZmZWN0TGlzdCBtX2Vm
ZmVjdHM7CiAgICAgUmVmUHRyPFNvdXJjZUdyYXBoaWM+IG1fc291cmNlR3JhcGhpYzsKKyAgICBG
aWx0ZXJFZmZlY3RPYnNlcnZlciogbV9vYnNlcnZlcjsgLy8gTm8gbmVlZCBmb3IgYSBzdHJvbmcg
cmVmZXJlbmNlcyBoZXJlLiBJdCBvd25zIHVzLgorICAgIAorI2lmIEVOQUJMRShDU1NfU0hBREVS
UykgJiYgRU5BQkxFKFdFQkdMKQorICAgIHR5cGVkZWYgVmVjdG9yPENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFNoYWRlcj4gPiBDYWNoZWRTaGFkZXJMaXN0OworICAgIENhY2hlZFNoYWRlckxp
c3QgbV9jYWNoZWRTaGFkZXJzOworI2VuZGlmCiAgICAgCiAgICAgYm9vbCBtX2dyYXBoaWNzQnVm
ZmVyQXR0YWNoZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
aW5kZXggOTk3MGMwNy4uOTNiZTU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC0yNzI0LDIzICsyNzI0LDE5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBwLAogICAgICAg
ICBMYXlvdXRQb2ludCBsYXllck9yaWdpbjsKICAgICAgICAgY29udmVydFRvTGF5ZXJDb29yZHMo
cm9vdExheWVyLCBsYXllck9yaWdpbik7CiAgICAgICAgIAotICAgICAgICBib29sIGlzUm9vdExh
eWVyID0gcGFpbnRzV2l0aFRyYW5zZm9ybShwYWludEJlaGF2aW9yKSAmJiAhKHBhaW50RmxhZ3Mg
JiBQYWludExheWVyQXBwbGllZFRyYW5zZm9ybSk7Ci0gICAgICAgIGlmICghaXNSb290TGF5ZXIp
IHsKLSAgICAgICAgICAgIHNvdXJjZUdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOworICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNvbnRleHRTYXZlcigqc291cmNlR3JhcGhpY3NDb250
ZXh0KTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaGFzVHJhbnNmb3JtID0gcGFpbnRzV2l0aFRy
YW5zZm9ybShwYWludEJlaGF2aW9yKSAmJiAhKHBhaW50RmxhZ3MgJiBQYWludExheWVyQXBwbGll
ZFRyYW5zZm9ybSk7CisgICAgICAgIGlmICghaGFzVHJhbnNmb3JtKQogICAgICAgICAgICAgc291
cmNlR3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLWxheWVyT3JpZ2luLngoKSwgLWxheWVyT3Jp
Z2luLnkoKSk7Ci0gICAgICAgIH0KIAogICAgICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsKICAgICAgICAgc291cmNlR3JhcGhpY3NDb250
ZXh0LT5jbGVhclJlY3QocGFpbnRSZWN0KTsKIAogICAgICAgICAvLyBOb3cgZG8gdGhlIHJlZ3Vs
YXIgcGFpbnQgaW50byB0aGUgU291cmNlR3JhcGhpYy4KLSAgICAgICAgLy8gVXNpbmcgUGFpbnRM
YXllckFwcGxpZWRUcmFuc2Zvcm0gdG8gYXZvaWQgYXBwbHlpbmcgdGhlIHRyYW5zZm9ybSBhZ2Fp
biBpbnNpZGUgdGhlIGNvbnRleHQuCi0gICAgICAgIHBhaW50TGF5ZXIoaXNSb290TGF5ZXIgPyB0
aGlzIDogcm9vdExheWVyLCBzb3VyY2VHcmFwaGljc0NvbnRleHQsIHBhaW50RGlydHlSZWN0LCBw
YWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIHJlZ2lvbiwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywg
CisgICAgICAgIHBhaW50TGF5ZXIoaGFzVHJhbnNmb3JtID8gdGhpcyA6IHJvb3RMYXllciwgc291
cmNlR3JhcGhpY3NDb250ZXh0LCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhhdmlvciwgcGFpbnRp
bmdSb290LCByZWdpb24sIG92ZXJsYXBUZXN0UmVxdWVzdHMsIAogICAgICAgICAgICAgICAgICAg
IHBhaW50RmxhZ3MgfCBQYWludExheWVyUGFpbnRpbmdGaWx0ZXIgfCBQYWludExheWVyQXBwbGll
ZFRyYW5zZm9ybSk7CiAgICAgICAgIAotICAgICAgICBpZiAoIWlzUm9vdExheWVyKQotICAgICAg
ICAgICAgc291cmNlR3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7Ci0gICAgICAgIAogICAgICAg
ICBtX2ZpbHRlci0+YXBwbHkoKTsKICAgICAgICAgCiAgICAgICAgIC8vIEdldCB0aGUgZmlsdGVy
ZWQgb3V0cHV0IGFuZCBkcmF3IGl0IGluIHBsYWNlLgpAQCAtNDQzMCwxMiArNDQyNiwxMiBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCgpCiB7CiAgICAgaWYg
KGhhc0ZpbHRlcigpKSB7CiAgICAgICAgIGlmICghbV9maWx0ZXIpIHsKLSAgICAgICAgICAgIG1f
ZmlsdGVyID0gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9m
aWx0ZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKHRoaXMpOwogICAgICAgICAgICAg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+cGFnZSgp
LT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBBY2NlbGVyYXRlZCA6
IFVuYWNjZWxlcmF0ZWQ7CiAgICAgICAgICAgICBtX2ZpbHRlci0+c2V0UmVuZGVyaW5nTW9kZShy
ZW5kZXJpbmdNb2RlKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fZmlsdGVyLT5idWlsZChyZW5k
ZXJlcigpLT5zdHlsZSgpLT5maWx0ZXIoKSwgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSktPmJvcmRl
ckJveFJlY3QoKSk7CisgICAgICAgIG1fZmlsdGVyLT5idWlsZChyZW5kZXJlcigpLT5kb2N1bWVu
dCgpLCByZW5kZXJlcigpLT5zdHlsZSgpLT5maWx0ZXIoKSwgdG9SZW5kZXJCb3gocmVuZGVyZXIo
KSktPmJvcmRlckJveFJlY3QoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9maWx0ZXIgPSAw
OwogICAgIH0KQEAgLTQ0NTIsNiArNDQ0OCwxMSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVG
aWx0ZXJCYWNraW5nU3RvcmUoKQogICAgIH0KIH0KIAordm9pZCBSZW5kZXJMYXllcjo6ZmlsdGVy
TmVlZHNSZXBhaW50KCkKK3sKKyAgICByZW5kZXJlcigpLT5ub2RlKCktPnNldE5lZWRzU3R5bGVS
ZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsK
K30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCmluZGV4IDk3ZTRlNDIuLjNiYzdjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC00NCw2ICs0NCw5IEBACiAjaWZuZGVmIFJlbmRlckxh
eWVyX2gKICNkZWZpbmUgUmVuZGVyTGF5ZXJfaAogCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQor
I2luY2x1ZGUgIkZpbHRlckVmZmVjdE9ic2VydmVyLmgiCisjZW5kaWYKICNpbmNsdWRlICJQYWlu
dEluZm8uaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJTY3JvbGxCZWhhdmlv
ci5oIgpAQCAtMjAyLDcgKzIwNSwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9maXhlZCA6IDE7
CiB9OwogCi1jbGFzcyBSZW5kZXJMYXllciA6IHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CitjbGFz
cyBSZW5kZXJMYXllciA6IHB1YmxpYyBTY3JvbGxhYmxlQXJlYQorI2lmIEVOQUJMRShDU1NfRklM
VEVSUykKKyAgICAsIHB1YmxpYyBGaWx0ZXJFZmZlY3RPYnNlcnZlcgorI2VuZGlmCit7CiBwdWJs
aWM6CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlclJlcGxpY2E7CiAKQEAgLTUxMCw2ICs1MTcsNyBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgYm9vbCBoYXNGaWx0ZXIo
KSBjb25zdCB7IHJldHVybiByZW5kZXJlcigpLT5oYXNGaWx0ZXIoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKTsKICNlbmRpZgogCiAgICAgLy8gT3ZlcmxvYWRlZCBu
ZXcgb3BlcmF0b3IuIERlcml2ZWQgY2xhc3NlcyBtdXN0IG92ZXJyaWRlIG9wZXJhdG9yIG5ldwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hh
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIu
aAppbmRleCA4OGJmYzgxLi4yNjkyMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6
CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0
OwogICAgIAorICAgIHZpcnR1YWwgQ2FjaGVkU2hhZGVyKiBjYWNoZWRTaGFkZXIoKSBjb25zdCB7
IHJldHVybiBtX3NoYWRlci5nZXQoKTsgfQorICAgIAogcHJpdmF0ZToKICAgICBTdHlsZUNhY2hl
ZFNoYWRlcihDYWNoZWRTaGFkZXIqKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVNoYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlU2hhZGVyLmgKaW5kZXggOWIzNjY3Ny4uZmY1ZDJmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2hhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2hhZGVyLmgKQEAgLTM2LDggKzM2LDkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRTaGFkZXI7CiBjbGFzcyBDU1NW
YWx1ZTsKLSAgICAKKwogY2xhc3MgU3R5bGVTaGFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHls
ZVNoYWRlcj4gewogcHVibGljOgogICAgIHZpcnR1YWwgflN0eWxlU2hhZGVyKCkgeyB9CkBAIC00
Nyw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IGNzc1ZhbHVlKCkgY29uc3QgPSAwOwogICAgIAorICAgIHZpcnR1YWwgQ2FjaGVkU2hhZGVy
KiBjYWNoZWRTaGFkZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgCiBwcm90ZWN0ZWQ6CiAg
ICAgU3R5bGVTaGFkZXIoKQogICAgICAgICA6IG1faXNDYWNoZWRTaGFkZXIoZmFsc2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119450</attachid>
            <date>2011-12-15 10:10:02 -0800</date>
            <delta_ts>2011-12-16 14:11:57 -0800</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug73317_2.patch</filename>
            <type>text/plain</type>
            <size>76815</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNjI1NWE1Li4wNmRkZWNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTIt
MTUgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gQWRkIEZFQ3VzdG9tRmlsdGVyIHRoYXQgcmVuZGVycyBjdXN0b20gZmlsdGVy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMv
ZmlsdGVycy9lZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY3Nz
My9maWx0ZXJzL2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBj
c3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL2ZyYWdtZW50LnNoYWRlcjogQWRkZWQuCisgICAgICAgICogY3NzMy9m
aWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXguc2hhZGVyOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL3ZlcnRleF9kZXRhY2hlZC5zaGFkZXI6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL3drMi9Ta2lwcGVkOiBXZWJLaXQyIGhhcyBubyBvcHRpb24gdG8gZm9yY2UgZW5h
YmxlIFdlYkdMIHlldC4KKwogMjAxMS0xMi0xNSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6ICNoZXggY29sb3JzIGFyZSBu
b3QgaGlnaGxpZ2h0ZWQgaW4gQ1NTIGZpbGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3Mz
L2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvZWZmZWN0LWN1c3RvbS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBiOTQ5MzBlZDkz
MTI0OTIwNjM2MGM3YWE3OTg0N2VhZjdkOWUyNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTM1
OTUKemNtZUhPWEg9OHZ3aGwhQkw5aC13RDhVKmxWSnJraDIhZWBeTl5ucm4wVEt7X2FTJWNpMm9P
U2EwOHRAZ0FxdHIyCnphRDx+JiFJNkBOQW1SdiEzX18lWlcoYmYjMDshT35gSXZocHU2ekY3eVk0
IUZAK1psKypJUz54X3B8cj0/a3tPPgp6dH1hV0xlN14oKTB4ZG0kP0M/KEBrZDZmaXE8djAqRihB
b356OFZJNlpJMyF+RjNTSXgwUlB+fkQ8TDImKm5WNG8Kem4/UlVWeihxZUJUaWR8QilfWDRjVD9u
dWFAYmUzX18xfU1De2hkUVN6JG9VSW9Tb2Z7SjNDdnJNVzYjT1RAQzwmCnpWenJYYl5hcj1RdHh8
T2RKU3JRIWNfMylIZnh8REVwJT5rd29PNTNWZClCbzRKWkBkTjthRTw3aDxFbmUlQGNgYgp6ZFI7
ZnMyTzQ2Z15jLWdOakptRiY8TEBrZXlVSV5pYmJhR1YkO0p2JiZjMEkrY2IjZX1yR0lBOTdRKj8w
ZF57OFcKemJOZWMmJCpReU5oPXd9Rm49aDtTcj9yc2xvT2RkSUlkd0RUeUMxaUBJR1ZKVldCMyg5
V0FuRntxYkFZKWcpMEEhCno/RTZOYDE/dyM2X3g4V3BJQyVjP0NHU3NCRCtmQiRfPlg/clUpT1Ju
QD8zJGcwWFdEOD9UO1Y0bUEpd31hTm1CJQp6WT1iKHoyQiFsanN2Szx8VHBBRUF7cm15SD5JLUQr
dnBiZUk0O0NLejNDZ35CcX0pZyUwN3FWJU13UntaLWRJakMKelhJWGtrX0ZDN3JnY35mZEVqSH1k
MiZtJlY5SlBqYXNPbk1KSXFUdVB7ZlNPM25AZzUmckV3O3NFPEtuQyRSP2lPCnp6R0JPfCZEMEJM
Tzc+cDlHLTlaZW1PYXV3QSMlR0BNJjhIUnhBKGtvYyo1PHpGODdCOXZFOzsyUTROalJsWCtLZgp6
Yyl2cnpfRC1DbWlZNjZEKytidHcyKUhsSig+cHw3Y01mPjtebjdXXy0mRnI1PH1fVUFuQTZwYWJy
LWh7V0k3cjcKelcmNksqRTw1PyUrS29UezxGODltWEU1YjlvcCMmcVc9KlZmaVR4OTBUIXM4aj57
VlZSOElZNnV3bEZpT3RDSmZsCnpeRkUpUl95YSN5UUAlM1c0MHB4dlg8cTBjdGVUeDs3RSktYWVf
Q35le28pdWg7NjM4JVkzM0V7az15UD4jVENRVwp6SkArUUpNNlduIVI4dTVDJTY0MntmPUQqNEJR
aWR7YEBrdyotam8hKyVifTN1LXR2flc8KiQ9fWFXN1VlWml0PVUKenU5PjwwZ1koYWk9JGxYRi1t
c25TYn5BKTVqPTlQbThTO2lRXis9UnZwVFhIYHtiSXxBTyZOOGo7dikkZzFvWFhoCnoyVUkyY3g/
ZSNMejVPQ0w/fXdrY2w9alM7LShTU3RCbEpLZF84SEd0dH1UQi1mMDV7K3p3X25xez1mY001cnFL
aAp6WXpjOEMzSyFrd0ZhT09qO2Q7c0xHKHpEOCYpYk5kT1ZBSUVrVks+N3JOX0R+JWpeZ2ZJPE1T
MmVNVDshQjVqMmAKeiFwNiokXjt9RVgqflE0VXdRWjQ+cmpQZXRgQz9GKGZaV0FoLTIqO0lzIVlu
WD4rdnRQNUFtekg+RUtiPTZKX2FUCnp1MD01Xj4+IyYzQDk1KXYhNVBOcERIY0U1dzR9NHszMkZ9
cldDMSNVX3xUYkh0JTwlOXd8cjg0OG1JUVk7dlczSQp6Ris1bFF4dHJyLWl6UHBLblhrQnplNkgq
PXRqdz1yaDRucDgqeUM3ZHtMKkJuPCN2YWt0U0d6U3U0VlkhWkB5YDwKemB9OXZnRSptKHo0WVJN
TUN1OHthcD8hcGhrdTdqaDF9Q3U7cDdsS0xMJDBrZjJGYGRgdHFSeWh6RSs+Wl8+UTUhCnolKSY3
VnFAfUczezBLQUN7bWA0ekN8RVpDQEtxYFVZdzVnIVgjWkQ+emxEe2pZQytXQHBVa2lTY2VpPD0m
S3U0Kgp6UHVsO3hDaXFCKnQwMHEqRHwwVGd1Wjt9V15VVDJkdXxJYnxmdElaSXd6YW5CJilnXlkq
ekxvYkxyYnVOX2ItVF4KejhPN19mTmlpVzQqRX08UFBgMG40TT57c0BmaGlIfWNiUU9PMyZyQFRY
PjNHbk9mS1o4ciZrdUZHSilrQHBNWTJqCnptWDcleUxZUzFvbHI/ZUR2OXpFUiZNNXttQTY0S3xE
KCE5UyoqWTtPdCNva147TXVSRzRCV092SVlRMXZWMUxEbwp6T2ZgQ2ZXNHBOfSpnMGoybCFsJn1H
KVc4LSt0UH0hI21pPTUzcHVDPmBEa1NLZVAmTnlIQy1lVHVtaHtoQ3p4RjUKekJFZWt6XzVwfVJ7
UHt4MmsqX0VfYG9iMCYtUnxRWiszYDIlZT91Qy0tOFlGQlApdTYyMDVpVUNtNmM8M2gzUFozCnpE
dEokbXc5MUtwI1FtZ0pQcWNlMnNIKzl9a0J3aW9XbD1gZFVpPVEoSWV2V2tmKEFkSSgkY3ZJaV9n
NVZwckttaQp6a35ST25DfDhCK0Q0ZkRKSkNFU010M0hYfGVTajdxNm5Raylkc1VkYnFQNlU0MGVs
Z2FtX29rcDMxQkkzP1ArVEIKemRTYz4jNTwlSUFNTE1eN3MpQStqK1AoNC10dlJmcmdqaHB+WCtB
UzJrIy1YT2tqXmVHNDNMUm80KmIjTGtBelAmCnpMVnYlNXBkPGh6Y3FpPEEzWSMxNkErayVzZVli
ITRKT2BrUVdoTzZlPCVGMkM4ZTFFXlJ2ZVopTk9KUV9QcVloUAp6RGRYJV4qTylKWU1uTCM8P0xf
VkolKHIlR1dSYHQ/MXdhI1duej9CSzJTP3ZMSz1odylSaCFtdHBuVGhFZ2lmWjUKej9MejJRRlNB
K1FuNFplWkR0UEQlTWNuTHxAQnMtJVRSa2lDbX1Wam9hb3FtUF4zSX5sI0Z3WXwqcztrJE5Pd21V
CnpyKHRqcDw7c2tSOG5CakNsTXVAU28qSEpWMUVSVXArQHxKJHdQZTdNdnFgfG1fYmV3JndPQX5m
bEpeWWluVi0qKwp6cUd5K008QS1zbzstPGwyUk9OPHUoUSgrfXA+fT5AeVU7cGV1SjVubmtKMmdP
Ukp2dG5xVW5WRXZ3TjRBKil6eDsKemRCSV9XQEdiS0ljZkYxTzdUfElLJT5YeXp3KlhmRnFXXnJX
ZDRSRkRpZygrbFVxQElTO1BXRClxZ2Q0ZWwyMEY/Cno5MlhgZnhIPitIV2pgIXIrMTlYPCs0TW1T
JUp1K1gjVUFvI3JNJmUxLWlKUlZ6fSZLdzFtczRFJDlYfj8tSCZEMQp6bHpjaXtvLSUxLVIybmxr
VHt7e01KfnMmX05lNCEkZGMtamQzUWxGUStifjM4N3NoMF9OcVVMJjxGc0l1bm1SYGkKem1LP09N
WCpTNStDcykxTCloP3V1PitUXm5aLUw4Um07UXtEbFRrYWhrIVZsMUVILUo3aUQma2xiPGlgJnlg
RHIpCnolR0VFdHhualhqRXl9an5DS1d4aUlsOTBVTndzUEVZYitwajxHLXQyVWNibS1qWWFUfDQ3
R24tZ2x6PFRLQ1BAfgp6K1g4IU5YJEokTT4+S3t5XmFFenBpcjgzV2BRdGFrWDlGdENBNm9OR0tn
ZFNrZV94Z3IjWWZpZDU8MnNGa2hpI18Kek4hKnFHazt0dE5sMSVmQ2p5NEd2YjR2Um51MUw3N2BZ
dWRgKiVOM31AfVBLPEBrNHlDVUo1Z1oxZiUlTFVSP0lmCnpTWUtfZ00qYFF0O2FGc2EqfmZsZnhK
KGZVYjMmIVNke0oyXj5nZmQ+QTlFIUNicil5MkkoNUZBUktOPjJGXn1WNwp6bT8+aExeamJeOVNY
JHI1NCs2UTBQR15PPnRweigyR3I4ZjhralotaGlvNyVIPih1ZTtHYTZ0IWhGcnszVFFCYigKenV1
YjxYYHB5ZUdfaGtTU3Rlais0c09gRFQ5WUQ7clZ9c0VHNzxsRChSKm4pMXN4P0RSb1VRPSljNHQk
cSlWTkIjCnowMUQ8TytTe3F3Ky0/aU49S29fK18oNWVJIWhGIzhWYyhkSDdsQjxoKGtxfH1eYEx+
MzgwSXVAbHA2MDZ3N1pFYAp6Wl4hNnwqYHNaP0t0cEchZFp7dF9XUnxiUXJobHkwT0g2MGE0ND9N
TUBMb2ZUMzc7WHtDcGFYSSl8SFdgKG0kcT4KejtsekItUWxZKWdMSEBLciRlOSt6blY2SkhLTUpV
KzFaLSs5bVZBSSF2YElKR3JJdEdwWE5wOEtlTVZkbTlCfnx9CnpeJndAbVJsQG9IcnwtKHU7OTBu
Pnd2cUhwcENiOzMwXjh7ZyNsdlVyTFhFLUdfdURYZl8yZ2RqVEB+QyVZbXhscwp6PjJkQjFlVCt1
ZldlVipSJmh9NndJZ0ErKlZ8T2J5VG5TK1lXdHJ0dzEqTzJsJCNoNE9TMExPZXB8TT1tdWR1fG0K
ekpZXjQtKGhrMCMremJyUHlIK2NiYX4lJFB3JkRTSnk7alRHO1khKFBvTClXckcwNyhvMmpsaGJr
I31NZlpRPGBACnptPVJKZyRFUVotMUppcDRxcEt0KCU4QGtPM355UlduNStNX0Q0ciFjPXopOytV
ejZfUVEjJlhxVHpfKGFneTtnQAp6V3MwMTg7SDRZXnluVVI0TzYpKDtIMnBeKktqSm5wVG0xR2k3
MT5gaHtwe09Wcy1GdTRrJTtjNHU/Y0VUI0BxJSgKemRpTil1c2xDKURMYCZ6KE9FWkI/WjMyQFBm
WEh9OWtOY0t8QER0VnpTa29vZ3o/OHVQeFY/dzhEe3hJeU9geiVzCnpjR1RwcDhEMiQmOVQ2XlUt
a1RRJD16Ty1TKW4zez04Y3ZSbmomXy1CbyNXaWg8SStUYndjc1loMT5FdEQhZk8+LQp6P0N3ODte
TW9aUmFeR3VKaGk4OGtfO3MqcEJKVntUeUFpVjl7S01vJDwocmo9VFAzI2t7NjhWJmJ3MjFnbU9I
fEoKemUrXjRTRWcmYnhNYlFlI2luPnVNWmtFVFJoVHdjb2x9WilEaXFnVjdSNiN3b0NvfVZ8eyQo
JH5MfjJJY057N1kzCnpUJl80Oy08TGh1ekpwS1VsT1o9SVdFcUFzZ0xmSUdvNlhoa2ZuOHhVMSRm
YGVFUkl0VzJ0UC14PHNJIzZOKn1+OQp6Z1FQcFhRPjZSN2s9Uy18MzEzIU4qTzRSak5DPmFUPlle
fT5NVVJMbjk5a0hZN2woPStjRjNxeUJ2SlV0SVJsPDIKekpmZXkhJmpPRDwwKVlKdCNqblJiPnc7
Y3hPIyRLVSs8bGRWTX4lQ1VRe2l7JVF+OXNNNmckeENzdlJpSFhReE5aCnp1SmRPPil6T2l3c0FZ
YWh5UUl7cVVpMXRsSn5oMkxeZiZyMCgtYkJKcj0mKWpeekpFKzBXfDIjKkcrLU8jN245Ngp6OGBM
Vitidjt4SXZSeEVxYShzYXUyMyVLTElabDJXdX03PCQ2PDdlZ3M5bHF+UypfdiVBYz4wa1JZLSFW
QSNxPTMKejw+OyFfPWQzb0REKSZYTTNpNjxgM3FAKjY8biFMTG4rZ0puVWk3KjV2KyRUJFE5VWp1
eF8qU009WVNKIVYpbTx3CnpUVSU1Yz1EPjxsRiMjU1lTX3c1TmpiWSE8MUp9JC0mPENaUmNJbDww
REIqeUt2WEEkSCVAOUtPYWA8eW52bUVwQgp6LUhwSTcmZUY8Kzx7ciVPNmFJcm8lOX1XQWQ1a01B
P2poQ3lEKl58KCFpOF4mX35iY0dtciZOaSRXZypsMnVkKzgKemopMEJNO3QjamQ1N3JESXV5R1FN
ezcqKjByNj9MJShhYU9kSj5tOUUoIXRocl5VbVlDKE42UjF2Mj5uMkA9R2dtCnpjNS1XKSR8N1VN
WEEzS05gPTJRJChHTH5+NjhNMzNAcypJI3tVMjY4SXgmd1pkaWV1bz89UjwjdiRfeVZTfWlOYwp6
cUZubmJOIUdkP1I7KkNgVlJyPk5GfD8taEkyZ3xHX0YrfDElVnc/az1LQD0kaXF8fWRGTmV0UzFh
bjRUUTtZKkUKelBja15aTzRsPyg/I3lAJkYkeVptRGA5UFFedV43eV8oYlI0T14mYG54YERWd3tO
X0QmZHx1YztiNVZofm40dVAyCnowIXlxRiFFREo0PWNpfnpAWFBwUDgwa3t0dSF3cm90VkNLbi1I
bj0yeXorfUgwM3p2UT1zPkJqKmlLfW00akxEQQp6amMlVmpkc1ZIO1FOdU1CTkBJSCt3TjAkbSgl
SX5PfEZOMH5YMDthfFY+cWBpNypka3MoT1NALVhTUyNWR29EX1gKekhuKjF3cERLWmAqeyZTKVI1
WGxJPmtCSnomam8hOVlZSG5LYE90XllCekIxJTZob0RfTlI0MiF2YWsmVT9HK2QyCnozQTQhWj0y
NUIobnU/MkptRjZsJXFme19tTVFfOTRzdC1DRztLUGFNPjFfPWp1Q3EkQ083T21JSTVrbWomaj9j
dAp6eXdDSlJKQERiVGZvRGVGeU1XOyRkI0xLbylVfTsxNGxrUmhtOGBxKVNKUTJjQ2ZJMmZWTGlN
bTspe0A9bEZmSEUKelBZXzg3VX5rKiReLSNzPXlueFFIZ1p8eHVLdkkwMTdkVjg9cmlPdE5URWZV
SXA9ak5lPiRSYXZWcmY0NzI3cDRFCno2eWooSjJRUExCemdKclcjT0VUNCY5XnkrZnF0JEc7cGwy
bmFibiZqQS1XRXRDdFYwe0Jxa3NfYnV5UzQyczVUOAp6Vnh3dT8oaHJsckNKdnRoY3N+alF4ZVFC
PTw7T0UzRjtXVntQdXZGIVpCYGhZMVgoci1HSzZ8VGZpZH47JGc7ISYKemA4OVVreEc7UjQ7Tj80
ajJwbjhOR1MkK0NTY1hqdkhMUyFMbkZ1YGFPKyt3cUp8Q01gKn5pcmEmJDYxbjxFeyhwCnp2Vml5
fGVjNz42Wk94OUp3VjwoUmheXlllYkNiMDA2clNgfCtrbFVqJk9kcXtlTm8jJDFZaVJ0ZCs9KUJr
Nkw3Rwp6ajg9YG1DRlpLVjFiK3Y+PHpEeGxgd0pwUj9eO2xyPXs1KVRSQ2tpSmUpeyE8aGtCfVR6
fSUzSnpsbDNQMCNpTlAKemVPXjcpOF45bDhAazEqWVFwIztXeTdLaFpNUmk8U1dAX2Epd0NEejZW
YjZ+QGApVUBWS30ySUM4bjRtdCRVXmtqCnpGc21sa1hyaXdzQUpKckpucDlEZkpacHs8VWxHdDh1
cng9YHxHel54Ky02WjEyKCZ6QXsjXmpnJjRBe0w7d3U4MAp6T0I+QkttZ1p0bGJKZU4ye01CNUNZ
WUdJS2xGMyZER19ATnxIQV8/OSheTmIpSERGQ3VUPVNtNXxNQVRVbUR2ekIKWHF8R1A3VylrP2Y2
WF5JNipUV0BGekV9U1ImeVJTZAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzljNzEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSBAQAorICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0
LWN1c3RvbS5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0NDMxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20uaHRtbApAQCAt
MCwwICsxLDggQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworPC9zY3Jp
cHQ+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgncmVzb3VyY2VzL3Zl
cnRleC5zaGFkZXInKSB1cmwoJ3Jlc291cmNlcy9mcmFnbWVudC5zaGFkZXInKSkiIHNyYz0icmVz
b3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IGN1c3Rv
bSh1cmwoJ3Jlc291cmNlcy92ZXJ0ZXguc2hhZGVyJyksIDUgMTApIiBzcmM9InJlc291cmNlcy9y
ZWZlcmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCdy
ZXNvdXJjZXMvdmVydGV4X2RldGFjaGVkLnNoYWRlcicpIHVybCgncmVzb3VyY2VzL2ZyYWdtZW50
LnNoYWRlcicpLCAyIDIgZGV0YWNoZWQpIiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4K
KzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20obm9uZSB1cmwoJ3Jlc291cmNlcy9m
cmFnbWVudC5zaGFkZXInKSkiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9mcmFnbWVudC5zaGFkZXIg
Yi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2ZyYWdtZW50LnNoYWRlcgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmQwNzM0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9mcmFnbWVudC5zaGFkZXIKQEAg
LTAsMCArMSw3IEBACitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjMiB2X3Rl
eENvb3JkOwordW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOwordm9pZCBtYWluKCkKK3sKKyAg
ICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKSArIDAuMzsK
K30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
c3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3ZlcnRleC5zaGFkZXIgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL3ZlcnRleC5zaGFkZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNzhkOGM0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9yZXNvdXJjZXMvdmVydGV4LnNoYWRlcgpAQCAtMCwwICsxLDEzIEBACitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK2F0dHJpYnV0ZSB2
ZWMyIGFfdGV4Q29vcmQ7CisKK3VuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzIgdl90ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9
IHVfcHJvamVjdGlvbk1hdHJpeCAqIChhX3Bvc2l0aW9uICsgdmVjNCgwLjEsIDAuMCwgMC4wLCAw
LjApKTsKKyAgICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4X2RldGFjaGVkLnNoYWRlciBiL0xh
eW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4X2RldGFjaGVkLnNoYWRlcgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzY4YTNjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXhfZGV0YWNoZWQu
c2hhZGVyCkBAIC0wLDAgKzEsMTQgQEAKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCithdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsKK2F0dHJp
YnV0ZSB2ZWMzIGFfdHJpYW5nbGVDb29yZDsKKwordW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbk1h
dHJpeDsKK3ZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworCit2b2lkIG1haW4oKQoreworICAgIGds
X1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uTWF0cml4ICogKGFfcG9zaXRpb24gKyB2ZWM0KGFfdHJp
YW5nbGVDb29yZC54IC8gNC4wLCBhX3RyaWFuZ2xlQ29vcmQueSAvIDQuMCwgMC4wLCAwLjApKTsK
KyAgICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQK
aW5kZXggYjY3NmMwZi4uZjRiY2RiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKQEAgLTE4
OSw2ICsxODksNyBAQCBjb21wb3NpdGluZy92aWRlby1wYWdlLXZpc2liaWxpdHkuaHRtbAogCiAj
IFdlYktpdDIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlCiAj
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxOTc+Citjc3MzL2Zp
bHRlcnMvY3VzdG9tLWZpbHRlci5odG1sCiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1v
YmplY3QtYXR0YWNobWVudC5odG1sCiBmYXN0L2NhbnZhcy93ZWJnbC9nbC12ZXJ0ZXgtYXR0cmli
LXplcm8taXNzdWVzLmh0bWwKIGZhc3QvZXZlbnRzL3BhZ2VoaWRlLXRpbWVvdXQuaHRtbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCA0ZTJhMjQ5Li5jMjY1M2QxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMTEwOCwxMiArMTEwOCwxNSBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcAogCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNo
LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb3NpdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bnZvbHZlTWF0cml4LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21G
aWx0ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGlu
Zy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDFlMWI1MjkuLjhmODU3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAx
MS0xMi0xNSAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFkZXJzXSBBZGQgRkVDdXN0b21GaWx0ZXIgdGhhdCByZW5kZXJzIGN1c3RvbSBm
aWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MzMxNworCisgICAgICAgIFVzaW5nIGEgR3JhcGhpY3NDb250ZXh0M0QgdG8gcmVuZGVyIHRoZSBz
aGFkZXJzIGluIEdQVSBhbmQgcmVhZCB0aGUKKyAgICAgICAgcmVzdWx0IGJhY2sgYW5kIHVzZSBp
dCBpbiB0aGUgc29mdHdhcmUgZmlsdGVycyBwaXBlbGluZS4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBjc3MzL2ZpbHRlcnMvZWZmZWN0LWN1
c3RvbS5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2hhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNoYWRlcjo6Q2Fj
aGVkU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNoYWRlcjo6c2hhZGVyU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNoYWRlcjo6ZGF0YSk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YWRk
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9tRmlsdGVy
TWVzaCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjp+Q3VzdG9tRmlsdGVy
TWVzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJN
ZXNoLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNo
YWRlci5oLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OnZlcnRpY2VzQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OmJ5dGVzUGVyVmVydGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OmVsZW1lbnRzQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OmluZGljZXNDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21GaWx0ZXJNZXNoOjptZXNoQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZp
bHRlck1lc2g6Om1lc2hUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclNoYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
RmlsdGVyU2hhZGVyOjpkZWZhdWx0VmVydGV4U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6ZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6Q3VzdG9tRmlsdGVyU2hhZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6fkN1c3RvbUZpbHRlclNoYWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFk
ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3Rv
bUZpbHRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3J0aG9NYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OkZFQ3VzdG9tRmlsdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVD
dXN0b21GaWx0ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpG
RUN1c3RvbUZpbHRlcjo6ZHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUN1c3RvbUZpbHRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6dG9Db2x1bW5NYWpvckZsb2F0QXJyYXkpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3RPYnNlcnZlcjo6fkZpbHRlckVmZmVjdE9ic2VydmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJH
TEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRl
ckVmZmVjdFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVy
OjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6bm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6ZmlsdGVyTmVlZHNSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkU2hhZGVyOjpjYWNoZWRTaGFkZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVNoYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTaGFkZXI6OmNhY2hlZFNoYWRlcik6CisKIDIwMTEtMTItMTUgIENocmlzIE1hcnJpbiAg
PGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGVkIGVycm9yIGluIFRhcmdldC5wcmku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwNzBjM2E3Li45MTk0ZDA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI1MzYsNiArMjUzNiwxMCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Jl
ZlB0ckNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UmVmUHRyQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
VHJhbnNmb3JtYXRpb25NYXRyaXhDYWlyby5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
U2hhZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlz
dGFudExpZ2h0U291cmNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBcCkBAIC0yNTQ4LDYgKzI1NTIsOCBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0
aW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNw
bGFjZW1lbnRNYXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGZkYjFmNDYuLjgzZjQwYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQpAQCAtMjA3NywxMSArMjA3NywxNCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5o
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIFwKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBcCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb2xvck1hdHJpeC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRy
aXguaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmggXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaCBcCkBAIC0zMjM1LDEyICszMjM4
LDE1IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YU0xUPTEpIHsKIAogY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX0ZJTFRFUlM9MSkgewogICAgIFNPVVJDRVMgKz0gXAorICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwIFwKKyAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3BwIFwKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwIFwKICAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBcCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIFwKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwIFwKKyAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBcCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwIFwKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCA5Y2Y2Njk5Li41MGVmNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjY3LDYgKzM2Njcs
MTAgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VFZmwuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW50UG9pbnRFZmwuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW50UmVjdEVmbC5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNo
YWRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyU2hhZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RGlzdGFudExpZ2h0U291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCcsCkBAIC0zNjc5LDYgKzM2ODMsOCBAQAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4Lmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmls
dGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNl
TGlnaHRpbmcuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlmZnVzZUxpZ2h0aW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOWMxYzY0OS4uYTk5YjgxMSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5NjEyLDYgKzI5NjEyLDIy
IEBACiAJCQkJCU5hbWU9ImZpbHRlcnMiCiAJCQkJCT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJNZXNoLmNw
cCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlck1lc2guaCIKKwkJCQkJ
CT4KKwkJCQkJPC9GaWxlPgorICAgICAgICAgICAgICAgICAgICA8RmlsZQorCQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlclNoYWRlci5j
cHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJTaGFkZXIuaCIKKwkJ
CQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXERpc3RhbnRMaWdodFNvdXJjZS5jcHAiCiAJCQkJCQk+
CiAJCQkJCTwvRmlsZT4KQEAgLTI5NjY4LDYgKzI5Njg0LDE0IEBACiAJCQkJCQk+CiAJCQkJCTwv
RmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcZmlsdGVyc1xGRUN1c3RvbUZpbHRlci5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJ
CQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVy
c1xGRUN1c3RvbUZpbHRlci5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcRkVEaWZmdXNl
TGlnaHRpbmcuY3BwIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmYwMmI0MC4uNzVlNTAz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTM5MCw2ICsxMzkwLDEzIEBACiAJCTUwMzhCRjI4MTQ3NTBGMTkwMDk1RTBEMSAv
KiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUwMzhCRjI0MTQ3NTBGMTkwMDk1RTBEMSAvKiBDdXN0b21GaWx0ZXJP
cGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MDhDQ0E0RjEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEQxM0NGMTA2
QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLzsgfTsKIAkJNTA4Q0NBNTAxM0NGMTA2
QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRl
ckZsb3dUaHJlYWQuY3BwICovOyB9OworCQk1MEQ0MDNDNzE0NzY4Qzk0MDBEMzBCQjUgLyogRkVD
dXN0b21GaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTBENDAzQzUxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCAqLzsg
fTsKKwkJNTBENDAzQzgxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDNDNjE0NzY4Qzk0
MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCAqLzsgfTsKKwkJNTBENDA1RjkxNDdEMzFGMzAw
RDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA1RjcxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZp
bHRlck1lc2guY3BwICovOyB9OworCQk1MEQ0MDVGQTE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9t
RmlsdGVyTWVzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTBENDA1RjgxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guaCAqLzsgfTsK
KwkJNTBENDA2MTExNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDYwRjE0N0Q0
OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCAqLzsgfTsKKwkJNTBENDA2MTIx
NDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2MTAxNDdENDlERTAwRDMwQkI1IC8q
IEN1c3RvbUZpbHRlclNoYWRlci5oICovOyB9OworCQk1MEQ0MDY3RDE0N0U0MEQ4MDBEMzBCQjUg
LyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUwRDQwNjdDMTQ3RTQwRDgwMEQzMEJCNSAvKiBGaWx0ZXJFZmZlY3RP
YnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUwRTU2NkQ2MTM5RTM4QzUwMDIxNDQzMyAvKiBDU1NXcmFwU2hhcGVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMUJBQUIxMTM5NTExNEIw
MEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmNwcCAqLzsgfTsKIAkJNTEwMTg0NjkwQjA4NjAyQTAw
NEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwMTg0NkEw
QjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hl
ZFBhZ2UuY3BwICovOyB9OwpAQCAtODYyMyw2ICs4NjMwLDEzIEBACiAJCTUwOENDQTREMTNDRjEw
NkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRmxvd1RocmVhZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwQjQyMTU3MTQ2OTc2OTYwMDg3RTYwNCAvKiBX
ZWJLaXRDU1NTaGFkZXJWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJLaXRDU1NTaGFkZXJWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0
MDNDNTE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRkVDdXN0b21GaWx0ZXIuY3BwOyBwYXRoID0gZmlsdGVy
cy9GRUN1c3RvbUZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwRDQw
M0M2MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBGRUN1c3RvbUZpbHRlci5oOyBwYXRoID0gZmlsdGVycy9GRUN1c3Rv
bUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0MDVGNzE0N0QzMUYz
MDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBDdXN0b21GaWx0ZXJNZXNoLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9t
RmlsdGVyTWVzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwRDQwNUY4MTQ3
RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2guaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmls
dGVyTWVzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0MDYwRjE0N0Q0OURF
MDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlclNoYWRlci5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1
c3RvbUZpbHRlclNoYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwRDQw
NjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyU2hhZGVyLmg7IHBhdGggPSBmaWx0ZXJz
L0N1c3RvbUZpbHRlclNoYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0
MDY3QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBh
Z2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2Fj
aGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQ
YWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMkQxMDMxNjVFRTAw
NDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTc3MDgsNiArMTc3MjIsMTIgQEAKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTQ5RUNFQjVDMTQ5OTc5MEQwMENERDNBNCAvKiBhcm0gKi8sCiAJCQkJMTk4NDFCRkExMzY4
MzZBMTAwNkVCQkI5IC8qIGFybSAqLywKKwkJCQk1MEQ0MDYwRjE0N0Q0OURFMDBEMzBCQjUgLyog
Q3VzdG9tRmlsdGVyU2hhZGVyLmNwcCAqLywKKwkJCQk1MEQ0MDYxMDE0N0Q0OURFMDBEMzBCQjUg
LyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggKi8sCisJCQkJNTBENDA1RjcxNDdEMzFGMzAwRDMwQkI1
IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwICovLAorCQkJCTUwRDQwNUY4MTQ3RDMxRjMwMEQzMEJC
NSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi8sCisJCQkJNTBENDAzQzUxNDc2OEM5NDAwRDMwQkI1
IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCAqLywKKwkJCQk1MEQ0MDNDNjE0NzY4Qzk0MDBEMzBCQjUg
LyogRkVDdXN0b21GaWx0ZXIuaCAqLywKIAkJCQlBMUUxMTU0MzEzMDE1QzNEMDA1NEFDOEMgLyog
RGlzdGFudExpZ2h0U291cmNlLmNwcCAqLywKIAkJCQk4NDczMEQ1QTEyNDhGMEIzMDBEM0E5Qzkg
LyogRGlzdGFudExpZ2h0U291cmNlLmggKi8sCiAJCQkJQTc1RThCODAwRTFERTJENjAwN0YyNDgx
IC8qIEZFQmxlbmQuY3BwICovLApAQCAtMjA5MjMsNiArMjA5NDMsNyBAQAogCQlGNTIzRDJGMzAy
REU0NDNCMDE4NjM1Q0EgLyogcmVuZGVyaW5nICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZm
ZWN0T2JzZXJ2ZXIuaCAqLywKIAkJCQk0MzkwNDZDMjEyREEyNUNFMDBBRjgwQTIgLyogbWF0aG1s
ICovLAogCQkJCUJDOEM4RkFBMEREQ0QyRjIwMEI1OTJGNCAvKiBzdHlsZSAqLywKIAkJCQkwODhD
MkY3NDEyMzkwMDgwMDAzRDY1Q0UgLyogc3ZnICovLApAQCAtMjQ4NDIsNiArMjQ4NjMsMTAgQEAK
IAkJCQlBMTBEQzc2QjE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzEyQzBDNDExNDZEQzZDQzAwMTZDOTExIC8qIE5vdGlmaWNhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEyOENBNkIxNDczMzE2MzAwNzRDNzJBIC8qIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUwRDQwM0M4MTQ3NjhDOTQwMEQzMEJC
NSAvKiBGRUN1c3RvbUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTBENDA1RkExNDdEMzFG
MzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guaCBpbiBIZWFkZXJzICovLAorCQkJCTUwRDQw
NjEyMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUwRDQwNjdEMTQ3RTQwRDgwMEQzMEJCNSAvKiBGaWx0ZXJFZmZlY3RPYnNlcnZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0FBNTFERDYxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rv
ck1lbW9yeUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDM4QkYyODE0NzUwRjE5MDA5NUUw
RDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTNGQUQz
OTE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNzcyOSw2ICsyNzc1NCw5IEBACiAJCQkJN0FBNTFCNkYxNDgzQjYxNjAwQUQy
NzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTBEQzc2
QTE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMTI4Q0E2ODE0NzMzMTUyMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MEQ0MDNDNzE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21G
aWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTBENDA1RjkxNDdEMzFGMzAwRDMwQkI1IC8q
IEN1c3RvbUZpbHRlck1lc2guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTBENDA2MTExNDdENDlE
RTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QUE1MURENTE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNkUzRkFEMzgxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVz
c2VkVGV4dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdFMTE2QjExNDg5QzlBMTAwRUM1
QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAppbmRleCAxZDhmNTQwLi4xM2JkYTFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcApAQCAt
MzIsMTEgKzMyLDE0IEBACiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogCiAjaW5jbHVkZSAiQ2Fj
aGVkU2hhZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVGV4dFJl
c291cmNlRGVjb2Rlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZFNoYWRlcjo6
Q2FjaGVkU2hhZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogICAg
IDogQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2VSZXF1ZXN0LCBTaGFkZXJSZXNvdXJjZSkKKyAgICAs
IG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3NoYWRl
ciIpKQogewogfQogCkBAIC00NCw2ICs0NywyNCBAQCBDYWNoZWRTaGFkZXI6On5DYWNoZWRTaGFk
ZXIoKQogewogfQogCitjb25zdCBTdHJpbmcmIENhY2hlZFNoYWRlcjo6c2hhZGVyU3RyaW5nKCkK
K3sKKyAgICBpZiAoIW1fc2hhZGVyU3RyaW5nICYmIG1fZGF0YSkgeworICAgICAgICBtX3NoYWRl
clN0cmluZyA9IG1fZGVjb2Rlci0+ZGVjb2RlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSk7CisgICAgICAgIG1fc2hhZGVyU3RyaW5nICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsKKyAgICB9
CisKKyAgICByZXR1cm4gbV9zaGFkZXJTdHJpbmc7Cit9CisKK3ZvaWQgQ2FjaGVkU2hhZGVyOjpk
YXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
K3sKKyAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKQorICAgICAgICBtX2RhdGEgPSBkYXRhOworCisg
ICAgQ2FjaGVkUmVzb3VyY2U6OmRhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCmluZGV4IDhkZWFkMDEuLmNj
MzhmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgKQEAg
LTM2LDEwICszNiwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFRleHRSZXNv
dXJjZURlY29kZXI7CisKIGNsYXNzIENhY2hlZFNoYWRlciA6IHB1YmxpYyBDYWNoZWRSZXNvdXJj
ZSB7CiBwdWJsaWM6CiAgICAgQ2FjaGVkU2hhZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
ICAgIHZpcnR1YWwgfkNhY2hlZFNoYWRlcigpOworICAgIAorICAgIGNvbnN0IFN0cmluZyYgc2hh
ZGVyU3RyaW5nKCk7CisgICAgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIAorcHJpdmF0ZToKKyAgICBSZWZQdHI8VGV4dFJlc291
cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOworICAgIFN0cmluZyBtX3NoYWRlclN0cmluZzsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyTWVzaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmM3M2VhYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCkBAIC0wLDAgKzEsMTgzIEBA
CisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
ICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiQ3VzdG9t
RmlsdGVyTWVzaC5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKworI2RlZmlu
ZSBERUJVR19DVVNUT01fRklMVEVSX01FU0ggMAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyB2b2lkIGFkZFBvaW50KGludCBpLCBpbnQgaiwgVmVjdG9yPGZsb2F0PiYgdmVydGljZXMs
IFZlY3Rvcjx1aW50MTZfdD4mIGluZGljZXMsIGZsb2F0IGhTaXplLCBmbG9hdCB2U2l6ZSwgZmxv
YXQgbWhTaXplLCBmbG9hdCBtdlNpemUsIGZsb2F0IG1lc2hCb3hYLCBmbG9hdCBtZXNoQm94WSwg
aW50IGRpLCBpbnQgZGosIGludCB0cmlhbmdsZSkKK3sKKyAgICBkaSArPSBpOworICAgIGRqICs9
IGo7CisgICAgdmVydGljZXMuYXBwZW5kKGhTaXplICogZGkgLSAwLjVmICsgbWVzaEJveFgpOwor
ICAgIHZlcnRpY2VzLmFwcGVuZCh2U2l6ZSAqIGRqIC0gMC41ZiArIG1lc2hCb3hZKTsKKyAgICB2
ZXJ0aWNlcy5hcHBlbmQoMC4wZik7CisgICAgdmVydGljZXMuYXBwZW5kKDEuMGYpOworICAgIHZl
cnRpY2VzLmFwcGVuZChoU2l6ZSAqIGRpICsgbWVzaEJveFgpOworICAgIHZlcnRpY2VzLmFwcGVu
ZCh2U2l6ZSAqIGRqICsgbWVzaEJveFkpOworICAgIHZlcnRpY2VzLmFwcGVuZChtaFNpemUgKiBk
aSk7CisgICAgdmVydGljZXMuYXBwZW5kKG12U2l6ZSAqIGRqKTsKKyAgICB2ZXJ0aWNlcy5hcHBl
bmQoaSk7CisgICAgdmVydGljZXMuYXBwZW5kKGopOworICAgIHZlcnRpY2VzLmFwcGVuZCh0cmlh
bmdsZSk7CisgICAgaW5kaWNlcy5hcHBlbmQoaW5kaWNlcy5zaXplKCkpOworfQorCitDdXN0b21G
aWx0ZXJNZXNoOjpDdXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1
bnNpZ25lZCBjb2xzLCB1bnNpZ25lZCByb3dzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246
Ok1lc2hUeXBlIG1lc2hUeXBlKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3Zl
cnRpY2VzQnVmZmVyKDApCisgICAgLCBtX2VsZW1lbnRzQnVmZmVyKDApCisgICAgLCBtX21lc2hC
b3gobWVzaEJveCkKKyAgICAsIG1fbWVzaFR5cGUobWVzaFR5cGUpCit7CisgICAgdW5zaWduZWQg
ZmxvYXRzUGVyVmVydGV4OworICAgIAorICAgIFZlY3RvcjxmbG9hdD4gdmVydGljZXM7CisgICAg
VmVjdG9yPHVpbnQxNl90PiBpbmRpY2VzOworCisgICAgdW5zaWduZWQgaFBvaW50cyA9IGNvbHMg
KyAyOworICAgIHVuc2lnbmVkIHZQb2ludHMgPSByb3dzICsgMjsKKworICAgIHVuc2lnbmVkIGhT
cGFjZXMgPSBjb2xzICsgMTsKKyAgICB1bnNpZ25lZCB2U3BhY2VzID0gcm93cyArIDE7CisgICAg
ICAgIAorICAgIGZsb2F0IGhTaXplID0gbWVzaEJveC53aWR0aCgpIC8gaFNwYWNlczsKKyAgICBm
bG9hdCB2U2l6ZSA9IG1lc2hCb3guaGVpZ2h0KCkgLyB2U3BhY2VzOworCisgICAgZmxvYXQgbWhT
aXplID0gMS4wIC8gaFNwYWNlczsKKyAgICBmbG9hdCBtdlNpemUgPSAxLjAgLyB2U3BhY2VzOwor
ICAgIAorICAgIGZsb2F0IG1lc2hCb3hYID0gbWVzaEJveC54KCk7CisgICAgZmxvYXQgbWVzaEJv
eFkgPSBtZXNoQm94LnkoKTsKKyAgICAKKyAgICBtX2luZGljZXNDb3VudCA9IGhTcGFjZXMgKiB2
U3BhY2VzICogMiAqIDM7IC8vIDIgdHJpYW5nbGVzIHBlciBxdWFkLCAzIGluZGljZXMgcGVyIHRy
aWFuZ2xlCisgICAgaW5kaWNlcy5yZXNlcnZlQ2FwYWNpdHkobV9pbmRpY2VzQ291bnQpOyAKKyAg
ICAKKyAgICBpZiAobWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCkg
eworICAgICAgICBmbG9hdHNQZXJWZXJ0ZXggPSA4OworICAgICAgICAvLyBUcmlhbmdsZXMgc2hh
cmUgdGhlaXIgcG9pbnRzLgorICAgICAgICB2ZXJ0aWNlcy5yZXNlcnZlQ2FwYWNpdHkoaFBvaW50
cyAqIHZQb2ludHMgKiBmbG9hdHNQZXJWZXJ0ZXgpOworICAgICAgICAKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBqID0gMDsgaiA8IHZQb2ludHM7ICsraikgeworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGhQb2ludHM7ICsraSkgeworICAgICAgICAgICAgICAgIHZlcnRpY2Vz
LmFwcGVuZChoU2l6ZSAqIGkgLSAwLjVmICsgbWVzaEJveFgpOworICAgICAgICAgICAgICAgIHZl
cnRpY2VzLmFwcGVuZCh2U2l6ZSAqIGogLSAwLjVmICsgbWVzaEJveFkpOworICAgICAgICAgICAg
ICAgIHZlcnRpY2VzLmFwcGVuZCgwLjBmKTsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNlcy5hcHBl
bmQoMS4wZik7CisgICAgICAgICAgICAgICAgdmVydGljZXMuYXBwZW5kKGhTaXplICogaSArIG1l
c2hCb3hYKTsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNlcy5hcHBlbmQodlNpemUgKiBqICsgbWVz
aEJveFkpOworICAgICAgICAgICAgICAgIHZlcnRpY2VzLmFwcGVuZChtaFNpemUgKiBpKTsKKyAg
ICAgICAgICAgICAgICB2ZXJ0aWNlcy5hcHBlbmQobXZTaXplICogaik7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICNkZWZpbmUgQUREX1BPSU5UKHgsIHkpIFwK
KyAgICAgICAgICAgIGluZGljZXMuYXBwZW5kKChqICsgeSkgKiBoUG9pbnRzICsgKGkgKyB4KSk7
CisgICAgICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHZTcGFjZXM7
ICsraikgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhTcGFjZXM7ICsr
aSkgeworICAgICAgICAgICAgICAgIEFERF9QT0lOVCgwLCAwKTsKKyAgICAgICAgICAgICAgICBB
RERfUE9JTlQoMSwgMCk7CisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDEsIDEpOworCisgICAg
ICAgICAgICAgICAgQUREX1BPSU5UKDAsIDApOworICAgICAgICAgICAgICAgIEFERF9QT0lOVCgx
LCAxKTsKKyAgICAgICAgICAgICAgICBBRERfUE9JTlQoMCwgMSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICN1bmRlZiBBRERfUE9JTlQKKyAgICB9IGVsc2Ug
eworICAgICAgICBmbG9hdHNQZXJWZXJ0ZXggPSAxMTsKKyAgICAgICAgLy8gVHJpYW5nbGVzIGRv
IG5vdCBzaGFyZSBhbnkgb2YgdGhlIHZlcnRleGVzLCBzbyB3ZSBuZWVkIGEgdmVydGV4IHBlciBp
bmRleC4KKyAgICAgICAgdmVydGljZXMucmVzZXJ2ZUNhcGFjaXR5KG1faW5kaWNlc0NvdW50ICog
ZmxvYXRzUGVyVmVydGV4KTsKKworICAgICAgICAjZGVmaW5lIEFERF9QT0lOVCh4LCB5LCB0cmlh
bmdsZSkgXAorICAgICAgICAgICAgYWRkUG9pbnQoaSwgaiwgdmVydGljZXMsIGluZGljZXMsIGhT
aXplLCB2U2l6ZSwgbWhTaXplLCBtdlNpemUsIG1lc2hCb3hYLCBtZXNoQm94WSwgeCwgeSwgdHJp
YW5nbGUpCisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHZTcGFjZXM7ICsraikg
eworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhTcGFjZXM7ICsraSkgewor
ICAgICAgICAgICAgICAgIEFERF9QT0lOVCgwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBBRERf
UE9JTlQoMSwgMCwgMSk7CisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDEsIDEsIDIpOworCisg
ICAgICAgICAgICAgICAgQUREX1BPSU5UKDAsIDAsIDMpOworICAgICAgICAgICAgICAgIEFERF9Q
T0lOVCgxLCAxLCA0KTsKKyAgICAgICAgICAgICAgICBBRERfUE9JTlQoMCwgMSwgNSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICN1bmRlZiBBRERfUE9JTlQK
KyAgICB9CisgICAgCisgICAgbV9ieXRlc1BlclZlcnRleCA9IGZsb2F0c1BlclZlcnRleCAqIHNp
emVvZihmbG9hdCk7CisgICAgCisjaWYgREVCVUdfQ1VTVE9NX0ZJTFRFUl9NRVNICisgICAgcHJp
bnRmKCJNZXNoVkJPOiBSb3dzOiAlZCwgQ29sczogJWQgYm94OiAlZiwgJWYsICVmLCAlZiwgdHlw
ZTogJXNcbiIsIAorICAgICAgICAgICAgY29scywgcm93cywgbWVzaEJveC54KCksIG1lc2hCb3gu
eSgpLCBtZXNoQm94LndpZHRoKCksIG1lc2hCb3guaGVpZ2h0KCksIChtZXNoVHlwZSA9PSBDdXN0
b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEKSA/ICJBdHRhY2hlZCIgOiAiRGV0YWNoZWQiKTsK
KyAgICBwcmludGYoIi0tLVZlcnRleDpcblx0Iik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHZlcnRpY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHByaW50ZigiJWYgIiwgdmVydGlj
ZXMuYXQoaSkpOworICAgICAgICBpZiAoISgoaSArIDEpICUgZmxvYXRzUGVyVmVydGV4KSkKKyAg
ICAgICAgICAgIHByaW50ZigiXG5cdCIpOworICAgIH0KKyAgICBwcmludGYoIlxuLS0tSW5kaWNl
czogIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluZGljZXMuc2l6ZSgpOyArK2kp
CisgICAgICAgIHByaW50ZigiJWQgIiwgaW5kaWNlcy5hdChpKSk7CisgICAgcHJpbnRmKCJcbiIp
OworI2VuZGlmCisKKyAgICBtX3ZlcnRpY2VzQnVmZmVyID0gbV9jb250ZXh0LT5jcmVhdGVCdWZm
ZXIoKTsKKyAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZ
X0JVRkZFUiwgbV92ZXJ0aWNlc0J1ZmZlcik7CisgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdy
YXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIHZlcnRpY2VzLnNpemUoKSAqIHNpemVvZihm
bG9hdCksIHZlcnRpY2VzLmRhdGEoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKTsK
KyAgICAKKyAgICBtX2VsZW1lbnRzQnVmZmVyID0gbV9jb250ZXh0LT5jcmVhdGVCdWZmZXIoKTsK
KyAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJS
QVlfQlVGRkVSLCBtX2VsZW1lbnRzQnVmZmVyKTsKKyAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEo
R3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRpY2VzLnNpemUoKSAq
IHNpemVvZih1aW50MTZfdCksIGluZGljZXMuZGF0YSgpLCBHcmFwaGljc0NvbnRleHQzRDo6U1RB
VElDX0RSQVcpOworfQorCitDdXN0b21GaWx0ZXJNZXNoOjp+Q3VzdG9tRmlsdGVyTWVzaCgpCit7
CisgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV92ZXJ0aWNlc0J1ZmZlcik7CisgICAgbV9j
b250ZXh0LT5kZWxldGVCdWZmZXIobV9lbGVtZW50c0J1ZmZlcik7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdF
QkdMKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmQ3YmY0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaApAQCAtMCwwICsxLDc5IEBACisv
KgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
CisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAor
ICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3VzdG9tRmlsdGVyTWVzaF9oCisj
ZGVmaW5lIEN1c3RvbUZpbHRlck1lc2hfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBF
TkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNs
dWRlIDxGbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworCitjbGFzcyBDdXN0b21G
aWx0ZXJNZXNoIDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyTWVzaD4geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck1lc2g+IGNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywgY29uc3Qg
RmxvYXRSZWN0JiBtZXNoQm94LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlck1lc2goY29udGV4dCwgY29s
cywgcm93cywgbWVzaEJveCwgbWVzaFR5cGUpKTsKKyAgICB9CisgICAgfkN1c3RvbUZpbHRlck1l
c2goKTsKKworICAgIHVuc2lnbmVkIHZlcnRpY2VzQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV92
ZXJ0aWNlc0J1ZmZlcjsgfQorICAgIHVuc2lnbmVkIGJ5dGVzUGVyVmVydGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9ieXRlc1BlclZlcnRleDsgfQorICAgIAorICAgIHVuc2lnbmVkIGVsZW1lbnRzQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50c0J1ZmZlcjsgfQorICAgIHVuc2lnbmVkIGlu
ZGljZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kaWNlc0NvdW50OyB9CisgICAgCisgICAg
Y29uc3QgRmxvYXRSZWN0JiBtZXNoQm94KCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQm94OyB9Cisg
ICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWVzaFR5cGU7IH0KKworcHJpdmF0ZToKKyAgICBDdXN0b21GaWx0ZXJNZXNoKEdyYXBo
aWNzQ29udGV4dDNEKiwgdW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRS
ZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlKTsKKyAgICAKKyAg
ICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIAorICAgIHVuc2lnbmVkIG1fdmVy
dGljZXNCdWZmZXI7CisgICAgdW5zaWduZWQgbV9ieXRlc1BlclZlcnRleDsKKyAgICAKKyAgICB1
bnNpZ25lZCBtX2VsZW1lbnRzQnVmZmVyOworICAgIHVuc2lnbmVkIG1faW5kaWNlc0NvdW50Owor
ICAgIAorICAgIEZsb2F0UmVjdCBtX21lc2hCb3g7CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
OjpNZXNoVHlwZSBtX21lc2hUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNlbmRpZiAv
LyBDdXN0b21GaWx0ZXJNZXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjNkODY4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFk
ZXIuY3BwCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdF
QkdMKQorCisjZGVmaW5lIFNIQURFUjAoU3JjKSAjU3JjCisjZGVmaW5lIFNIQURFUihTcmMpIFNI
QURFUjAoU3JjKQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyU2hhZGVyLmgiCisKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBD
dXN0b21GaWx0ZXJTaGFkZXI6OmRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcoKQoreworICAgIHJl
dHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICBh
dHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENv
b3JkOworICAgICAgICB1bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uTWF0cml4OworICAgICAgICB2
YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiBhX3Bvc2l0aW9u
OworICAgICAgICAgICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7CisgICAgICAgIH0KKyAgICAp
OworfQorCitTdHJpbmcgQ3VzdG9tRmlsdGVyU2hhZGVyOjpkZWZhdWx0RnJhZ21lbnRTaGFkZXJT
dHJpbmcoKQoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9y
bSBzYW1wbGVyMkQgc190ZXh0dXJlOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3Jk
KTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK0N1c3RvbUZpbHRlclNoYWRlcjo6Q3VzdG9tRmls
dGVyU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRl
eFNoYWRlclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclN0cmluZykKKyAgICA6
IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcoIXZlcnRleFNo
YWRlclN0cmluZy5pc051bGwoKSA/IHZlcnRleFNoYWRlclN0cmluZyA6IGRlZmF1bHRWZXJ0ZXhT
aGFkZXJTdHJpbmcoKSkKKyAgICAsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcoIWZyYWdtZW50U2hh
ZGVyU3RyaW5nLmlzTnVsbCgpID8gZnJhZ21lbnRTaGFkZXJTdHJpbmcgOiBkZWZhdWx0RnJhZ21l
bnRTaGFkZXJTdHJpbmcoKSkKKyAgICAsIG1fcHJvZ3JhbSgwKQorICAgICwgbV9wb3NpdGlvbkF0
dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV90ZXhBdHRyaWJMb2NhdGlvbigtMSkKKyAgICAsIG1f
bWVzaEF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV90cmlhbmdsZUF0dHJpYkxvY2F0aW9uKC0x
KQorICAgICwgbV9tZXNoQm94TG9jYXRpb24oLTEpCisgICAgLCBtX3Byb2plY3Rpb25NYXRyaXhM
b2NhdGlvbigtMSkKKyAgICAsIG1fdGlsZVNpemVMb2NhdGlvbigtMSkKKyAgICAsIG1fbWVzaFNp
emVMb2NhdGlvbigtMSkKKyAgICAsIG1fc2FtcGxlckxvY2F0aW9uKC0xKQorICAgICwgbV9zYW1w
bGVyU2l6ZUxvY2F0aW9uKC0xKQorICAgICwgbV9jb250ZW50U2FtcGxlckxvY2F0aW9uKC0xKQor
ICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQoreworICAgIFBsYXRmb3JtM0RPYmplY3QgdmVy
dGV4U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlZF
UlRFWF9TSEFERVIpOworICAgIFBsYXRmb3JtM0RPYmplY3QgZnJhZ21lbnRTaGFkZXIgPSBtX2Nv
bnRleHQtPmNyZWF0ZVNoYWRlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBR01FTlRfU0hBREVSKTsK
KworICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwgbV92ZXJ0ZXhTaGFk
ZXJTdHJpbmcpOworICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwor
ICAgIAorICAgIGludCBjb21waWxlZCA9IDA7CisgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdih2
ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QSUxFX1NUQVRVUywgJmNvbXBpbGVk
KTsKKyAgICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGFuIGlu
dmFsaWQgc2hhZGVyLiBUaHJvdyBzb21lIGVycm9ycy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDE2CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIG1fZnJh
Z21lbnRTaGFkZXJTdHJpbmcpOworICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihmcmFnbWVu
dFNoYWRlcik7CisgICAgCisgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihmcmFnbWVudFNoYWRl
ciwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVTLCAmY29tcGlsZWQpOworICAgIGlm
ICghY29tcGlsZWQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gaW52YWxpZCBzaGFk
ZXIuIFRocm93IHNvbWUgZXJyb3JzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MTYKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBtX3Byb2dyYW0gPSBtX2NvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICBtX2NvbnRleHQt
PmF0dGFjaFNoYWRlcihtX3Byb2dyYW0sIHZlcnRleFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5h
dHRhY2hTaGFkZXIobV9wcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5s
aW5rUHJvZ3JhbShtX3Byb2dyYW0pOworICAgIAorICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVy
KHZlcnRleFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIoZnJhZ21lbnRTaGFk
ZXIpOworICAgIAorICAgIGludCBsaW5rZWQgPSAwOworICAgIG1fY29udGV4dC0+Z2V0UHJvZ3Jh
bWl2KG1fcHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTktfU1RBVFVTLCAmbGlua2VkKTsK
KyAgICBpZiAoIWxpbmtlZCkgeworICAgICAgICAvLyBGSVhNRTogSW52YWxpZCB2ZXJ0ZXgvZnJh
Z21lbnQgc2hhZGVyIGNvbWJpbmF0aW9uLiBUaHJvdyBzb21lIGVycm9ycyBoZXJlLgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MTYKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24gPSBt
X2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKKyAg
ICBtX3RleEF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3By
b2dyYW0sICJhX3RleENvb3JkIik7CisgICAgbV9tZXNoQXR0cmliTG9jYXRpb24gPSBtX2NvbnRl
eHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfbWVzaENvb3JkIik7CisgICAgbV90
cmlhbmdsZUF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3By
b2dyYW0sICJhX3RyaWFuZ2xlQ29vcmQiKTsKKyAgICBtX21lc2hCb3hMb2NhdGlvbiA9IG1fY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfbWVzaEJveCIpOworICAgIG1f
dGlsZVNpemVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3Jh
bSwgInVfdGlsZVNpemUiKTsKKyAgICBtX21lc2hTaXplTG9jYXRpb24gPSBtX2NvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X21lc2hTaXplIik7CisgICAgbV9wcm9qZWN0
aW9uTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dy
YW0sICJ1X3Byb2plY3Rpb25NYXRyaXgiKTsKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IG1fY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInNfdGV4dHVyZSIpOworICAgIG1f
c2FtcGxlclNpemVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJv
Z3JhbSwgInNfdGV4dHVyZVNpemUiKTsKKyAgICBtX2NvbnRlbnRTYW1wbGVyTG9jYXRpb24gPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJzX2NvbnRlbnRUZXh0dXJl
Iik7CisgICAgCisgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKK30KKyAgICAKK0N1c3RvbUZp
bHRlclNoYWRlcjo6fkN1c3RvbUZpbHRlclNoYWRlcigpCit7CisgICAgaWYgKG1fcHJvZ3JhbSkK
KyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fcHJvZ3JhbSk7Cit9CisKKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyU2hhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YWYxZmNjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAq
ICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgor
ICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21GaWx0ZXJTaGFkZXJfaAorI2Rl
ZmluZSBDdXN0b21GaWx0ZXJTaGFkZXJfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBF
TkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworCitjbGFzcyBDdXN0
b21GaWx0ZXJTaGFkZXI6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRlclNoYWRlcj4gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclNoYWRlcj4gY3JlYXRl
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwg
Y29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ3VzdG9tRmlsdGVyU2hhZGVyKGNvbnRleHQsIHZlcnRleFNoYWRlciwgZnJhZ21l
bnRTaGFkZXIpKTsKKyAgICB9CisgICAgCisgICAgfkN1c3RvbUZpbHRlclNoYWRlcigpOworICAg
IAorICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFZlcnRleFNoYWRlclN0cmluZygpOworICAgIHN0
YXRpYyBTdHJpbmcgZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCk7ICAgIAorICAgIAorICAg
IFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRl
clN0cmluZzsgfQorICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7IH0KKyAgICAKKyAgICBpbnQgcG9zaXRpb25BdHRy
aWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb25BdHRyaWJMb2NhdGlvbjsgfQor
ICAgIGludCB0ZXhBdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4QXR0cmliTG9j
YXRpb247IH0KKyAgICBpbnQgbWVzaEF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9t
ZXNoQXR0cmliTG9jYXRpb247IH0KKyAgICBpbnQgdHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fdHJpYW5nbGVBdHRyaWJMb2NhdGlvbjsgfQorICAgIGludCBtZXNoQm94
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lc2hCb3hMb2NhdGlvbjsgfQorICAgIGludCBw
cm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb2plY3Rpb25NYXRy
aXhMb2NhdGlvbjsgfQorICAgIGludCB0aWxlU2l6ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90aWxlU2l6ZUxvY2F0aW9uOyB9CisgICAgaW50IG1lc2hTaXplTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX21lc2hTaXplTG9jYXRpb247IH0KKyAgICBpbnQgc2FtcGxlckxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb247IH0KKyAgICBpbnQgY29udGVudFNhbXBs
ZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNhbXBsZXJMb2NhdGlvbjsgfQor
ICAgIGludCBzYW1wbGVyU2l6ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyU2l6
ZUxvY2F0aW9uOyB9CisgICAgCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0luaXRpYWxpemVkOyB9CisgICAgCisgICAgUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtOyB9CisKK3ByaXZhdGU6CisgICAgQ3VzdG9tRmls
dGVyU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIs
IGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpOworICAgIAorICAgIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIAorICAgIFN0cmluZyBtX3ZlcnRleFNoYWRlclN0
cmluZzsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZzsKKworICAgIFBsYXRmb3Jt
M0RPYmplY3QgbV9wcm9ncmFtOworICAgIAorICAgIGludCBtX3Bvc2l0aW9uQXR0cmliTG9jYXRp
b247CisgICAgaW50IG1fdGV4QXR0cmliTG9jYXRpb247CisgICAgaW50IG1fbWVzaEF0dHJpYkxv
Y2F0aW9uOworICAgIGludCBtX3RyaWFuZ2xlQXR0cmliTG9jYXRpb247CisgICAgaW50IG1fbWVz
aEJveExvY2F0aW9uOworICAgIGludCBtX3Byb2plY3Rpb25NYXRyaXhMb2NhdGlvbjsKKyAgICBp
bnQgbV90aWxlU2l6ZUxvY2F0aW9uOworICAgIGludCBtX21lc2hTaXplTG9jYXRpb247CisgICAg
aW50IG1fc2FtcGxlckxvY2F0aW9uOworICAgIGludCBtX3NhbXBsZXJTaXplTG9jYXRpb247Cisg
ICAgaW50IG1fY29udGVudFNhbXBsZXJMb2NhdGlvbjsKKyAgICAKKyAgICBib29sIG1faXNJbml0
aWFsaXplZDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5B
QkxFKFdFQkdMKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMjNkNzQyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC0w
LDAgKzEsMjEyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDi
gJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBC
RQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1
ZGUgIkZFQ3VzdG9tRmlsdGVyLmgiCisKKyNpbmNsdWRlICJDYWNoZWRTaGFkZXIuaCIKKyNpbmNs
dWRlICJDdXN0b21GaWx0ZXJNZXNoLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyU2hhZGVyLmgi
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCisjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNs
dWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVk
ZSAiU3R5bGVDYWNoZWRTaGFkZXIuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisjaW5jbHVk
ZSAiVGV4dHVyZS5oIgorI2luY2x1ZGUgIlRpbGluZ0RhdGEuaCIKKyNpbmNsdWRlICJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oIgorCisjaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRob01hdHJpeChm
bG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmbG9hdCB0b3ApCit7CisgICAg
ZmxvYXQgZGVsdGFYID0gcmlnaHQgLSBsZWZ0OworICAgIGZsb2F0IGRlbHRhWSA9IHRvcCAtIGJv
dHRvbTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRobzsKKyAgICBpZiAoIWRlbHRhWCB8
fCAhZGVsdGFZKQorICAgICAgICByZXR1cm4gb3J0aG87CisgICAgb3J0aG8uc2V0TTExKDIuMGYg
LyBkZWx0YVgpOworICAgIG9ydGhvLnNldE00MSgtKHJpZ2h0ICsgbGVmdCkgLyBkZWx0YVgpOwor
ICAgIG9ydGhvLnNldE0yMigyLjBmIC8gZGVsdGFZKTsKKyAgICBvcnRoby5zZXRNNDIoLSh0b3Ag
KyBib3R0b20pIC8gZGVsdGFZKTsKKworICAgIC8vIFVzZSBiaWcgZW5vdWdoIG5lYXIvZmFyIHZh
bHVlcywgc28gdGhhdCBzaW1wbGUgcm90YXRpb25zIG9mIHJhdGhlciBsYXJnZSBvYmplY3RzIHdp
bGwgbm90CisgICAgLy8gZ2V0IGNsaXBwZWQuIDEwMDAwIHNob3VsZCBjb3ZlciBtb3N0IG9mIHRo
ZSBzY3JlZW4gcmVzb2x1dGlvbnMuCisgICAgY29uc3QgZmxvYXQgZmFyVmFsdWUgPSAxMDAwMDsK
KyAgICBjb25zdCBmbG9hdCBuZWFyVmFsdWUgPSAtMTAwMDA7CisgICAgb3J0aG8uc2V0TTMzKC0y
LjBmIC8gKGZhclZhbHVlIC0gbmVhclZhbHVlKSk7CisgICAgb3J0aG8uc2V0TTQzKC0gKGZhclZh
bHVlICsgbmVhclZhbHVlKSAvIChmYXJWYWx1ZSAtIG5lYXJWYWx1ZSkpOworICAgIG9ydGhvLnNl
dE00NCgxLjBmKTsKKworICAgIHJldHVybiBvcnRobzsKK30KKworRkVDdXN0b21GaWx0ZXI6OkZF
Q3VzdG9tRmlsdGVyKEZpbHRlciogZmlsdGVyLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNo
Q29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSBtZXNoQm94VHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1l
c2hUeXBlIG1lc2hUeXBlKQorICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKKyAgICAsIG1fZG9j
dW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX3ZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIpCisgICAg
LCBtX2ZyYWdtZW50U2hhZGVyKGZyYWdtZW50U2hhZGVyKQorICAgICwgbV9tZXNoUm93cyhtZXNo
Um93cykKKyAgICAsIG1fbWVzaENvbHVtbnMobWVzaENvbHVtbnMpCisgICAgLCBtX21lc2hCb3hU
eXBlKG1lc2hCb3hUeXBlKQorICAgICwgbV9tZXNoVHlwZShtZXNoVHlwZSkKKworeworfQorCitQ
YXNzUmVmUHRyPEZFQ3VzdG9tRmlsdGVyPiBGRUN1c3RvbUZpbHRlcjo6Y3JlYXRlKEZpbHRlciog
ZmlsdGVyLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBj
b25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywg
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSBtZXNoQm94VHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246
Ok1lc2hUeXBlIG1lc2hUeXBlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVDdXN0b21G
aWx0ZXIoZmlsdGVyLCBkb2N1bWVudCwgdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlciwgbWVz
aFJvd3MsIG1lc2hDb2x1bW5zLCBtZXNoQm94VHlwZSwgbWVzaFR5cGUpKTsKK30KKwordm9pZCBG
RUN1c3RvbUZpbHRlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3sKKyAgICBCeXRlQXJyYXkq
IGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBp
ZiAoIWRzdFBpeGVsQXJyYXkpCisgICAgICAgIHJldHVybjsKKworICAgIEZpbHRlckVmZmVjdCog
aW4gPSBpbnB1dEVmZmVjdCgwKTsKKyAgICBJbnRSZWN0IGVmZmVjdEFEcmF3aW5nUmVjdCA9IHJl
cXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwor
ICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNQcmVtdWx0aXBsaWVk
SW1hZ2UoZWZmZWN0QURyYXdpbmdSZWN0KTsKKyAgICAKKyAgICBJbnRTaXplIG5ld0NvbnRleHRT
aXplKGVmZmVjdEFEcmF3aW5nUmVjdC53aWR0aCgpLCBlZmZlY3RBRHJhd2luZ1JlY3QuaGVpZ2h0
KCkpOworICAgIGJvb2wgaGFkQ29udGV4dCA9IG1fY29udGV4dDsKKyAgICBpZiAoIW1fY29udGV4
dCkgeworICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwor
ICAgICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHRydWU7CisgICAgICAg
IGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhID0gZmFsc2U7CisgICAgICAgIAorICAgICAg
ICBtX2NvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIG1fZG9j
dW1lbnQtPnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCksIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJPZmZzY3JlZW4pOworICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVy
OjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBuZXdDb250ZXh0U2l6ZSwgIWF0dHJpYnV0ZXMucHJl
c2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICAgICAgCisgICAgICAgIG1fc2hhZGVyID0gQ3VzdG9t
RmlsdGVyU2hhZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBtX3ZlcnRleFNoYWRlciwgbV9m
cmFnbWVudFNoYWRlcik7CisgICAgICAgIG1fbWVzaCA9IEN1c3RvbUZpbHRlck1lc2g6OmNyZWF0
ZShtX2NvbnRleHQuZ2V0KCksIG1fbWVzaENvbHVtbnMsIG1fbWVzaFJvd3MsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRSZWN0KDAsIDAsIDEsIDEpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tZXNoVHlwZSk7Cisg
ICAgfQorICAgIAorICAgIGlmICghaGFkQ29udGV4dCB8fCBtX2NvbnRleHRTaXplICE9IG5ld0Nv
bnRleHRTaXplKSB7CisgICAgICAgIG1faW5wdXRUZXh0dXJlID0gMDsKKyAgICAgICAgbV9kcmF3
aW5nQnVmZmVyLT5yZXNldChuZXdDb250ZXh0U2l6ZSk7CisgICAgICAgIG1fY29udGV4dC0+cmVz
aGFwZShuZXdDb250ZXh0U2l6ZS53aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5oZWlnaHQoKSk7Cisg
ICAgICAgIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgbmV3Q29udGV4dFNpemUud2lkdGgoKSwg
bmV3Q29udGV4dFNpemUuaGVpZ2h0KCkpOworICAgICAgICBtX2lucHV0VGV4dHVyZSA9IFRleHR1
cmU6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIFRleHR1cmU6OlJHQkE4LCBuZXdDb250ZXh0U2l6
ZS53aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIG1fY29udGV4dFNp
emUgPSBuZXdDb250ZXh0U2l6ZTsKKyAgICB9CisgICAgCisgICAgaWYgKG1faW5wdXRUZXh0dXJl
LT50aWxlcygpLm51bVRpbGVzKCkgIT0gMSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1f
Y29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICBtX2NvbnRleHQtPmNsZWFyKEdy
YXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX0JVRkZFUl9CSVQpOworICAgIAorICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShtX3NoYWRl
ci0+cHJvZ3JhbSgpKTsKKyAgICAKKyAgICBpZiAobV9zaGFkZXItPnNhbXBsZXJMb2NhdGlvbigp
ICE9IC0xKSB7CisgICAgICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRTApOworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaShtX3NoYWRlci0+
c2FtcGxlckxvY2F0aW9uKCksIDApOworICAgICAgICBtX2lucHV0VGV4dHVyZS0+bG9hZChzcmNQ
aXhlbEFycmF5LT5kYXRhKCkpOworICAgICAgICBtX2lucHV0VGV4dHVyZS0+YmluZFRpbGUoMCk7
CisgICAgfQorICAgIAorICAgIGlmIChtX3NoYWRlci0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9u
KCkgIT0gLTEpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcHJvamVjdGlvbk1hdHJp
eCA9IG9ydGhvTWF0cml4KC0wLjUsIDAuNSwgLTAuNSwgMC41KTsKKyAgICAgICAgZmxvYXQgZ2xQ
cm9qZWN0aW9uTWF0cml4WzE2XTsKKyAgICAgICAgcHJvamVjdGlvbk1hdHJpeC50b0NvbHVtbk1h
am9yRmxvYXRBcnJheShnbFByb2plY3Rpb25NYXRyaXgpOworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm1NYXRyaXg0ZnYobV9zaGFkZXItPnByb2plY3Rpb25NYXRyaXhMb2NhdGlvbigpLCBmYWxz
ZSwgJmdsUHJvamVjdGlvbk1hdHJpeFswXSwgMSk7CisgICAgfQorICAgIAorICAgIG1fY29udGV4
dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX21lc2gtPnZl
cnRpY2VzQnVmZmVyKCkpOworICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1fbWVzaC0+ZWxlbWVudHNCdWZmZXIoKSk7CisK
KyAgICB1bnNpZ25lZCB2ZXJ0ZXhTaXplID0gbV9tZXNoLT5ieXRlc1BlclZlcnRleCgpOworICAg
IAorICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7CisgICAgCisgICAgaWYgKG1fc2hhZGVyLT5wb3Np
dGlvbkF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhB
dHRyaWJQb2ludGVyKG1fc2hhZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCksIDQsIEdyYXBo
aWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIHZlcnRleFNpemUsIG9mZnNldCk7CisgICAgICAg
IG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9zaGFkZXItPnBvc2l0aW9uQXR0
cmliTG9jYXRpb24oKSk7CisgICAgfQorICAgIG9mZnNldCArPSA0ICogc2l6ZW9mKGZsb2F0KTsK
KyAgICAKKyAgICBpZiAobV9zaGFkZXItPnRleEF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVyLT50ZXhBdHRyaWJM
b2NhdGlvbigpLCAyLCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCB2ZXJ0ZXhTaXpl
LCBvZmZzZXQpOworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1f
c2hhZGVyLT50ZXhBdHRyaWJMb2NhdGlvbigpKTsKKyAgICB9CisgICAgb2Zmc2V0ICs9IDIgKiBz
aXplb2YoZmxvYXQpOworICAgIAorICAgIGlmIChtX3NoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9u
KCkgIT0gLTEpIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hh
ZGVyLT5tZXNoQXR0cmliTG9jYXRpb24oKSwgMiwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBm
YWxzZSwgdmVydGV4U2l6ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShtX3NoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCkpOworICAgIH0KKyAg
ICBvZmZzZXQgKz0gMiAqIHNpemVvZihmbG9hdCk7CisgICAgCisgICAgaWYgKG1fbWVzaFR5cGUg
PT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpERVRBQ0hFRCAmJiBtX3NoYWRlci0+dHJpYW5nbGVB
dHRyaWJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmli
UG9pbnRlcihtX3NoYWRlci0+dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpLCAzLCBHcmFwaGljc0Nv
bnRleHQzRDo6RkxPQVQsIGZhbHNlLCB2ZXJ0ZXhTaXplLCBvZmZzZXQpOworICAgICAgICBtX2Nv
bnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fc2hhZGVyLT50cmlhbmdsZUF0dHJpYkxv
Y2F0aW9uKCkpOworICAgIH0KKyAgICAKKyAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50cyhHcmFw
aGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCBtX21lc2gtPmluZGljZXNDb3VudCgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQsIDApOworICAgIAorICAgIG1fZHJhd2luZ0J1ZmZl
ci0+Y29tbWl0KCk7CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSBtX2NvbnRl
eHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKG1fZHJhd2luZ0J1ZmZlci5nZXQo
KSk7CisgICAgQnl0ZUFycmF5KiBncHVSZXN1bHQgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgp
OworICAgIEFTU0VSVChncHVSZXN1bHQtPmxlbmd0aCgpID09IGRzdFBpeGVsQXJyYXktPmxlbmd0
aCgpKTsKKyAgICBtZW1jcHkoZHN0UGl4ZWxBcnJheS0+ZGF0YSgpLCBncHVSZXN1bHQtPmRhdGEo
KSwgZ3B1UmVzdWx0LT5sZW5ndGgoKSk7Cit9CisKK3ZvaWQgRkVDdXN0b21GaWx0ZXI6OmR1bXAo
KQoreworfQorCitUZXh0U3RyZWFtJiBGRUN1c3RvbUZpbHRlcjo6ZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKK3sKKyAgICB3cml0ZUluZGVu
dCh0cywgaW5kZW50KTsKKyAgICB0cyA8PCAiW2ZlQ3VzdG9tRmlsdGVyIjsKKyAgICBGaWx0ZXJF
ZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOworICAgIHRzIDw8ICJdXG4iOworICAg
IGlucHV0RWZmZWN0KDApLT5leHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzLCBpbmRlbnQgKyAxKTsK
KyAgICByZXR1cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MjQ3OWYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmls
dGVyLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5c3Rl
bXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEZFQ3VzdG9tRmlsdGVyX2gKKyNkZWZpbmUgRkVDdXN0b21GaWx0ZXJfaAorCisjaWYgRU5B
QkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0
ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZl
Y3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ2FjaGVkU2hhZGVyOworY2xhc3MgQ3VzdG9tRmlsdGVyTWVzaDsKK2NsYXNzIEN1c3Rv
bUZpbHRlclNoYWRlcjsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRHJhd2luZ0J1ZmZlcjsKK2Ns
YXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3MgVGV4dHVyZTsKKyAgICAKK2NsYXNzIEZFQ3Vz
dG9tRmlsdGVyIDogcHVibGljIEZpbHRlckVmZmVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8RkVDdXN0b21GaWx0ZXI+IGNyZWF0ZShGaWx0ZXIqLCBEb2N1bWVudCosIGNvbnN0
IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLAorICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywg
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSwgCisgICAgICAgICAgICAgICAgICAg
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKCk7CisgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKworICAgIHZp
cnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50
IGluZGVudGlvbikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRkVDdXN0b21GaWx0ZXIoRmlsdGVy
KiwgRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBm
cmFnbWVudFNoYWRlciwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93cywgdW5z
aWduZWQgbWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaEJveFR5cGUsIAor
ICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUpOworICAg
IAorICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIAorICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gbV9jb250ZXh0OworICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVyPiBtX2RyYXdpbmdC
dWZmZXI7CisgICAgUmVmUHRyPFRleHR1cmU+IG1faW5wdXRUZXh0dXJlOworICAgIFJlZlB0cjxD
dXN0b21GaWx0ZXJTaGFkZXI+IG1fc2hhZGVyOworICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJNZXNo
PiBtX21lc2g7CisgICAgSW50U2l6ZSBtX2NvbnRleHRTaXplOworICAgIAorICAgIFN0cmluZyBt
X3ZlcnRleFNoYWRlcjsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlcjsKKworICAgIHVuc2ln
bmVkIG1fbWVzaFJvd3M7CisgICAgdW5zaWduZWQgbV9tZXNoQ29sdW1uczsKKyAgICBDdXN0b21G
aWx0ZXJPcGVyYXRpb246Ok1lc2hCb3hUeXBlIG1fbWVzaEJveFR5cGU7CisgICAgQ3VzdG9tRmls
dGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtX21lc2hUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wp
CisKKyNlbmRpZiAvLyBGRUN1c3RvbUZpbHRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggM2NmZDIzMC4uNWZmN2Q4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApA
QCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoQUND
RUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpIHx8
IEVOQUJMRShDU1NfU0hBREVSUykKIAogI2luY2x1ZGUgIlRleHR1cmUuaCIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1h
dGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCBlMGQ0Zjc4Li5hZjU4MjM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTE5OCw1ICsxMTk4LDI1
IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0bzJkVHJhbnNm
b3JtKCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tYXRyaXhbM11b
MF0sIG1fbWF0cml4WzNdWzFdLCAwLCBtX21hdHJpeFszXVszXSk7CiB9CiAKK3ZvaWQgVHJhbnNm
b3JtYXRpb25NYXRyaXg6OnRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KGZsb2F0KiByZXN1bHQpIGNv
bnN0Cit7CisgICAgcmVzdWx0WzBdID0gbTExKCk7CisgICAgcmVzdWx0WzFdID0gbTEyKCk7Cisg
ICAgcmVzdWx0WzJdID0gbTEzKCk7CisgICAgcmVzdWx0WzNdID0gbTE0KCk7CisgICAgcmVzdWx0
WzRdID0gbTIxKCk7CisgICAgcmVzdWx0WzVdID0gbTIyKCk7CisgICAgcmVzdWx0WzZdID0gbTIz
KCk7CisgICAgcmVzdWx0WzddID0gbTI0KCk7CisgICAgcmVzdWx0WzhdID0gbTMxKCk7CisgICAg
cmVzdWx0WzldID0gbTMyKCk7CisgICAgcmVzdWx0WzEwXSA9IG0zMygpOworICAgIHJlc3VsdFsx
MV0gPSBtMzQoKTsKKyAgICByZXN1bHRbMTJdID0gbTQxKCk7CisgICAgcmVzdWx0WzEzXSA9IG00
MigpOworICAgIHJlc3VsdFsxNF0gPSBtNDMoKTsKKyAgICByZXN1bHRbMTVdID0gbTQ0KCk7CisK
K30KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IDA0NTBhZDcu
LjdmNzc5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTM1MCw2
ICszNTAsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBtYXRy
aXggd2l0aG91dCAzRCBjb21wb25lbnRzLgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRvMmRU
cmFuc2Zvcm0oKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHRvQ29sdW1uTWFqb3JGbG9hdEFycmF5
KGZsb2F0KiByZXN1bHQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIC8vIG11bHRpcGx5IHBhc3Nl
ZCAyRCBwb2ludCBieSBtYXRyaXggKGFzc3VtZSB6PTApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjkyYzYwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQor
ICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRmlsdGVyRWZmZWN0T2JzZXJ2ZXJfaAorI2RlZmlu
ZSBGaWx0ZXJFZmZlY3RPYnNlcnZlcl9oCisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmlsdGVyRWZmZWN0T2JzZXJ2ZXIgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdE9ic2VydmVyKCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGZpbHRlck5lZWRzUmVwYWludCgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKKworI2VuZGlmIC8vIEZpbHRlckVm
ZmVjdE9ic2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0
ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuY3BwCmluZGV4IDQ2N2M0OTkuLjdiNjdhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtMzksNiArMzks
MTQgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
IAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkNh
Y2hlZFNoYWRlci5oIgorI2luY2x1ZGUgIkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgorI2luY2x1
ZGUgIkZFQ3VzdG9tRmlsdGVyLmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCIK
KyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGlubGluZSB2b2lkIGVuZE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJz
KQpAQCAtNTUsOSArNjMsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIGxhc3RNYXRyaXhSb3coVmVj
dG9yPGZsb2F0PiYgcGFyYW1ldGVycykKICAgICBwYXJhbWV0ZXJzLmFwcGVuZCgxKTsKICAgICBw
YXJhbWV0ZXJzLmFwcGVuZCgwKTsKIH0KKyAgICAKKyAgICAKKyNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpICYmIEVOQUJMRShXRUJHTCkKK3N0YXRpYyBib29sIGlzV2ViR0xFbmFibGVkKERvY3VtZW50
KiBkb2N1bWVudCkKK3sKKyAgICAvLyBXZSBvbmx5IHdhbnQgdG8gZW5hYmxlIHNoYWRlcnMgaWYg
V2ViR0wgaXMgYWxzbyBlbmFibGVkIG9uIHRoaXMgcGxhdGZvcm0uCisgICAgU2V0dGluZ3MqIHNl
dHRpbmdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgcmV0dXJuIHNldHRpbmdzICYmIHNl
dHRpbmdzLT53ZWJHTEVuYWJsZWQoKTsKK30KKyNlbmRpZgogCi1GaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQotICAgIDogbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVk
KGZhbHNlKQorRmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcmVyKEZpbHRl
ckVmZmVjdE9ic2VydmVyKiBvYnNlcnZlcikKKyAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisg
ICAgLCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQoZmFsc2UpCiB7CiAgICAgc2V0RmlsdGVyUmVz
b2x1dGlvbihGbG9hdFNpemUoMSwgMSkpOwogICAgIG1fc291cmNlR3JhcGhpYyA9IFNvdXJjZUdy
YXBoaWM6OmNyZWF0ZSh0aGlzKTsKQEAgLTcyLDggKzkxLDE0IEBAIEdyYXBoaWNzQ29udGV4dCog
RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCgpCiAgICAgcmV0dXJuIHNvdXJjZUlt
YWdlKCktPmNvbnRleHQoKTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3QgTGF5b3V0UmVjdCYgYm9y
ZGVyQm94KQordm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBMYXlvdXRSZWN0
JiBib3JkZXJCb3gpCiB7CisjaWYgIUVOQUJMRShDU1NfU0hBREVSUykgfHwgIUVOQUJMRShXRUJH
TCkKKyAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOworI2Vsc2UKKyAgICBDYWNoZWRTaGFkZXJM
aXN0IGNhY2hlZFNoYWRlcnM7CisjZW5kaWYKKwogICAgIG1fZWZmZWN0cy5jbGVhcigpOwogCiAg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwpAQCAtMjE0LDcgKzIzOSw0MSBAQCB2b2lk
IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVy
YXRpb25zLCBjb25zdCBMYXlvdQogICAgICAgICB9CiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQog
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOiB7Ci0gICAgICAgICAgICAvLyBO
b3QgaW1wbGVtZW50ZWQgaW4gdGhlIHNvZnR3YXJlIHBhdGguCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgICAgICAgICAgaWYgKCFpc1dlYkdMRW5hYmxlZChkb2N1bWVudCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJh
dGlvbiogY3VzdG9tRmlsdGVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyT3Bl
cmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8g
Q2hlY2sgdGhhdCB0aGUgZmlsdGVycyBhcmUgYWxyZWFkeSBsb2FkZWQuIElmIG5vdCBqdXN0IHNr
aXAgdGhlbSBoZXJlLgorICAgICAgICAgICAgU3RyaW5nIHZlcnRleFNoYWRlciwgZnJhZ21lbnRT
aGFkZXI7CisgICAgICAgICAgICBib29sIHNoYWRlcnNMb2FkZWQgPSB0cnVlOworICAgICAgICAg
ICAgaWYgKGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+dmVydGV4U2hhZGVyKCkpIHsKKyAgICAgICAg
ICAgICAgICBDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlciA9IGN1c3RvbUZpbHRlck9wZXJhdGlv
bi0+dmVydGV4U2hhZGVyKCktPmNhY2hlZFNoYWRlcigpOworICAgICAgICAgICAgICAgIEFTU0VS
VChjYWNoZWRTaGFkZXIpOworICAgICAgICAgICAgICAgIGNhY2hlZFNoYWRlcnMuYXBwZW5kKGNh
Y2hlZFNoYWRlcik7CisgICAgICAgICAgICAgICAgY2FjaGVkU2hhZGVyLT5hZGRDbGllbnQodGhp
cyk7CisgICAgICAgICAgICAgICAgaWYgKGNhY2hlZFNoYWRlci0+aXNMb2FkZWQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyID0gY2FjaGVkU2hhZGVyLT5zaGFkZXJTdHJpbmco
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNoYWRlcnNMb2Fk
ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjdXN0b21GaWx0ZXJP
cGVyYXRpb24tPmZyYWdtZW50U2hhZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBDYWNoZWRTaGFk
ZXIqIGNhY2hlZFNoYWRlciA9IGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+ZnJhZ21lbnRTaGFkZXIo
KS0+Y2FjaGVkU2hhZGVyKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGNhY2hlZFNoYWRlcik7
CisgICAgICAgICAgICAgICAgY2FjaGVkU2hhZGVycy5hcHBlbmQoY2FjaGVkU2hhZGVyKTsKKyAg
ICAgICAgICAgICAgICBjYWNoZWRTaGFkZXItPmFkZENsaWVudCh0aGlzKTsKKyAgICAgICAgICAg
ICAgICBpZiAoY2FjaGVkU2hhZGVyLT5pc0xvYWRlZCgpKQorICAgICAgICAgICAgICAgICAgICBm
cmFnbWVudFNoYWRlciA9IGNhY2hlZFNoYWRlci0+c2hhZGVyU3RyaW5nKCk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzaGFkZXJzTG9hZGVkID0gZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2hhZGVyc0xvYWRlZCkgeworICAgICAgICAg
ICAgICAgIGVmZmVjdCA9IEZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUodGhpcywgZG9jdW1lbnQsIHZl
cnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPm1lc2hSb3dzKCksIGN1
c3RvbUZpbHRlck9wZXJhdGlvbi0+bWVzaENvbHVtbnMoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+bWVzaEJv
eFR5cGUoKSwgY3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5tZXNoVHlwZSgpKTsKKyAgICAgICAgICAg
IH0KKyNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMjM2
LDYgKzI5NSwxNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBMYXlvdQogCiAgICAgbV9lZmZlY3RzLmZp
cnN0KCktPmlucHV0RWZmZWN0cygpLmFwcGVuZChtX3NvdXJjZUdyYXBoaWMpOwogICAgIHNldE1h
eEVmZmVjdFJlY3RzKG1fc291cmNlRHJhd2luZ1JlZ2lvbik7CisgICAgCisjaWYgRU5BQkxFKENT
U19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisgICAgZm9yIChDYWNoZWRTaGFkZXJMaXN0Ojpp
dGVyYXRvciBpdGVyID0gbV9jYWNoZWRTaGFkZXJzLmJlZ2luKCksIGVuZCA9IG1fY2FjaGVkU2hh
ZGVycy5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgaXRlci0+Z2V0KCktPnJl
bW92ZUNsaWVudCh0aGlzKTsKKyAgICBtX2NhY2hlZFNoYWRlcnMuc3dhcChjYWNoZWRTaGFkZXJz
KTsKKyNlbmRpZgorfQorCit2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSopCit7CisgICAgbV9vYnNlcnZlci0+ZmlsdGVyTmVlZHNSZXBhaW50
KCk7CiB9CiAKIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OnByZXBhcmUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAppbmRleCAwYmFmYWM4
Li5jNmVhMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuaApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQog
CisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVj
dC5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKQEAgLTQ0LDEyICs0NiwxNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RmlsdGVyRWZmZWN0
PiA+IEZpbHRlckVmZmVjdExpc3Q7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEZpbHRlckVmZmVj
dE9ic2VydmVyOworY2xhc3MgQ2FjaGVkU2hhZGVyOwogCi1jbGFzcyBGaWx0ZXJFZmZlY3RSZW5k
ZXJlciA6IHB1YmxpYyBGaWx0ZXIgeworY2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVyZXIgOiBwdWJs
aWMgRmlsdGVyLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dFJlbmRlcmVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdFJl
bmRlcmVyPiBjcmVhdGUoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWx0ZXJFZmZlY3RSZW5kZXJlcihvYnNlcnZlcikpOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VJbWFnZVJlY3QpCkBAIC02NywxMCArNzMsMTIgQEAgcHVibGljOgogICAgIEdy
YXBoaWNzQ29udGV4dCogaW5wdXRDb250ZXh0KCk7CiAgICAgSW1hZ2VCdWZmZXIqIG91dHB1dCgp
IGNvbnN0IHsgcmV0dXJuIGxhc3RFZmZlY3QoKS0+YXNJbWFnZUJ1ZmZlcigpOyB9CiAKLSAgICB2
b2lkIGJ1aWxkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBjb25zdCBMYXlvdXRSZWN0Jik7Cisg
ICAgdm9pZCBidWlsZChEb2N1bWVudCosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBjb25zdCBM
YXlvdXRSZWN0Jik7CiAgICAgdm9pZCBwcmVwYXJlKCk7CiAgICAgdm9pZCBhcHBseSgpOwogICAg
IAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworICAg
IAogcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TWF4RWZmZWN0UmVjdHMoY29uc3QgRmxvYXRSZWN0
JiBlZmZlY3RSZWN0KQpAQCAtODcsNyArOTUsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpOworICAgIEZpbHRlckVmZmVj
dFJlbmRlcmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKik7CiAgICAgdmlydHVhbCB+RmlsdGVyRWZm
ZWN0UmVuZGVyZXIoKTsKICAgICAKICAgICBGbG9hdFJlY3QgbV9zb3VyY2VEcmF3aW5nUmVnaW9u
OwpAQCAtOTUsNiArMTAzLDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgRmlsdGVyRWZmZWN0TGlz
dCBtX2VmZmVjdHM7CiAgICAgUmVmUHRyPFNvdXJjZUdyYXBoaWM+IG1fc291cmNlR3JhcGhpYzsK
KyAgICBGaWx0ZXJFZmZlY3RPYnNlcnZlciogbV9vYnNlcnZlcjsgLy8gTm8gbmVlZCBmb3IgYSBz
dHJvbmcgcmVmZXJlbmNlcyBoZXJlLiBJdCBvd25zIHVzLgorICAgIAorI2lmIEVOQUJMRShDU1Nf
U0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorICAgIHR5cGVkZWYgVmVjdG9yPENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFNoYWRlcj4gPiBDYWNoZWRTaGFkZXJMaXN0OworICAgIENhY2hlZFNo
YWRlckxpc3QgbV9jYWNoZWRTaGFkZXJzOworI2VuZGlmCiAgICAgCiAgICAgYm9vbCBtX2dyYXBo
aWNzQnVmZmVyQXR0YWNoZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKaW5kZXggOTk3MGMwNy4uZmEwNTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC00NDMwLDEyICs0NDMwLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KCkKIHsKICAgICBpZiAoaGFzRmlsdGVyKCkpIHsK
ICAgICAgICAgaWYgKCFtX2ZpbHRlcikgewotICAgICAgICAgICAgbV9maWx0ZXIgPSBGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2ZpbHRlciA9IEZpbHRlckVm
ZmVjdFJlbmRlcmVyOjpjcmVhdGUodGhpcyk7CiAgICAgICAgICAgICBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUgPSByZW5kZXJlcigpLT5mcmFtZSgpLT5wYWdlKCktPnNldHRpbmdzKCktPmFj
Y2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsK
ICAgICAgICAgICAgIG1fZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpOwog
ICAgICAgICB9CiAKLSAgICAgICAgbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVyKCktPnN0eWxlKCkt
PmZpbHRlcigpLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVjdCgpKTsKKyAg
ICAgICAgbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVyKCktPmRvY3VtZW50KCksIHJlbmRlcmVyKCkt
PnN0eWxlKCktPmZpbHRlcigpLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVj
dCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2ZpbHRlciA9IDA7CiAgICAgfQpAQCAtNDQ1
Miw2ICs0NDUyLDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUZpbHRlckJhY2tpbmdTdG9y
ZSgpCiAgICAgfQogfQogCit2b2lkIFJlbmRlckxheWVyOjpmaWx0ZXJOZWVkc1JlcGFpbnQoKQor
eworICAgIHJlbmRlcmVyKCktPm5vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNT
dHlsZUNoYW5nZSk7CisgICAgcmVuZGVyZXIoKS0+cmVwYWludCgpOworfQogI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
aW5kZXggOTdlNGU0Mi4uM2JjN2MxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKQEAgLTQ0LDYgKzQ0LDkgQEAKICNpZm5kZWYgUmVuZGVyTGF5ZXJfaAogI2RlZmluZSBS
ZW5kZXJMYXllcl9oCiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisjaW5jbHVkZSAiRmlsdGVy
RWZmZWN0T2JzZXJ2ZXIuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1
ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlNjcm9sbEJlaGF2aW9yLmgiCkBAIC0yMDIsNyAr
MjA1LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpeGVkIDogMTsKIH07CiAKLWNsYXNzIFJl
bmRlckxheWVyIDogcHVibGljIFNjcm9sbGFibGVBcmVhIHsKK2NsYXNzIFJlbmRlckxheWVyIDog
cHVibGljIFNjcm9sbGFibGVBcmVhCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgICwgcHVi
bGljIEZpbHRlckVmZmVjdE9ic2VydmVyCisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBmcmllbmQg
Y2xhc3MgUmVuZGVyUmVwbGljYTsKIApAQCAtNTEwLDYgKzUxNyw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShDU1NfRklMVEVSUykKICAgICBib29sIGhhc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJu
IHJlbmRlcmVyKCktPmhhc0ZpbHRlcigpOyB9CisgICAgdmlydHVhbCB2b2lkIGZpbHRlck5lZWRz
UmVwYWludCgpOwogI2VuZGlmCiAKICAgICAvLyBPdmVybG9hZGVkIG5ldyBvcGVyYXRvci4gRGVy
aXZlZCBjbGFzc2VzIG11c3Qgb3ZlcnJpZGUgb3BlcmF0b3IgbmV3CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5oCmluZGV4IDg4YmZjODEu
LjI2OTIyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNhY2hlZFNoYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNhY2hlZFNoYWRlci5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Q7CiAgICAgCisgICAgdmly
dHVhbCBDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVy
LmdldCgpOyB9CisgICAgCiBwcml2YXRlOgogICAgIFN0eWxlQ2FjaGVkU2hhZGVyKENhY2hlZFNo
YWRlciopOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlU2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTaGFk
ZXIuaAppbmRleCA5YjM2Njc3Li5mZjVkMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVTaGFkZXIuaApAQCAtMzYsOCArMzYsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIENhY2hlZFNoYWRlcjsKIGNsYXNzIENTU1ZhbHVlOwotICAgIAorCiBj
bGFzcyBTdHlsZVNoYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU2hhZGVyPiB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+U3R5bGVTaGFkZXIoKSB7IH0KQEAgLTQ3LDYgKzQ4LDggQEAgcHVi
bGljOgogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBj
b25zdCA9IDA7CiAgICAgCisgICAgdmlydHVhbCBDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlcigp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICAKIHByb3RlY3RlZDoKICAgICBTdHlsZVNoYWRlcigp
CiAgICAgICAgIDogbV9pc0NhY2hlZFNoYWRlcihmYWxzZSkK
</data>
<flag name="review"
          id="119478"
          type_id="1"
          status="-"
          setter="cmarrin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119458</attachid>
            <date>2011-12-15 10:39:04 -0800</date>
            <delta_ts>2011-12-15 13:00:31 -0800</delta_ts>
            <desc>Patch V2</desc>
            <filename>bug73317_3.patch</filename>
            <type>text/plain</type>
            <size>76998</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNjI1NWE1Li4wNmRkZWNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTIt
MTUgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gQWRkIEZFQ3VzdG9tRmlsdGVyIHRoYXQgcmVuZGVycyBjdXN0b20gZmlsdGVy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMv
ZmlsdGVycy9lZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY3Nz
My9maWx0ZXJzL2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBj
c3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL2ZyYWdtZW50LnNoYWRlcjogQWRkZWQuCisgICAgICAgICogY3NzMy9m
aWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXguc2hhZGVyOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL3ZlcnRleF9kZXRhY2hlZC5zaGFkZXI6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL3drMi9Ta2lwcGVkOiBXZWJLaXQyIGhhcyBubyBvcHRpb24gdG8gZm9yY2UgZW5h
YmxlIFdlYkdMIHlldC4KKwogMjAxMS0xMi0xNSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6ICNoZXggY29sb3JzIGFyZSBu
b3QgaGlnaGxpZ2h0ZWQgaW4gQ1NTIGZpbGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3Mz
L2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvZWZmZWN0LWN1c3RvbS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBiOTQ5MzBlZDkz
MTI0OTIwNjM2MGM3YWE3OTg0N2VhZjdkOWUyNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTM1
OTUKemNtZUhPWEg9OHZ3aGwhQkw5aC13RDhVKmxWSnJraDIhZWBeTl5ucm4wVEt7X2FTJWNpMm9P
U2EwOHRAZ0FxdHIyCnphRDx+JiFJNkBOQW1SdiEzX18lWlcoYmYjMDshT35gSXZocHU2ekY3eVk0
IUZAK1psKypJUz54X3B8cj0/a3tPPgp6dH1hV0xlN14oKTB4ZG0kP0M/KEBrZDZmaXE8djAqRihB
b356OFZJNlpJMyF+RjNTSXgwUlB+fkQ8TDImKm5WNG8Kem4/UlVWeihxZUJUaWR8QilfWDRjVD9u
dWFAYmUzX18xfU1De2hkUVN6JG9VSW9Tb2Z7SjNDdnJNVzYjT1RAQzwmCnpWenJYYl5hcj1RdHh8
T2RKU3JRIWNfMylIZnh8REVwJT5rd29PNTNWZClCbzRKWkBkTjthRTw3aDxFbmUlQGNgYgp6ZFI7
ZnMyTzQ2Z15jLWdOakptRiY8TEBrZXlVSV5pYmJhR1YkO0p2JiZjMEkrY2IjZX1yR0lBOTdRKj8w
ZF57OFcKemJOZWMmJCpReU5oPXd9Rm49aDtTcj9yc2xvT2RkSUlkd0RUeUMxaUBJR1ZKVldCMyg5
V0FuRntxYkFZKWcpMEEhCno/RTZOYDE/dyM2X3g4V3BJQyVjP0NHU3NCRCtmQiRfPlg/clUpT1Ju
QD8zJGcwWFdEOD9UO1Y0bUEpd31hTm1CJQp6WT1iKHoyQiFsanN2Szx8VHBBRUF7cm15SD5JLUQr
dnBiZUk0O0NLejNDZ35CcX0pZyUwN3FWJU13UntaLWRJakMKelhJWGtrX0ZDN3JnY35mZEVqSH1k
MiZtJlY5SlBqYXNPbk1KSXFUdVB7ZlNPM25AZzUmckV3O3NFPEtuQyRSP2lPCnp6R0JPfCZEMEJM
Tzc+cDlHLTlaZW1PYXV3QSMlR0BNJjhIUnhBKGtvYyo1PHpGODdCOXZFOzsyUTROalJsWCtLZgp6
Yyl2cnpfRC1DbWlZNjZEKytidHcyKUhsSig+cHw3Y01mPjtebjdXXy0mRnI1PH1fVUFuQTZwYWJy
LWh7V0k3cjcKelcmNksqRTw1PyUrS29UezxGODltWEU1YjlvcCMmcVc9KlZmaVR4OTBUIXM4aj57
VlZSOElZNnV3bEZpT3RDSmZsCnpeRkUpUl95YSN5UUAlM1c0MHB4dlg8cTBjdGVUeDs3RSktYWVf
Q35le28pdWg7NjM4JVkzM0V7az15UD4jVENRVwp6SkArUUpNNlduIVI4dTVDJTY0MntmPUQqNEJR
aWR7YEBrdyotam8hKyVifTN1LXR2flc8KiQ9fWFXN1VlWml0PVUKenU5PjwwZ1koYWk9JGxYRi1t
c25TYn5BKTVqPTlQbThTO2lRXis9UnZwVFhIYHtiSXxBTyZOOGo7dikkZzFvWFhoCnoyVUkyY3g/
ZSNMejVPQ0w/fXdrY2w9alM7LShTU3RCbEpLZF84SEd0dH1UQi1mMDV7K3p3X25xez1mY001cnFL
aAp6WXpjOEMzSyFrd0ZhT09qO2Q7c0xHKHpEOCYpYk5kT1ZBSUVrVks+N3JOX0R+JWpeZ2ZJPE1T
MmVNVDshQjVqMmAKeiFwNiokXjt9RVgqflE0VXdRWjQ+cmpQZXRgQz9GKGZaV0FoLTIqO0lzIVlu
WD4rdnRQNUFtekg+RUtiPTZKX2FUCnp1MD01Xj4+IyYzQDk1KXYhNVBOcERIY0U1dzR9NHszMkZ9
cldDMSNVX3xUYkh0JTwlOXd8cjg0OG1JUVk7dlczSQp6Ris1bFF4dHJyLWl6UHBLblhrQnplNkgq
PXRqdz1yaDRucDgqeUM3ZHtMKkJuPCN2YWt0U0d6U3U0VlkhWkB5YDwKemB9OXZnRSptKHo0WVJN
TUN1OHthcD8hcGhrdTdqaDF9Q3U7cDdsS0xMJDBrZjJGYGRgdHFSeWh6RSs+Wl8+UTUhCnolKSY3
VnFAfUczezBLQUN7bWA0ekN8RVpDQEtxYFVZdzVnIVgjWkQ+emxEe2pZQytXQHBVa2lTY2VpPD0m
S3U0Kgp6UHVsO3hDaXFCKnQwMHEqRHwwVGd1Wjt9V15VVDJkdXxJYnxmdElaSXd6YW5CJilnXlkq
ekxvYkxyYnVOX2ItVF4KejhPN19mTmlpVzQqRX08UFBgMG40TT57c0BmaGlIfWNiUU9PMyZyQFRY
PjNHbk9mS1o4ciZrdUZHSilrQHBNWTJqCnptWDcleUxZUzFvbHI/ZUR2OXpFUiZNNXttQTY0S3xE
KCE5UyoqWTtPdCNva147TXVSRzRCV092SVlRMXZWMUxEbwp6T2ZgQ2ZXNHBOfSpnMGoybCFsJn1H
KVc4LSt0UH0hI21pPTUzcHVDPmBEa1NLZVAmTnlIQy1lVHVtaHtoQ3p4RjUKekJFZWt6XzVwfVJ7
UHt4MmsqX0VfYG9iMCYtUnxRWiszYDIlZT91Qy0tOFlGQlApdTYyMDVpVUNtNmM8M2gzUFozCnpE
dEokbXc5MUtwI1FtZ0pQcWNlMnNIKzl9a0J3aW9XbD1gZFVpPVEoSWV2V2tmKEFkSSgkY3ZJaV9n
NVZwckttaQp6a35ST25DfDhCK0Q0ZkRKSkNFU010M0hYfGVTajdxNm5Raylkc1VkYnFQNlU0MGVs
Z2FtX29rcDMxQkkzP1ArVEIKemRTYz4jNTwlSUFNTE1eN3MpQStqK1AoNC10dlJmcmdqaHB+WCtB
UzJrIy1YT2tqXmVHNDNMUm80KmIjTGtBelAmCnpMVnYlNXBkPGh6Y3FpPEEzWSMxNkErayVzZVli
ITRKT2BrUVdoTzZlPCVGMkM4ZTFFXlJ2ZVopTk9KUV9QcVloUAp6RGRYJV4qTylKWU1uTCM8P0xf
VkolKHIlR1dSYHQ/MXdhI1duej9CSzJTP3ZMSz1odylSaCFtdHBuVGhFZ2lmWjUKej9MejJRRlNB
K1FuNFplWkR0UEQlTWNuTHxAQnMtJVRSa2lDbX1Wam9hb3FtUF4zSX5sI0Z3WXwqcztrJE5Pd21V
CnpyKHRqcDw7c2tSOG5CakNsTXVAU28qSEpWMUVSVXArQHxKJHdQZTdNdnFgfG1fYmV3JndPQX5m
bEpeWWluVi0qKwp6cUd5K008QS1zbzstPGwyUk9OPHUoUSgrfXA+fT5AeVU7cGV1SjVubmtKMmdP
Ukp2dG5xVW5WRXZ3TjRBKil6eDsKemRCSV9XQEdiS0ljZkYxTzdUfElLJT5YeXp3KlhmRnFXXnJX
ZDRSRkRpZygrbFVxQElTO1BXRClxZ2Q0ZWwyMEY/Cno5MlhgZnhIPitIV2pgIXIrMTlYPCs0TW1T
JUp1K1gjVUFvI3JNJmUxLWlKUlZ6fSZLdzFtczRFJDlYfj8tSCZEMQp6bHpjaXtvLSUxLVIybmxr
VHt7e01KfnMmX05lNCEkZGMtamQzUWxGUStifjM4N3NoMF9OcVVMJjxGc0l1bm1SYGkKem1LP09N
WCpTNStDcykxTCloP3V1PitUXm5aLUw4Um07UXtEbFRrYWhrIVZsMUVILUo3aUQma2xiPGlgJnlg
RHIpCnolR0VFdHhualhqRXl9an5DS1d4aUlsOTBVTndzUEVZYitwajxHLXQyVWNibS1qWWFUfDQ3
R24tZ2x6PFRLQ1BAfgp6K1g4IU5YJEokTT4+S3t5XmFFenBpcjgzV2BRdGFrWDlGdENBNm9OR0tn
ZFNrZV94Z3IjWWZpZDU8MnNGa2hpI18Kek4hKnFHazt0dE5sMSVmQ2p5NEd2YjR2Um51MUw3N2BZ
dWRgKiVOM31AfVBLPEBrNHlDVUo1Z1oxZiUlTFVSP0lmCnpTWUtfZ00qYFF0O2FGc2EqfmZsZnhK
KGZVYjMmIVNke0oyXj5nZmQ+QTlFIUNicil5MkkoNUZBUktOPjJGXn1WNwp6bT8+aExeamJeOVNY
JHI1NCs2UTBQR15PPnRweigyR3I4ZjhralotaGlvNyVIPih1ZTtHYTZ0IWhGcnszVFFCYigKenV1
YjxYYHB5ZUdfaGtTU3Rlais0c09gRFQ5WUQ7clZ9c0VHNzxsRChSKm4pMXN4P0RSb1VRPSljNHQk
cSlWTkIjCnowMUQ8TytTe3F3Ky0/aU49S29fK18oNWVJIWhGIzhWYyhkSDdsQjxoKGtxfH1eYEx+
MzgwSXVAbHA2MDZ3N1pFYAp6Wl4hNnwqYHNaP0t0cEchZFp7dF9XUnxiUXJobHkwT0g2MGE0ND9N
TUBMb2ZUMzc7WHtDcGFYSSl8SFdgKG0kcT4KejtsekItUWxZKWdMSEBLciRlOSt6blY2SkhLTUpV
KzFaLSs5bVZBSSF2YElKR3JJdEdwWE5wOEtlTVZkbTlCfnx9CnpeJndAbVJsQG9IcnwtKHU7OTBu
Pnd2cUhwcENiOzMwXjh7ZyNsdlVyTFhFLUdfdURYZl8yZ2RqVEB+QyVZbXhscwp6PjJkQjFlVCt1
ZldlVipSJmh9NndJZ0ErKlZ8T2J5VG5TK1lXdHJ0dzEqTzJsJCNoNE9TMExPZXB8TT1tdWR1fG0K
ekpZXjQtKGhrMCMremJyUHlIK2NiYX4lJFB3JkRTSnk7alRHO1khKFBvTClXckcwNyhvMmpsaGJr
I31NZlpRPGBACnptPVJKZyRFUVotMUppcDRxcEt0KCU4QGtPM355UlduNStNX0Q0ciFjPXopOytV
ejZfUVEjJlhxVHpfKGFneTtnQAp6V3MwMTg7SDRZXnluVVI0TzYpKDtIMnBeKktqSm5wVG0xR2k3
MT5gaHtwe09Wcy1GdTRrJTtjNHU/Y0VUI0BxJSgKemRpTil1c2xDKURMYCZ6KE9FWkI/WjMyQFBm
WEh9OWtOY0t8QER0VnpTa29vZ3o/OHVQeFY/dzhEe3hJeU9geiVzCnpjR1RwcDhEMiQmOVQ2XlUt
a1RRJD16Ty1TKW4zez04Y3ZSbmomXy1CbyNXaWg8SStUYndjc1loMT5FdEQhZk8+LQp6P0N3ODte
TW9aUmFeR3VKaGk4OGtfO3MqcEJKVntUeUFpVjl7S01vJDwocmo9VFAzI2t7NjhWJmJ3MjFnbU9I
fEoKemUrXjRTRWcmYnhNYlFlI2luPnVNWmtFVFJoVHdjb2x9WilEaXFnVjdSNiN3b0NvfVZ8eyQo
JH5MfjJJY057N1kzCnpUJl80Oy08TGh1ekpwS1VsT1o9SVdFcUFzZ0xmSUdvNlhoa2ZuOHhVMSRm
YGVFUkl0VzJ0UC14PHNJIzZOKn1+OQp6Z1FQcFhRPjZSN2s9Uy18MzEzIU4qTzRSak5DPmFUPlle
fT5NVVJMbjk5a0hZN2woPStjRjNxeUJ2SlV0SVJsPDIKekpmZXkhJmpPRDwwKVlKdCNqblJiPnc7
Y3hPIyRLVSs8bGRWTX4lQ1VRe2l7JVF+OXNNNmckeENzdlJpSFhReE5aCnp1SmRPPil6T2l3c0FZ
YWh5UUl7cVVpMXRsSn5oMkxeZiZyMCgtYkJKcj0mKWpeekpFKzBXfDIjKkcrLU8jN245Ngp6OGBM
Vitidjt4SXZSeEVxYShzYXUyMyVLTElabDJXdX03PCQ2PDdlZ3M5bHF+UypfdiVBYz4wa1JZLSFW
QSNxPTMKejw+OyFfPWQzb0REKSZYTTNpNjxgM3FAKjY8biFMTG4rZ0puVWk3KjV2KyRUJFE5VWp1
eF8qU009WVNKIVYpbTx3CnpUVSU1Yz1EPjxsRiMjU1lTX3c1TmpiWSE8MUp9JC0mPENaUmNJbDww
REIqeUt2WEEkSCVAOUtPYWA8eW52bUVwQgp6LUhwSTcmZUY8Kzx7ciVPNmFJcm8lOX1XQWQ1a01B
P2poQ3lEKl58KCFpOF4mX35iY0dtciZOaSRXZypsMnVkKzgKemopMEJNO3QjamQ1N3JESXV5R1FN
ezcqKjByNj9MJShhYU9kSj5tOUUoIXRocl5VbVlDKE42UjF2Mj5uMkA9R2dtCnpjNS1XKSR8N1VN
WEEzS05gPTJRJChHTH5+NjhNMzNAcypJI3tVMjY4SXgmd1pkaWV1bz89UjwjdiRfeVZTfWlOYwp6
cUZubmJOIUdkP1I7KkNgVlJyPk5GfD8taEkyZ3xHX0YrfDElVnc/az1LQD0kaXF8fWRGTmV0UzFh
bjRUUTtZKkUKelBja15aTzRsPyg/I3lAJkYkeVptRGA5UFFedV43eV8oYlI0T14mYG54YERWd3tO
X0QmZHx1YztiNVZofm40dVAyCnowIXlxRiFFREo0PWNpfnpAWFBwUDgwa3t0dSF3cm90VkNLbi1I
bj0yeXorfUgwM3p2UT1zPkJqKmlLfW00akxEQQp6amMlVmpkc1ZIO1FOdU1CTkBJSCt3TjAkbSgl
SX5PfEZOMH5YMDthfFY+cWBpNypka3MoT1NALVhTUyNWR29EX1gKekhuKjF3cERLWmAqeyZTKVI1
WGxJPmtCSnomam8hOVlZSG5LYE90XllCekIxJTZob0RfTlI0MiF2YWsmVT9HK2QyCnozQTQhWj0y
NUIobnU/MkptRjZsJXFme19tTVFfOTRzdC1DRztLUGFNPjFfPWp1Q3EkQ083T21JSTVrbWomaj9j
dAp6eXdDSlJKQERiVGZvRGVGeU1XOyRkI0xLbylVfTsxNGxrUmhtOGBxKVNKUTJjQ2ZJMmZWTGlN
bTspe0A9bEZmSEUKelBZXzg3VX5rKiReLSNzPXlueFFIZ1p8eHVLdkkwMTdkVjg9cmlPdE5URWZV
SXA9ak5lPiRSYXZWcmY0NzI3cDRFCno2eWooSjJRUExCemdKclcjT0VUNCY5XnkrZnF0JEc7cGwy
bmFibiZqQS1XRXRDdFYwe0Jxa3NfYnV5UzQyczVUOAp6Vnh3dT8oaHJsckNKdnRoY3N+alF4ZVFC
PTw7T0UzRjtXVntQdXZGIVpCYGhZMVgoci1HSzZ8VGZpZH47JGc7ISYKemA4OVVreEc7UjQ7Tj80
ajJwbjhOR1MkK0NTY1hqdkhMUyFMbkZ1YGFPKyt3cUp8Q01gKn5pcmEmJDYxbjxFeyhwCnp2Vml5
fGVjNz42Wk94OUp3VjwoUmheXlllYkNiMDA2clNgfCtrbFVqJk9kcXtlTm8jJDFZaVJ0ZCs9KUJr
Nkw3Rwp6ajg9YG1DRlpLVjFiK3Y+PHpEeGxgd0pwUj9eO2xyPXs1KVRSQ2tpSmUpeyE8aGtCfVR6
fSUzSnpsbDNQMCNpTlAKemVPXjcpOF45bDhAazEqWVFwIztXeTdLaFpNUmk8U1dAX2Epd0NEejZW
YjZ+QGApVUBWS30ySUM4bjRtdCRVXmtqCnpGc21sa1hyaXdzQUpKckpucDlEZkpacHs8VWxHdDh1
cng9YHxHel54Ky02WjEyKCZ6QXsjXmpnJjRBe0w7d3U4MAp6T0I+QkttZ1p0bGJKZU4ye01CNUNZ
WUdJS2xGMyZER19ATnxIQV8/OSheTmIpSERGQ3VUPVNtNXxNQVRVbUR2ekIKWHF8R1A3VylrP2Y2
WF5JNipUV0BGekV9U1ImeVJTZAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzljNzEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSBAQAorICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0
LWN1c3RvbS5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0NDMxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20uaHRtbApAQCAt
MCwwICsxLDggQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworPC9zY3Jp
cHQ+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgncmVzb3VyY2VzL3Zl
cnRleC5zaGFkZXInKSB1cmwoJ3Jlc291cmNlcy9mcmFnbWVudC5zaGFkZXInKSkiIHNyYz0icmVz
b3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IGN1c3Rv
bSh1cmwoJ3Jlc291cmNlcy92ZXJ0ZXguc2hhZGVyJyksIDUgMTApIiBzcmM9InJlc291cmNlcy9y
ZWZlcmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCdy
ZXNvdXJjZXMvdmVydGV4X2RldGFjaGVkLnNoYWRlcicpIHVybCgncmVzb3VyY2VzL2ZyYWdtZW50
LnNoYWRlcicpLCAyIDIgZGV0YWNoZWQpIiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4K
KzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20obm9uZSB1cmwoJ3Jlc291cmNlcy9m
cmFnbWVudC5zaGFkZXInKSkiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9mcmFnbWVudC5zaGFkZXIg
Yi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2ZyYWdtZW50LnNoYWRlcgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmQwNzM0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9mcmFnbWVudC5zaGFkZXIKQEAg
LTAsMCArMSw3IEBACitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjMiB2X3Rl
eENvb3JkOwordW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOwordm9pZCBtYWluKCkKK3sKKyAg
ICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKSArIDAuMzsK
K30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
c3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3ZlcnRleC5zaGFkZXIgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL3ZlcnRleC5zaGFkZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNzhkOGM0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9yZXNvdXJjZXMvdmVydGV4LnNoYWRlcgpAQCAtMCwwICsxLDEzIEBACitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK2F0dHJpYnV0ZSB2
ZWMyIGFfdGV4Q29vcmQ7CisKK3VuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzIgdl90ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9
IHVfcHJvamVjdGlvbk1hdHJpeCAqIChhX3Bvc2l0aW9uICsgdmVjNCgwLjEsIDAuMCwgMC4wLCAw
LjApKTsKKyAgICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4X2RldGFjaGVkLnNoYWRlciBiL0xh
eW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4X2RldGFjaGVkLnNoYWRlcgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzY4YTNjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXhfZGV0YWNoZWQu
c2hhZGVyCkBAIC0wLDAgKzEsMTQgQEAKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCithdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsKK2F0dHJp
YnV0ZSB2ZWMzIGFfdHJpYW5nbGVDb29yZDsKKwordW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbk1h
dHJpeDsKK3ZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworCit2b2lkIG1haW4oKQoreworICAgIGds
X1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uTWF0cml4ICogKGFfcG9zaXRpb24gKyB2ZWM0KGFfdHJp
YW5nbGVDb29yZC54IC8gNC4wLCBhX3RyaWFuZ2xlQ29vcmQueSAvIDQuMCwgMC4wLCAwLjApKTsK
KyAgICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQK
aW5kZXggYjY3NmMwZi4uZjRiY2RiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKQEAgLTE4
OSw2ICsxODksNyBAQCBjb21wb3NpdGluZy92aWRlby1wYWdlLXZpc2liaWxpdHkuaHRtbAogCiAj
IFdlYktpdDIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlCiAj
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxOTc+Citjc3MzL2Zp
bHRlcnMvY3VzdG9tLWZpbHRlci5odG1sCiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1v
YmplY3QtYXR0YWNobWVudC5odG1sCiBmYXN0L2NhbnZhcy93ZWJnbC9nbC12ZXJ0ZXgtYXR0cmli
LXplcm8taXNzdWVzLmh0bWwKIGZhc3QvZXZlbnRzL3BhZ2VoaWRlLXRpbWVvdXQuaHRtbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCA0ZTJhMjQ5Li5jMjY1M2QxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMTEwOCwxMiArMTEwOCwxNSBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcAogCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNo
LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb3NpdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bnZvbHZlTWF0cml4LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21G
aWx0ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGlu
Zy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDFlMWI1MjkuLjhmODU3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAx
MS0xMi0xNSAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFkZXJzXSBBZGQgRkVDdXN0b21GaWx0ZXIgdGhhdCByZW5kZXJzIGN1c3RvbSBm
aWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MzMxNworCisgICAgICAgIFVzaW5nIGEgR3JhcGhpY3NDb250ZXh0M0QgdG8gcmVuZGVyIHRoZSBz
aGFkZXJzIGluIEdQVSBhbmQgcmVhZCB0aGUKKyAgICAgICAgcmVzdWx0IGJhY2sgYW5kIHVzZSBp
dCBpbiB0aGUgc29mdHdhcmUgZmlsdGVycyBwaXBlbGluZS4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBjc3MzL2ZpbHRlcnMvZWZmZWN0LWN1
c3RvbS5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2hhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNoYWRlcjo6Q2Fj
aGVkU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNoYWRlcjo6c2hhZGVyU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNoYWRlcjo6ZGF0YSk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YWRk
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9tRmlsdGVy
TWVzaCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjp+Q3VzdG9tRmlsdGVy
TWVzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJN
ZXNoLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNo
YWRlci5oLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OnZlcnRpY2VzQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OmJ5dGVzUGVyVmVydGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OmVsZW1lbnRzQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OmluZGljZXNDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21GaWx0ZXJNZXNoOjptZXNoQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZp
bHRlck1lc2g6Om1lc2hUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclNoYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
RmlsdGVyU2hhZGVyOjpkZWZhdWx0VmVydGV4U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6ZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6Q3VzdG9tRmlsdGVyU2hhZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6fkN1c3RvbUZpbHRlclNoYWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFk
ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3Rv
bUZpbHRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3J0aG9NYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OkZFQ3VzdG9tRmlsdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVD
dXN0b21GaWx0ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpG
RUN1c3RvbUZpbHRlcjo6ZHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUN1c3RvbUZpbHRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6dG9Db2x1bW5NYWpvckZsb2F0QXJyYXkpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3RPYnNlcnZlcjo6fkZpbHRlckVmZmVjdE9ic2VydmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJH
TEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRl
ckVmZmVjdFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVy
OjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6bm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6ZmlsdGVyTmVlZHNSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkU2hhZGVyOjpjYWNoZWRTaGFkZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVNoYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTaGFkZXI6OmNhY2hlZFNoYWRlcik6CisKIDIwMTEtMTItMTUgIENocmlzIE1hcnJpbiAg
PGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGVkIGVycm9yIGluIFRhcmdldC5wcmku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwNzBjM2E3Li45MTk0ZDA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI1MzYsNiArMjUzNiwxMCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Jl
ZlB0ckNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UmVmUHRyQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
VHJhbnNmb3JtYXRpb25NYXRyaXhDYWlyby5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
U2hhZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlz
dGFudExpZ2h0U291cmNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBcCkBAIC0yNTQ4LDYgKzI1NTIsOCBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0
aW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNw
bGFjZW1lbnRNYXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGZkYjFmNDYuLjgzZjQwYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQpAQCAtMjA3NywxMSArMjA3NywxNCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5o
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIFwKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBcCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb2xvck1hdHJpeC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRy
aXguaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmggXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaCBcCkBAIC0zMjM1LDEyICszMjM4
LDE1IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YU0xUPTEpIHsKIAogY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX0ZJTFRFUlM9MSkgewogICAgIFNPVVJDRVMgKz0gXAorICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwIFwKKyAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3BwIFwKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwIFwKICAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBcCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIFwKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwIFwKKyAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBcCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwIFwKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCA5Y2Y2Njk5Li41MGVmNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjY3LDYgKzM2Njcs
MTAgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VFZmwuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW50UG9pbnRFZmwuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW50UmVjdEVmbC5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNo
YWRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyU2hhZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RGlzdGFudExpZ2h0U291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCcsCkBAIC0zNjc5LDYgKzM2ODMsOCBAQAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4Lmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmls
dGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNl
TGlnaHRpbmcuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlmZnVzZUxpZ2h0aW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOWMxYzY0OS4uZDE0MDUyMSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5NjEyLDYgKzI5NjEyLDIy
IEBACiAJCQkJCU5hbWU9ImZpbHRlcnMiCiAJCQkJCT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJNZXNoLmNw
cCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlck1lc2guaCIKKwkJCQkJ
CT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlclNoYWRlci5jcHAiCisJCQkJCQk+CisJ
CQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJTaGFkZXIuaCIKKwkJCQkJCT4KKwkJCQkJPC9G
aWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xmaWx0ZXJzXERpc3RhbnRMaWdodFNvdXJjZS5jcHAiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4K
QEAgLTI5NjY4LDYgKzI5Njg0LDE0IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZp
bGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xGRUN1
c3RvbUZpbHRlci5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xGRUN1c3RvbUZpbHRl
ci5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcRkVEaWZmdXNlTGlnaHRpbmcuY3BwIgog
CQkJCQkJPgogCQkJCQk8L0ZpbGU+CkBAIC00MjQ3Myw2ICs0MjQ5Nyw3IEBACiAJCQkJPEZpbGUK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcRmlsdGVyT3BlcmF0aW9ucy5o
IgogCQkJCQk+CisJCQkJPC9GaWxlPgogCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cmVuZGVyaW5nXHN0eWxlXEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgogCQkJCQk+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmYw
MmI0MC4uNzVlNTAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTM5MCw2ICsxMzkwLDEzIEBACiAJCTUwMzhCRjI4MTQ3NTBG
MTkwMDk1RTBEMSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMzhCRjI0MTQ3NTBGMTkwMDk1RTBEMSAvKiBD
dXN0b21GaWx0ZXJPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MDhDQ0E0RjEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1Ro
cmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4
Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLzsgfTsKIAkJNTA4
Q0NBNTAxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEUxM0NGMTA2QjAwMzE1
MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwICovOyB9OworCQk1MEQ0MDNDNzE0NzY4Qzk0MDBE
MzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTBENDAzQzUxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmls
dGVyLmNwcCAqLzsgfTsKKwkJNTBENDAzQzgxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmls
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0
MDNDNjE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCAqLzsgfTsKKwkJNTBENDA1
RjkxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA1RjcxNDdEMzFGMzAwRDMwQkI1
IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwICovOyB9OworCQk1MEQ0MDVGQTE0N0QzMUYzMDBEMzBC
QjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTBENDA1RjgxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1l
c2guaCAqLzsgfTsKKwkJNTBENDA2MTExNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNo
YWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MEQ0MDYwRjE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCAqLzsgfTsK
KwkJNTBENDA2MTIxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2MTAxNDdENDlE
RTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5oICovOyB9OworCQk1MEQ0MDY3RDE0N0U0
MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNjdDMTQ3RTQwRDgwMEQzMEJCNSAvKiBG
aWx0ZXJFZmZlY3RPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUwRTU2NkQ2MTM5RTM4QzUwMDIxNDQzMyAvKiBDU1NXcmFwU2hhcGVz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMUJB
QUIxMTM5NTExNEIwMEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmNwcCAqLzsgfTsKIAkJNTEwMTg0
NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNo
ZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTEwMTg0NkEwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjgwQjA4NjAyQTAwNEE4
MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovOyB9OwpAQCAtODYyMyw2ICs4NjMwLDEzIEBACiAJCTUw
OENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJl
YWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRmxvd1Ro
cmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwQjQyMTU3MTQ2OTc2OTYw
MDg3RTYwNCAvKiBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MEQ0MDNDNTE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRkVDdXN0b21GaWx0ZXIuY3BwOyBw
YXRoID0gZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUwRDQwM0M2MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGRUN1c3RvbUZpbHRlci5oOyBwYXRoID0gZmls
dGVycy9GRUN1c3RvbUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0
MDVGNzE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21GaWx0ZXJNZXNoLmNwcDsgcGF0aCA9IGZp
bHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUwRDQwNUY4MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2guaDsgcGF0aCA9IGZpbHRl
cnMvQ3VzdG9tRmlsdGVyTWVzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0
MDYwRjE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlclNoYWRlci5jcHA7IHBhdGgg
PSBmaWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyU2hhZGVyLmg7IHBh
dGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyRWZmZWN0T2JzZXJ2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVG
IC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVk
UGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0
QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRB
MkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc3MDgsNiArMTc3MjIsMTIgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTQ5RUNFQjVDMTQ5OTc5MEQwMENERDNBNCAvKiBhcm0gKi8sCiAJCQkJ
MTk4NDFCRkExMzY4MzZBMTAwNkVCQkI5IC8qIGFybSAqLywKKwkJCQk1MEQ0MDYwRjE0N0Q0OURF
MDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCAqLywKKwkJCQk1MEQ0MDYxMDE0N0Q0
OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggKi8sCisJCQkJNTBENDA1RjcxNDdE
MzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwICovLAorCQkJCTUwRDQwNUY4MTQ3
RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi8sCisJCQkJNTBENDAzQzUxNDc2
OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCAqLywKKwkJCQk1MEQ0MDNDNjE0NzY4
Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCAqLywKIAkJCQlBMUUxMTU0MzEzMDE1QzNE
MDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNwcCAqLywKIAkJCQk4NDczMEQ1QTEyNDhG
MEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNlLmggKi8sCiAJCQkJQTc1RThCODAwRTFE
RTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwICovLApAQCAtMjA5MjMsNiArMjA5NDMsNyBAQAog
CQlGNTIzRDJGMzAyREU0NDNCMDE4NjM1Q0EgLyogcmVuZGVyaW5nICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUg
LyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCAqLywKIAkJCQk0MzkwNDZDMjEyREEyNUNFMDBBRjgw
QTIgLyogbWF0aG1sICovLAogCQkJCUJDOEM4RkFBMEREQ0QyRjIwMEI1OTJGNCAvKiBzdHlsZSAq
LywKIAkJCQkwODhDMkY3NDEyMzkwMDgwMDAzRDY1Q0UgLyogc3ZnICovLApAQCAtMjQ4NDIsNiAr
MjQ4NjMsMTAgQEAKIAkJCQlBMTBEQzc2QjE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEyQzBDNDExNDZEQzZDQzAwMTZDOTExIC8qIE5vdGlm
aWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEyOENBNkIxNDczMzE2MzAwNzRDNzJBIC8q
IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUwRDQwM0M4MTQ3
NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTBE
NDA1RkExNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guaCBpbiBIZWFkZXJzICov
LAorCQkJCTUwRDQwNjEyMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTUwRDQwNjdEMTQ3RTQwRDgwMEQzMEJCNSAvKiBGaWx0ZXJFZmZl
Y3RPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FBNTFERDYxNDg1MDZBOTAwQUQyNzUy
IC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDM4QkYyODE0
NzUwRjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJl
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzcyOSw2ICsyNzc1NCw5IEBACiAJCQkJN0FBNTFCNkYx
NDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBMTBEQzc2QTE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzMTI4Q0E2ODE0NzMzMTUyMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MEQ0MDNDNzE0NzY4Qzk0MDBEMzBCQjUg
LyogRkVDdXN0b21GaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTBENDA1RjkxNDdEMzFG
MzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTBE
NDA2MTExNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QUE1MURENTE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkUzRkFEMzgxNDczM0Y0MDAwRTQyMzA2IC8qIEpT
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdFMTE2QjEx
NDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAppbmRleCAxZDhm
NTQwLi4xM2JkYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2hhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hh
ZGVyLmNwcApAQCAtMzIsMTEgKzMyLDE0IEBACiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogCiAj
aW5jbHVkZSAiQ2FjaGVkU2hhZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENh
Y2hlZFNoYWRlcjo6Q2FjaGVkU2hhZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQogICAgIDogQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2VSZXF1ZXN0LCBTaGFkZXJSZXNv
dXJjZSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxp
Y2F0aW9uL3NoYWRlciIpKQogewogfQogCkBAIC00NCw2ICs0NywyNCBAQCBDYWNoZWRTaGFkZXI6
On5DYWNoZWRTaGFkZXIoKQogewogfQogCitjb25zdCBTdHJpbmcmIENhY2hlZFNoYWRlcjo6c2hh
ZGVyU3RyaW5nKCkKK3sKKyAgICBpZiAoIW1fc2hhZGVyU3RyaW5nICYmIG1fZGF0YSkgeworICAg
ICAgICBtX3NoYWRlclN0cmluZyA9IG1fZGVjb2Rlci0+ZGVjb2RlKG1fZGF0YS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hhZGVyU3RyaW5nICs9IG1fZGVjb2Rlci0+Zmx1
c2goKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zaGFkZXJTdHJpbmc7Cit9CisKK3ZvaWQgQ2Fj
aGVkU2hhZGVyOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3sKKyAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKQorICAgICAgICBtX2RhdGEg
PSBkYXRhOworCisgICAgQ2FjaGVkUmVzb3VyY2U6OmRhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVk
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19T
SEFERVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNo
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCmluZGV4
IDhkZWFkMDEuLmNjMzhmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2hhZGVyLmgKQEAgLTM2LDEwICszNiwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFRleHRSZXNvdXJjZURlY29kZXI7CisKIGNsYXNzIENhY2hlZFNoYWRlciA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZSB7CiBwdWJsaWM6CiAgICAgQ2FjaGVkU2hhZGVyKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogICAgIHZpcnR1YWwgfkNhY2hlZFNoYWRlcigpOworICAgIAorICAgIGNvbnN0
IFN0cmluZyYgc2hhZGVyU3RyaW5nKCk7CisgICAgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIAorcHJpdmF0ZToKKyAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOworICAgIFN0cmluZyBtX3NoYWRlclN0
cmluZzsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmM3M2VhYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCkBAIC0w
LDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDi
gJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBC
RQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5j
bHVkZSAiQ3VzdG9tRmlsdGVyTWVzaC5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKKworI2RlZmluZSBERUJVR19DVVNUT01fRklMVEVSX01FU0ggMAorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyB2b2lkIGFkZFBvaW50KGludCBpLCBpbnQgaiwgVmVjdG9yPGZsb2F0
PiYgdmVydGljZXMsIFZlY3Rvcjx1aW50MTZfdD4mIGluZGljZXMsIGZsb2F0IGhTaXplLCBmbG9h
dCB2U2l6ZSwgZmxvYXQgbWhTaXplLCBmbG9hdCBtdlNpemUsIGZsb2F0IG1lc2hCb3hYLCBmbG9h
dCBtZXNoQm94WSwgaW50IGRpLCBpbnQgZGosIGludCB0cmlhbmdsZSkKK3sKKyAgICBkaSArPSBp
OworICAgIGRqICs9IGo7CisgICAgdmVydGljZXMuYXBwZW5kKGhTaXplICogZGkgLSAwLjVmICsg
bWVzaEJveFgpOworICAgIHZlcnRpY2VzLmFwcGVuZCh2U2l6ZSAqIGRqIC0gMC41ZiArIG1lc2hC
b3hZKTsKKyAgICB2ZXJ0aWNlcy5hcHBlbmQoMC4wZik7CisgICAgdmVydGljZXMuYXBwZW5kKDEu
MGYpOworICAgIHZlcnRpY2VzLmFwcGVuZChoU2l6ZSAqIGRpICsgbWVzaEJveFgpOworICAgIHZl
cnRpY2VzLmFwcGVuZCh2U2l6ZSAqIGRqICsgbWVzaEJveFkpOworICAgIHZlcnRpY2VzLmFwcGVu
ZChtaFNpemUgKiBkaSk7CisgICAgdmVydGljZXMuYXBwZW5kKG12U2l6ZSAqIGRqKTsKKyAgICB2
ZXJ0aWNlcy5hcHBlbmQoaSk7CisgICAgdmVydGljZXMuYXBwZW5kKGopOworICAgIHZlcnRpY2Vz
LmFwcGVuZCh0cmlhbmdsZSk7CisgICAgaW5kaWNlcy5hcHBlbmQoaW5kaWNlcy5zaXplKCkpOwor
fQorCitDdXN0b21GaWx0ZXJNZXNoOjpDdXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBjb2xzLCB1bnNpZ25lZCByb3dzLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0
ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQp
CisgICAgLCBtX3ZlcnRpY2VzQnVmZmVyKDApCisgICAgLCBtX2VsZW1lbnRzQnVmZmVyKDApCisg
ICAgLCBtX21lc2hCb3gobWVzaEJveCkKKyAgICAsIG1fbWVzaFR5cGUobWVzaFR5cGUpCit7Cisg
ICAgdW5zaWduZWQgZmxvYXRzUGVyVmVydGV4OworICAgIAorICAgIFZlY3RvcjxmbG9hdD4gdmVy
dGljZXM7CisgICAgVmVjdG9yPHVpbnQxNl90PiBpbmRpY2VzOworCisgICAgdW5zaWduZWQgaFBv
aW50cyA9IGNvbHMgKyAyOworICAgIHVuc2lnbmVkIHZQb2ludHMgPSByb3dzICsgMjsKKworICAg
IHVuc2lnbmVkIGhTcGFjZXMgPSBjb2xzICsgMTsKKyAgICB1bnNpZ25lZCB2U3BhY2VzID0gcm93
cyArIDE7CisgICAgICAgIAorICAgIGZsb2F0IGhTaXplID0gbWVzaEJveC53aWR0aCgpIC8gaFNw
YWNlczsKKyAgICBmbG9hdCB2U2l6ZSA9IG1lc2hCb3guaGVpZ2h0KCkgLyB2U3BhY2VzOworCisg
ICAgZmxvYXQgbWhTaXplID0gMS4wIC8gaFNwYWNlczsKKyAgICBmbG9hdCBtdlNpemUgPSAxLjAg
LyB2U3BhY2VzOworICAgIAorICAgIGZsb2F0IG1lc2hCb3hYID0gbWVzaEJveC54KCk7CisgICAg
ZmxvYXQgbWVzaEJveFkgPSBtZXNoQm94LnkoKTsKKyAgICAKKyAgICBtX2luZGljZXNDb3VudCA9
IGhTcGFjZXMgKiB2U3BhY2VzICogMiAqIDM7IC8vIDIgdHJpYW5nbGVzIHBlciBxdWFkLCAzIGlu
ZGljZXMgcGVyIHRyaWFuZ2xlCisgICAgaW5kaWNlcy5yZXNlcnZlQ2FwYWNpdHkobV9pbmRpY2Vz
Q291bnQpOyAKKyAgICAKKyAgICBpZiAobWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
OjpBVFRBQ0hFRCkgeworICAgICAgICBmbG9hdHNQZXJWZXJ0ZXggPSA4OworICAgICAgICAvLyBU
cmlhbmdsZXMgc2hhcmUgdGhlaXIgcG9pbnRzLgorICAgICAgICB2ZXJ0aWNlcy5yZXNlcnZlQ2Fw
YWNpdHkoaFBvaW50cyAqIHZQb2ludHMgKiBmbG9hdHNQZXJWZXJ0ZXgpOworICAgICAgICAKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHZQb2ludHM7ICsraikgeworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhQb2ludHM7ICsraSkgeworICAgICAgICAgICAg
ICAgIHZlcnRpY2VzLmFwcGVuZChoU2l6ZSAqIGkgLSAwLjVmICsgbWVzaEJveFgpOworICAgICAg
ICAgICAgICAgIHZlcnRpY2VzLmFwcGVuZCh2U2l6ZSAqIGogLSAwLjVmICsgbWVzaEJveFkpOwor
ICAgICAgICAgICAgICAgIHZlcnRpY2VzLmFwcGVuZCgwLjBmKTsKKyAgICAgICAgICAgICAgICB2
ZXJ0aWNlcy5hcHBlbmQoMS4wZik7CisgICAgICAgICAgICAgICAgdmVydGljZXMuYXBwZW5kKGhT
aXplICogaSArIG1lc2hCb3hYKTsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNlcy5hcHBlbmQodlNp
emUgKiBqICsgbWVzaEJveFkpOworICAgICAgICAgICAgICAgIHZlcnRpY2VzLmFwcGVuZChtaFNp
emUgKiBpKTsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNlcy5hcHBlbmQobXZTaXplICogaik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICNkZWZpbmUgQUREX1BP
SU5UKHgsIHkpIFwKKyAgICAgICAgICAgIGluZGljZXMuYXBwZW5kKChqICsgeSkgKiBoUG9pbnRz
ICsgKGkgKyB4KSk7CisgICAgICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IHZTcGFjZXM7ICsraikgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGhTcGFjZXM7ICsraSkgeworICAgICAgICAgICAgICAgIEFERF9QT0lOVCgwLCAwKTsKKyAgICAg
ICAgICAgICAgICBBRERfUE9JTlQoMSwgMCk7CisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDEs
IDEpOworCisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDAsIDApOworICAgICAgICAgICAgICAg
IEFERF9QT0lOVCgxLCAxKTsKKyAgICAgICAgICAgICAgICBBRERfUE9JTlQoMCwgMSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICN1bmRlZiBBRERfUE9JTlQK
KyAgICB9IGVsc2UgeworICAgICAgICBmbG9hdHNQZXJWZXJ0ZXggPSAxMTsKKyAgICAgICAgLy8g
VHJpYW5nbGVzIGRvIG5vdCBzaGFyZSBhbnkgb2YgdGhlIHZlcnRleGVzLCBzbyB3ZSBuZWVkIGEg
dmVydGV4IHBlciBpbmRleC4KKyAgICAgICAgdmVydGljZXMucmVzZXJ2ZUNhcGFjaXR5KG1faW5k
aWNlc0NvdW50ICogZmxvYXRzUGVyVmVydGV4KTsKKworICAgICAgICAjZGVmaW5lIEFERF9QT0lO
VCh4LCB5LCB0cmlhbmdsZSkgXAorICAgICAgICAgICAgYWRkUG9pbnQoaSwgaiwgdmVydGljZXMs
IGluZGljZXMsIGhTaXplLCB2U2l6ZSwgbWhTaXplLCBtdlNpemUsIG1lc2hCb3hYLCBtZXNoQm94
WSwgeCwgeSwgdHJpYW5nbGUpCisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHZT
cGFjZXM7ICsraikgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhTcGFj
ZXM7ICsraSkgeworICAgICAgICAgICAgICAgIEFERF9QT0lOVCgwLCAwLCAwKTsKKyAgICAgICAg
ICAgICAgICBBRERfUE9JTlQoMSwgMCwgMSk7CisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDEs
IDEsIDIpOworCisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDAsIDAsIDMpOworICAgICAgICAg
ICAgICAgIEFERF9QT0lOVCgxLCAxLCA0KTsKKyAgICAgICAgICAgICAgICBBRERfUE9JTlQoMCwg
MSwgNSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICN1bmRl
ZiBBRERfUE9JTlQKKyAgICB9CisgICAgCisgICAgbV9ieXRlc1BlclZlcnRleCA9IGZsb2F0c1Bl
clZlcnRleCAqIHNpemVvZihmbG9hdCk7CisgICAgCisjaWYgREVCVUdfQ1VTVE9NX0ZJTFRFUl9N
RVNICisgICAgcHJpbnRmKCJNZXNoVkJPOiBSb3dzOiAlZCwgQ29sczogJWQgYm94OiAlZiwgJWYs
ICVmLCAlZiwgdHlwZTogJXNcbiIsIAorICAgICAgICAgICAgY29scywgcm93cywgbWVzaEJveC54
KCksIG1lc2hCb3gueSgpLCBtZXNoQm94LndpZHRoKCksIG1lc2hCb3guaGVpZ2h0KCksIChtZXNo
VHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEKSA/ICJBdHRhY2hlZCIgOiAi
RGV0YWNoZWQiKTsKKyAgICBwcmludGYoIi0tLVZlcnRleDpcblx0Iik7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHZlcnRpY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHByaW50Zigi
JWYgIiwgdmVydGljZXMuYXQoaSkpOworICAgICAgICBpZiAoISgoaSArIDEpICUgZmxvYXRzUGVy
VmVydGV4KSkKKyAgICAgICAgICAgIHByaW50ZigiXG5cdCIpOworICAgIH0KKyAgICBwcmludGYo
IlxuLS0tSW5kaWNlczogIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluZGljZXMu
c2l6ZSgpOyArK2kpCisgICAgICAgIHByaW50ZigiJWQgIiwgaW5kaWNlcy5hdChpKSk7CisgICAg
cHJpbnRmKCJcbiIpOworI2VuZGlmCisKKyAgICBtX3ZlcnRpY2VzQnVmZmVyID0gbV9jb250ZXh0
LT5jcmVhdGVCdWZmZXIoKTsKKyAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV92ZXJ0aWNlc0J1ZmZlcik7CisgICAgbV9jb250ZXh0LT5i
dWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIHZlcnRpY2VzLnNpemUo
KSAqIHNpemVvZihmbG9hdCksIHZlcnRpY2VzLmRhdGEoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlNU
QVRJQ19EUkFXKTsKKyAgICAKKyAgICBtX2VsZW1lbnRzQnVmZmVyID0gbV9jb250ZXh0LT5jcmVh
dGVCdWZmZXIoKTsKKyAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBtX2VsZW1lbnRzQnVmZmVyKTsKKyAgICBtX2NvbnRleHQt
PmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRp
Y2VzLnNpemUoKSAqIHNpemVvZih1aW50MTZfdCksIGluZGljZXMuZGF0YSgpLCBHcmFwaGljc0Nv
bnRleHQzRDo6U1RBVElDX0RSQVcpOworfQorCitDdXN0b21GaWx0ZXJNZXNoOjp+Q3VzdG9tRmls
dGVyTWVzaCgpCit7CisgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV92ZXJ0aWNlc0J1ZmZl
cik7CisgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV9lbGVtZW50c0J1ZmZlcik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykg
JiYgRU5BQkxFKFdFQkdMKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQ3YmY0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaApAQCAtMCww
ICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0
ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxB
UyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQor
ICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3VzdG9tRmls
dGVyTWVzaF9oCisjZGVmaW5lIEN1c3RvbUZpbHRlck1lc2hfaAorCisjaWYgRU5BQkxFKENTU19T
SEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRp
b24uaCIKKyNpbmNsdWRlIDxGbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworCitj
bGFzcyBDdXN0b21GaWx0ZXJNZXNoIDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyTWVz
aD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck1lc2g+IGNy
ZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgY29scywgdW5zaWduZWQg
cm93cywgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBt
ZXNoVHlwZSkgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlck1lc2go
Y29udGV4dCwgY29scywgcm93cywgbWVzaEJveCwgbWVzaFR5cGUpKTsKKyAgICB9CisgICAgfkN1
c3RvbUZpbHRlck1lc2goKTsKKworICAgIHVuc2lnbmVkIHZlcnRpY2VzQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV92ZXJ0aWNlc0J1ZmZlcjsgfQorICAgIHVuc2lnbmVkIGJ5dGVzUGVyVmVydGV4
KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlc1BlclZlcnRleDsgfQorICAgIAorICAgIHVuc2lnbmVk
IGVsZW1lbnRzQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50c0J1ZmZlcjsgfQorICAg
IHVuc2lnbmVkIGluZGljZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kaWNlc0NvdW50OyB9
CisgICAgCisgICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94KCkgY29uc3QgeyByZXR1cm4gbV9t
ZXNoQm94OyB9CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVzaFR5cGU7IH0KKworcHJpdmF0ZToKKyAgICBDdXN0b21GaWx0
ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywg
Y29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBl
KTsKKyAgICAKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIAorICAgIHVu
c2lnbmVkIG1fdmVydGljZXNCdWZmZXI7CisgICAgdW5zaWduZWQgbV9ieXRlc1BlclZlcnRleDsK
KyAgICAKKyAgICB1bnNpZ25lZCBtX2VsZW1lbnRzQnVmZmVyOworICAgIHVuc2lnbmVkIG1faW5k
aWNlc0NvdW50OworICAgIAorICAgIEZsb2F0UmVjdCBtX21lc2hCb3g7CisgICAgQ3VzdG9tRmls
dGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtX21lc2hUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wp
CisKKyNlbmRpZiAvLyBDdXN0b21GaWx0ZXJNZXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjNkODY4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJTaGFkZXIuY3BwCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IDIw
MTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
KyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykg
JiYgRU5BQkxFKFdFQkdMKQorCisjZGVmaW5lIFNIQURFUjAoU3JjKSAjU3JjCisjZGVmaW5lIFNI
QURFUihTcmMpIFNIQURFUjAoU3JjKQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyU2hhZGVyLmgi
CisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1N0cmluZyBDdXN0b21GaWx0ZXJTaGFkZXI6OmRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmco
KQoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICBhdHRyaWJ1dGUg
dmVjMiBhX3RleENvb3JkOworICAgICAgICB1bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uTWF0cml4
OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdm9pZCBtYWluKCkK
KyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXgg
KiBhX3Bvc2l0aW9uOworICAgICAgICAgICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7CisgICAg
ICAgIH0KKyAgICApOworfQorCitTdHJpbmcgQ3VzdG9tRmlsdGVyU2hhZGVyOjpkZWZhdWx0RnJh
Z21lbnRTaGFkZXJTdHJpbmcoKQoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAg
ICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOworICAgICAgICB2b2lkIG1haW4oKQor
ICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJl
LCB2X3RleENvb3JkKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK0N1c3RvbUZpbHRlclNoYWRl
cjo6Q3VzdG9tRmlsdGVyU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHZlcnRleFNoYWRlclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclN0
cmluZykKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV92ZXJ0ZXhTaGFkZXJTdHJp
bmcoIXZlcnRleFNoYWRlclN0cmluZy5pc051bGwoKSA/IHZlcnRleFNoYWRlclN0cmluZyA6IGRl
ZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcoKSkKKyAgICAsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmco
IWZyYWdtZW50U2hhZGVyU3RyaW5nLmlzTnVsbCgpID8gZnJhZ21lbnRTaGFkZXJTdHJpbmcgOiBk
ZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKSkKKyAgICAsIG1fcHJvZ3JhbSgwKQorICAgICwg
bV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV90ZXhBdHRyaWJMb2NhdGlvbigt
MSkKKyAgICAsIG1fbWVzaEF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV90cmlhbmdsZUF0dHJp
YkxvY2F0aW9uKC0xKQorICAgICwgbV9tZXNoQm94TG9jYXRpb24oLTEpCisgICAgLCBtX3Byb2pl
Y3Rpb25NYXRyaXhMb2NhdGlvbigtMSkKKyAgICAsIG1fdGlsZVNpemVMb2NhdGlvbigtMSkKKyAg
ICAsIG1fbWVzaFNpemVMb2NhdGlvbigtMSkKKyAgICAsIG1fc2FtcGxlckxvY2F0aW9uKC0xKQor
ICAgICwgbV9zYW1wbGVyU2l6ZUxvY2F0aW9uKC0xKQorICAgICwgbV9jb250ZW50U2FtcGxlckxv
Y2F0aW9uKC0xKQorICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQoreworICAgIFBsYXRmb3Jt
M0RPYmplY3QgdmVydGV4U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OlZFUlRFWF9TSEFERVIpOworICAgIFBsYXRmb3JtM0RPYmplY3QgZnJhZ21lbnRT
aGFkZXIgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBR01F
TlRfU0hBREVSKTsKKworICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwg
bV92ZXJ0ZXhTaGFkZXJTdHJpbmcpOworICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcih2ZXJ0
ZXhTaGFkZXIpOworICAgIAorICAgIGludCBjb21waWxlZCA9IDA7CisgICAgbV9jb250ZXh0LT5n
ZXRTaGFkZXJpdih2ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QSUxFX1NUQVRV
UywgJmNvbXBpbGVkKTsKKyAgICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGFuIGludmFsaWQgc2hhZGVyLiBUaHJvdyBzb21lIGVycm9ycy4KKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDE2CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UoZnJhZ21lbnRT
aGFkZXIsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcpOworICAgIG1fY29udGV4dC0+Y29tcGlsZVNo
YWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgCisgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihm
cmFnbWVudFNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVTLCAmY29tcGls
ZWQpOworICAgIGlmICghY29tcGlsZWQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4g
aW52YWxpZCBzaGFkZXIuIFRocm93IHNvbWUgZXJyb3JzLgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MTYKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBtX3Byb2dyYW0gPSBtX2NvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKKyAg
ICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3Byb2dyYW0sIHZlcnRleFNoYWRlcik7CisgICAg
bV9jb250ZXh0LT5hdHRhY2hTaGFkZXIobV9wcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7CisgICAg
bV9jb250ZXh0LT5saW5rUHJvZ3JhbShtX3Byb2dyYW0pOworICAgIAorICAgIG1fY29udGV4dC0+
ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIo
ZnJhZ21lbnRTaGFkZXIpOworICAgIAorICAgIGludCBsaW5rZWQgPSAwOworICAgIG1fY29udGV4
dC0+Z2V0UHJvZ3JhbWl2KG1fcHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTktfU1RBVFVT
LCAmbGlua2VkKTsKKyAgICBpZiAoIWxpbmtlZCkgeworICAgICAgICAvLyBGSVhNRTogSW52YWxp
ZCB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVyIGNvbWJpbmF0aW9uLiBUaHJvdyBzb21lIGVycm9ycyBo
ZXJlLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQ0MTYKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX3Bvc2l0aW9uQXR0cmli
TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfcG9z
aXRpb24iKTsKKyAgICBtX3RleEF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJM
b2NhdGlvbihtX3Byb2dyYW0sICJhX3RleENvb3JkIik7CisgICAgbV9tZXNoQXR0cmliTG9jYXRp
b24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfbWVzaENvb3Jk
Iik7CisgICAgbV90cmlhbmdsZUF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJM
b2NhdGlvbihtX3Byb2dyYW0sICJhX3RyaWFuZ2xlQ29vcmQiKTsKKyAgICBtX21lc2hCb3hMb2Nh
dGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfbWVzaEJv
eCIpOworICAgIG1fdGlsZVNpemVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKG1fcHJvZ3JhbSwgInVfdGlsZVNpemUiKTsKKyAgICBtX21lc2hTaXplTG9jYXRpb24gPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X21lc2hTaXplIik7Cisg
ICAgbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihtX3Byb2dyYW0sICJ1X3Byb2plY3Rpb25NYXRyaXgiKTsKKyAgICBtX3NhbXBsZXJMb2Nh
dGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInNfdGV4dHVy
ZSIpOworICAgIG1fc2FtcGxlclNpemVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1fcHJvZ3JhbSwgInNfdGV4dHVyZVNpemUiKTsKKyAgICBtX2NvbnRlbnRTYW1wbGVy
TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJzX2Nv
bnRlbnRUZXh0dXJlIik7CisgICAgCisgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKK30KKyAg
ICAKK0N1c3RvbUZpbHRlclNoYWRlcjo6fkN1c3RvbUZpbHRlclNoYWRlcigpCit7CisgICAgaWYg
KG1fcHJvZ3JhbSkKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fcHJvZ3JhbSk7
Cit9CisKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VC
R0wpCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYWYxZmNjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgKQEAgLTAsMCArMSwx
MDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT
4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YK
KyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21GaWx0ZXJT
aGFkZXJfaAorI2RlZmluZSBDdXN0b21GaWx0ZXJTaGFkZXJfaAorCisjaWYgRU5BQkxFKENTU19T
SEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwor
CitjbGFzcyBDdXN0b21GaWx0ZXJTaGFkZXI6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRl
clNoYWRlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclNo
YWRlcj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZl
cnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcikKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyU2hhZGVyKGNvbnRleHQsIHZlcnRleFNo
YWRlciwgZnJhZ21lbnRTaGFkZXIpKTsKKyAgICB9CisgICAgCisgICAgfkN1c3RvbUZpbHRlclNo
YWRlcigpOworICAgIAorICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFZlcnRleFNoYWRlclN0cmlu
ZygpOworICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCk7ICAg
IAorICAgIAorICAgIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiBt
X3ZlcnRleFNoYWRlclN0cmluZzsgfQorICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7IH0KKyAgICAKKyAgICBpbnQg
cG9zaXRpb25BdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb25BdHRyaWJM
b2NhdGlvbjsgfQorICAgIGludCB0ZXhBdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4QXR0cmliTG9jYXRpb247IH0KKyAgICBpbnQgbWVzaEF0dHJpYkxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9tZXNoQXR0cmliTG9jYXRpb247IH0KKyAgICBpbnQgdHJpYW5nbGVBdHRyaWJM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJpYW5nbGVBdHRyaWJMb2NhdGlvbjsgfQorICAg
IGludCBtZXNoQm94TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lc2hCb3hMb2NhdGlvbjsg
fQorICAgIGludCBwcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3By
b2plY3Rpb25NYXRyaXhMb2NhdGlvbjsgfQorICAgIGludCB0aWxlU2l6ZUxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV90aWxlU2l6ZUxvY2F0aW9uOyB9CisgICAgaW50IG1lc2hTaXplTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX21lc2hTaXplTG9jYXRpb247IH0KKyAgICBpbnQgc2FtcGxl
ckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb247IH0KKyAgICBpbnQg
Y29udGVudFNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNhbXBsZXJM
b2NhdGlvbjsgfQorICAgIGludCBzYW1wbGVyU2l6ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zYW1wbGVyU2l6ZUxvY2F0aW9uOyB9CisgICAgCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemVkOyB9CisgICAgCisgICAgUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtOyB9CisKK3ByaXZhdGU6Cisg
ICAgQ3VzdG9tRmlsdGVyU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2
ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpOworICAgIAorICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIAorICAgIFN0cmluZyBtX3Zl
cnRleFNoYWRlclN0cmluZzsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZzsKKwor
ICAgIFBsYXRmb3JtM0RPYmplY3QgbV9wcm9ncmFtOworICAgIAorICAgIGludCBtX3Bvc2l0aW9u
QXR0cmliTG9jYXRpb247CisgICAgaW50IG1fdGV4QXR0cmliTG9jYXRpb247CisgICAgaW50IG1f
bWVzaEF0dHJpYkxvY2F0aW9uOworICAgIGludCBtX3RyaWFuZ2xlQXR0cmliTG9jYXRpb247Cisg
ICAgaW50IG1fbWVzaEJveExvY2F0aW9uOworICAgIGludCBtX3Byb2plY3Rpb25NYXRyaXhMb2Nh
dGlvbjsKKyAgICBpbnQgbV90aWxlU2l6ZUxvY2F0aW9uOworICAgIGludCBtX21lc2hTaXplTG9j
YXRpb247CisgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOworICAgIGludCBtX3NhbXBsZXJTaXpl
TG9jYXRpb247CisgICAgaW50IG1fY29udGVudFNhbXBsZXJMb2NhdGlvbjsKKyAgICAKKyAgICBi
b29sIG1faXNJbml0aWFsaXplZDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hB
REVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNkNzQyYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0
ZXIuY3BwCkBAIC0wLDAgKzEsMjEyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdF
QkdMKQorI2luY2x1ZGUgIkZFQ3VzdG9tRmlsdGVyLmgiCisKKyNpbmNsdWRlICJDYWNoZWRTaGFk
ZXIuaCIKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJNZXNoLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmls
dGVyU2hhZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEcmF3aW5nQnVm
ZmVyLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0
LmgiCisjaW5jbHVkZSAiU3R5bGVDYWNoZWRTaGFkZXIuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCisjaW5jbHVkZSAiVGV4dHVyZS5oIgorI2luY2x1ZGUgIlRpbGluZ0RhdGEuaCIKKyNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCisjaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBv
cnRob01hdHJpeChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmbG9hdCB0
b3ApCit7CisgICAgZmxvYXQgZGVsdGFYID0gcmlnaHQgLSBsZWZ0OworICAgIGZsb2F0IGRlbHRh
WSA9IHRvcCAtIGJvdHRvbTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRobzsKKyAgICBp
ZiAoIWRlbHRhWCB8fCAhZGVsdGFZKQorICAgICAgICByZXR1cm4gb3J0aG87CisgICAgb3J0aG8u
c2V0TTExKDIuMGYgLyBkZWx0YVgpOworICAgIG9ydGhvLnNldE00MSgtKHJpZ2h0ICsgbGVmdCkg
LyBkZWx0YVgpOworICAgIG9ydGhvLnNldE0yMigyLjBmIC8gZGVsdGFZKTsKKyAgICBvcnRoby5z
ZXRNNDIoLSh0b3AgKyBib3R0b20pIC8gZGVsdGFZKTsKKworICAgIC8vIFVzZSBiaWcgZW5vdWdo
IG5lYXIvZmFyIHZhbHVlcywgc28gdGhhdCBzaW1wbGUgcm90YXRpb25zIG9mIHJhdGhlciBsYXJn
ZSBvYmplY3RzIHdpbGwgbm90CisgICAgLy8gZ2V0IGNsaXBwZWQuIDEwMDAwIHNob3VsZCBjb3Zl
ciBtb3N0IG9mIHRoZSBzY3JlZW4gcmVzb2x1dGlvbnMuCisgICAgY29uc3QgZmxvYXQgZmFyVmFs
dWUgPSAxMDAwMDsKKyAgICBjb25zdCBmbG9hdCBuZWFyVmFsdWUgPSAtMTAwMDA7CisgICAgb3J0
aG8uc2V0TTMzKC0yLjBmIC8gKGZhclZhbHVlIC0gbmVhclZhbHVlKSk7CisgICAgb3J0aG8uc2V0
TTQzKC0gKGZhclZhbHVlICsgbmVhclZhbHVlKSAvIChmYXJWYWx1ZSAtIG5lYXJWYWx1ZSkpOwor
ICAgIG9ydGhvLnNldE00NCgxLjBmKTsKKworICAgIHJldHVybiBvcnRobzsKK30KKworRkVDdXN0
b21GaWx0ZXI6OkZFQ3VzdG9tRmlsdGVyKEZpbHRlciogZmlsdGVyLCBEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hh
ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1
bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSBt
ZXNoQm94VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJP
cGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQorICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikK
KyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX3ZlcnRleFNoYWRlcih2ZXJ0ZXhT
aGFkZXIpCisgICAgLCBtX2ZyYWdtZW50U2hhZGVyKGZyYWdtZW50U2hhZGVyKQorICAgICwgbV9t
ZXNoUm93cyhtZXNoUm93cykKKyAgICAsIG1fbWVzaENvbHVtbnMobWVzaENvbHVtbnMpCisgICAg
LCBtX21lc2hCb3hUeXBlKG1lc2hCb3hUeXBlKQorICAgICwgbV9tZXNoVHlwZShtZXNoVHlwZSkK
KworeworfQorCitQYXNzUmVmUHRyPEZFQ3VzdG9tRmlsdGVyPiBGRUN1c3RvbUZpbHRlcjo6Y3Jl
YXRlKEZpbHRlciogZmlsdGVyLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdmVy
dGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBt
ZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSBtZXNoQm94VHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0
ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRkVDdXN0b21GaWx0ZXIoZmlsdGVyLCBkb2N1bWVudCwgdmVydGV4U2hhZGVyLCBmcmFnbWVu
dFNoYWRlciwgbWVzaFJvd3MsIG1lc2hDb2x1bW5zLCBtZXNoQm94VHlwZSwgbWVzaFR5cGUpKTsK
K30KKwordm9pZCBGRUN1c3RvbUZpbHRlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3sKKyAg
ICBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQoKTsKKyAgICBpZiAoIWRzdFBpeGVsQXJyYXkpCisgICAgICAgIHJldHVybjsKKworICAgIEZp
bHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKKyAgICBJbnRSZWN0IGVmZmVjdEFEcmF3
aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFp
bnRSZWN0KCkpOworICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNQ
cmVtdWx0aXBsaWVkSW1hZ2UoZWZmZWN0QURyYXdpbmdSZWN0KTsKKyAgICAKKyAgICBJbnRTaXpl
IG5ld0NvbnRleHRTaXplKGVmZmVjdEFEcmF3aW5nUmVjdC53aWR0aCgpLCBlZmZlY3RBRHJhd2lu
Z1JlY3QuaGVpZ2h0KCkpOworICAgIGJvb2wgaGFkQ29udGV4dCA9IG1fY29udGV4dDsKKyAgICBp
ZiAoIW1fY29udGV4dCkgeworICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBh
dHRyaWJ1dGVzOworICAgICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHRy
dWU7CisgICAgICAgIGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhID0gZmFsc2U7CisgICAg
ICAgIAorICAgICAgICBtX2NvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJp
YnV0ZXMsIG1fZG9jdW1lbnQtPnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCksIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pOworICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBE
cmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBuZXdDb250ZXh0U2l6ZSwgIWF0
dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICAgICAgCisgICAgICAgIG1fc2hh
ZGVyID0gQ3VzdG9tRmlsdGVyU2hhZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBtX3ZlcnRl
eFNoYWRlciwgbV9mcmFnbWVudFNoYWRlcik7CisgICAgICAgIG1fbWVzaCA9IEN1c3RvbUZpbHRl
ck1lc2g6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIG1fbWVzaENvbHVtbnMsIG1fbWVzaFJvd3Ms
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRSZWN0KDAs
IDAsIDEsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9t
ZXNoVHlwZSk7CisgICAgfQorICAgIAorICAgIGlmICghaGFkQ29udGV4dCB8fCBtX2NvbnRleHRT
aXplICE9IG5ld0NvbnRleHRTaXplKSB7CisgICAgICAgIG1faW5wdXRUZXh0dXJlID0gMDsKKyAg
ICAgICAgbV9kcmF3aW5nQnVmZmVyLT5yZXNldChuZXdDb250ZXh0U2l6ZSk7CisgICAgICAgIG1f
Y29udGV4dC0+cmVzaGFwZShuZXdDb250ZXh0U2l6ZS53aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5o
ZWlnaHQoKSk7CisgICAgICAgIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgbmV3Q29udGV4dFNp
emUud2lkdGgoKSwgbmV3Q29udGV4dFNpemUuaGVpZ2h0KCkpOworICAgICAgICBtX2lucHV0VGV4
dHVyZSA9IFRleHR1cmU6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIFRleHR1cmU6OlJHQkE4LCBu
ZXdDb250ZXh0U2l6ZS53aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5oZWlnaHQoKSk7CisgICAgICAg
IG1fY29udGV4dFNpemUgPSBuZXdDb250ZXh0U2l6ZTsKKyAgICB9CisgICAgCisgICAgaWYgKG1f
aW5wdXRUZXh0dXJlLT50aWxlcygpLm51bVRpbGVzKCkgIT0gMSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICBtX2NvbnRl
eHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhpY3ND
b250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQpOworICAgIAorICAgIG1fY29udGV4dC0+dXNlUHJv
Z3JhbShtX3NoYWRlci0+cHJvZ3JhbSgpKTsKKyAgICAKKyAgICBpZiAobV9zaGFkZXItPnNhbXBs
ZXJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0x
aShtX3NoYWRlci0+c2FtcGxlckxvY2F0aW9uKCksIDApOworICAgICAgICBtX2lucHV0VGV4dHVy
ZS0+bG9hZChzcmNQaXhlbEFycmF5LT5kYXRhKCkpOworICAgICAgICBtX2lucHV0VGV4dHVyZS0+
YmluZFRpbGUoMCk7CisgICAgfQorICAgIAorICAgIGlmIChtX3NoYWRlci0+cHJvamVjdGlvbk1h
dHJpeExvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcHJv
amVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KC0wLjUsIDAuNSwgLTAuNSwgMC41KTsKKyAgICAg
ICAgZmxvYXQgZ2xQcm9qZWN0aW9uTWF0cml4WzE2XTsKKyAgICAgICAgcHJvamVjdGlvbk1hdHJp
eC50b0NvbHVtbk1ham9yRmxvYXRBcnJheShnbFByb2plY3Rpb25NYXRyaXgpOworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobV9zaGFkZXItPnByb2plY3Rpb25NYXRyaXhMb2Nh
dGlvbigpLCBmYWxzZSwgJmdsUHJvamVjdGlvbk1hdHJpeFswXSwgMSk7CisgICAgfQorICAgIAor
ICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVS
LCBtX21lc2gtPnZlcnRpY2VzQnVmZmVyKCkpOworICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1fbWVzaC0+ZWxlbWVudHNC
dWZmZXIoKSk7CisKKyAgICB1bnNpZ25lZCB2ZXJ0ZXhTaXplID0gbV9tZXNoLT5ieXRlc1BlclZl
cnRleCgpOworICAgIAorICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7CisgICAgCisgICAgaWYgKG1f
c2hhZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9u
KCksIDQsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIHZlcnRleFNpemUsIG9mZnNl
dCk7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9zaGFkZXIt
PnBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSk7CisgICAgfQorICAgIG9mZnNldCArPSA0ICogc2l6
ZW9mKGZsb2F0KTsKKyAgICAKKyAgICBpZiAobV9zaGFkZXItPnRleEF0dHJpYkxvY2F0aW9uKCkg
IT0gLTEpIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVy
LT50ZXhBdHRyaWJMb2NhdGlvbigpLCAyLCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNl
LCB2ZXJ0ZXhTaXplLCBvZmZzZXQpOworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KG1fc2hhZGVyLT50ZXhBdHRyaWJMb2NhdGlvbigpKTsKKyAgICB9CisgICAgb2Zm
c2V0ICs9IDIgKiBzaXplb2YoZmxvYXQpOworICAgIAorICAgIGlmIChtX3NoYWRlci0+bWVzaEF0
dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKG1fc2hhZGVyLT5tZXNoQXR0cmliTG9jYXRpb24oKSwgMiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkZMT0FULCBmYWxzZSwgdmVydGV4U2l6ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9jb250ZXh0
LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3NoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCkp
OworICAgIH0KKyAgICBvZmZzZXQgKz0gMiAqIHNpemVvZihmbG9hdCk7CisgICAgCisgICAgaWYg
KG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpERVRBQ0hFRCAmJiBtX3NoYWRl
ci0+dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIG1fY29udGV4dC0+
dmVydGV4QXR0cmliUG9pbnRlcihtX3NoYWRlci0+dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpLCAz
LCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCB2ZXJ0ZXhTaXplLCBvZmZzZXQpOwor
ICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fc2hhZGVyLT50cmlh
bmdsZUF0dHJpYkxvY2F0aW9uKCkpOworICAgIH0KKyAgICAKKyAgICBtX2NvbnRleHQtPmRyYXdF
bGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCBtX21lc2gtPmluZGljZXNDb3Vu
dCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQsIDApOworICAgIAorICAgIG1f
ZHJhd2luZ0J1ZmZlci0+Y29tbWl0KCk7CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURh
dGEgPSBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKG1fZHJhd2lu
Z0J1ZmZlci5nZXQoKSk7CisgICAgQnl0ZUFycmF5KiBncHVSZXN1bHQgPSBpbWFnZURhdGEtPmRh
dGEoKS0+ZGF0YSgpOworICAgIEFTU0VSVChncHVSZXN1bHQtPmxlbmd0aCgpID09IGRzdFBpeGVs
QXJyYXktPmxlbmd0aCgpKTsKKyAgICBtZW1jcHkoZHN0UGl4ZWxBcnJheS0+ZGF0YSgpLCBncHVS
ZXN1bHQtPmRhdGEoKSwgZ3B1UmVzdWx0LT5sZW5ndGgoKSk7Cit9CisKK3ZvaWQgRkVDdXN0b21G
aWx0ZXI6OmR1bXAoKQoreworfQorCitUZXh0U3RyZWFtJiBGRUN1c3RvbUZpbHRlcjo6ZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKK3sKKyAg
ICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKKyAgICB0cyA8PCAiW2ZlQ3VzdG9tRmlsdGVyIjsK
KyAgICBGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOworICAgIHRzIDw8
ICJdXG4iOworICAgIGlucHV0RWZmZWN0KDApLT5leHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzLCBp
bmRlbnQgKyAxKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZp
bHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3Rv
bUZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MjQ3OWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ3VzdG9tRmlsdGVyLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEx
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEZFQ3VzdG9tRmlsdGVyX2gKKyNkZWZpbmUgRkVDdXN0b21GaWx0ZXJf
aAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRl
ICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQ2FjaGVkU2hhZGVyOworY2xhc3MgQ3VzdG9tRmlsdGVyTWVzaDsK
K2NsYXNzIEN1c3RvbUZpbHRlclNoYWRlcjsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRHJhd2lu
Z0J1ZmZlcjsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3MgVGV4dHVyZTsKKyAgICAK
K2NsYXNzIEZFQ3VzdG9tRmlsdGVyIDogcHVibGljIEZpbHRlckVmZmVjdCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RkVDdXN0b21GaWx0ZXI+IGNyZWF0ZShGaWx0ZXIqLCBEb2N1
bWVudCosIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50
U2hhZGVyLAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBt
ZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSwgCisgICAgICAg
ICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CisgICAgdmlydHVhbCB2b2lkIGR1bXAo
KTsKKworICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRkVDdXN0b21G
aWx0ZXIoRmlsdGVyKiwgRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29u
c3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlciwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBt
ZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVz
aEJveFR5cGUsIAorICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVz
aFR5cGUpOworICAgIAorICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIAorICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVy
PiBtX2RyYXdpbmdCdWZmZXI7CisgICAgUmVmUHRyPFRleHR1cmU+IG1faW5wdXRUZXh0dXJlOwor
ICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJTaGFkZXI+IG1fc2hhZGVyOworICAgIFJlZlB0cjxDdXN0
b21GaWx0ZXJNZXNoPiBtX21lc2g7CisgICAgSW50U2l6ZSBtX2NvbnRleHRTaXplOworICAgIAor
ICAgIFN0cmluZyBtX3ZlcnRleFNoYWRlcjsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlcjsK
KworICAgIHVuc2lnbmVkIG1fbWVzaFJvd3M7CisgICAgdW5zaWduZWQgbV9tZXNoQ29sdW1uczsK
KyAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hCb3hUeXBlIG1fbWVzaEJveFR5cGU7Cisg
ICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtX21lc2hUeXBlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBF
TkFCTEUoV0VCR0wpCisKKyNlbmRpZiAvLyBGRUN1c3RvbUZpbHRlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggM2NmZDIzMC4u
NWZmN2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9U
ZXh0dXJlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpIHx8IEVOQUJMRShDU1NfU0hBREVSUykKIAogI2luY2x1ZGUgIlRleHR1cmUuaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCBlMGQ0Zjc4Li5h
ZjU4MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTE5
OCw1ICsxMTk4LDI1IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4
Ojp0bzJkVHJhbnNmb3JtKCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9tYXRyaXhbM11bMF0sIG1fbWF0cml4WzNdWzFdLCAwLCBtX21hdHJpeFszXVszXSk7CiB9CiAK
K3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KGZsb2F0
KiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmVzdWx0WzBdID0gbTExKCk7CisgICAgcmVzdWx0WzFd
ID0gbTEyKCk7CisgICAgcmVzdWx0WzJdID0gbTEzKCk7CisgICAgcmVzdWx0WzNdID0gbTE0KCk7
CisgICAgcmVzdWx0WzRdID0gbTIxKCk7CisgICAgcmVzdWx0WzVdID0gbTIyKCk7CisgICAgcmVz
dWx0WzZdID0gbTIzKCk7CisgICAgcmVzdWx0WzddID0gbTI0KCk7CisgICAgcmVzdWx0WzhdID0g
bTMxKCk7CisgICAgcmVzdWx0WzldID0gbTMyKCk7CisgICAgcmVzdWx0WzEwXSA9IG0zMygpOwor
ICAgIHJlc3VsdFsxMV0gPSBtMzQoKTsKKyAgICByZXN1bHRbMTJdID0gbTQxKCk7CisgICAgcmVz
dWx0WzEzXSA9IG00MigpOworICAgIHJlc3VsdFsxNF0gPSBtNDMoKTsKKyAgICByZXN1bHRbMTVd
ID0gbTQ0KCk7CisKK30KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmlu
ZGV4IDA0NTBhZDcuLjdmNzc5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmgKQEAgLTM1MCw2ICszNTAsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIG1ldGhvZCByZXR1
cm5zIHRoZSBtYXRyaXggd2l0aG91dCAzRCBjb21wb25lbnRzLgogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHRvMmRUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHRvQ29sdW1uTWFq
b3JGbG9hdEFycmF5KGZsb2F0KiByZXN1bHQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIC8vIG11
bHRpcGx5IHBhc3NlZCAyRCBwb2ludCBieSBtYXRyaXggKGFzc3VtZSB6PTApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYzYwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
ICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRmlsdGVyRWZmZWN0T2JzZXJ2
ZXJfaAorI2RlZmluZSBGaWx0ZXJFZmZlY3RPYnNlcnZlcl9oCisKKyNpZiBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmlsdGVyRWZmZWN0T2JzZXJ2
ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdE9ic2VydmVyKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGZpbHRlck5lZWRzUmVwYWludCgpID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKKworI2VuZGlm
IC8vIEZpbHRlckVmZmVjdE9ic2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDQ2N2M0OTkuLjdiNjdhY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApA
QCAtMzksNiArMzksMTQgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQor
I2luY2x1ZGUgIkNhY2hlZFNoYWRlci5oIgorI2luY2x1ZGUgIkN1c3RvbUZpbHRlck9wZXJhdGlv
bi5oIgorI2luY2x1ZGUgIkZFQ3VzdG9tRmlsdGVyLmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0
T2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSB2b2lkIGVuZE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+
JiBwYXJhbWV0ZXJzKQpAQCAtNTUsOSArNjMsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIGxhc3RN
YXRyaXhSb3coVmVjdG9yPGZsb2F0PiYgcGFyYW1ldGVycykKICAgICBwYXJhbWV0ZXJzLmFwcGVu
ZCgxKTsKICAgICBwYXJhbWV0ZXJzLmFwcGVuZCgwKTsKIH0KKyAgICAKKyAgICAKKyNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKK3N0YXRpYyBib29sIGlzV2ViR0xFbmFi
bGVkKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICAvLyBXZSBvbmx5IHdhbnQgdG8gZW5hYmxl
IHNoYWRlcnMgaWYgV2ViR0wgaXMgYWxzbyBlbmFibGVkIG9uIHRoaXMgcGxhdGZvcm0uCisgICAg
U2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgcmV0dXJuIHNl
dHRpbmdzICYmIHNldHRpbmdzLT53ZWJHTEVuYWJsZWQoKTsKK30KKyNlbmRpZgogCi1GaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQotICAgIDogbV9ncmFwaGljc0J1
ZmZlckF0dGFjaGVkKGZhbHNlKQorRmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJl
bmRlcmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKiBvYnNlcnZlcikKKyAgICA6IG1fb2JzZXJ2ZXIo
b2JzZXJ2ZXIpCisgICAgLCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQoZmFsc2UpCiB7CiAgICAg
c2V0RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUoMSwgMSkpOwogICAgIG1fc291cmNlR3JhcGhp
YyA9IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSh0aGlzKTsKQEAgLTcyLDggKzkxLDE0IEBAIEdyYXBo
aWNzQ29udGV4dCogRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCgpCiAgICAgcmV0
dXJuIHNvdXJjZUltYWdlKCktPmNvbnRleHQoKTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5k
ZXJlcjo6YnVpbGQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3QgTGF5
b3V0UmVjdCYgYm9yZGVyQm94KQordm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25z
dCBMYXlvdXRSZWN0JiBib3JkZXJCb3gpCiB7CisjaWYgIUVOQUJMRShDU1NfU0hBREVSUykgfHwg
IUVOQUJMRShXRUJHTCkKKyAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOworI2Vsc2UKKyAgICBD
YWNoZWRTaGFkZXJMaXN0IGNhY2hlZFNoYWRlcnM7CisjZW5kaWYKKwogICAgIG1fZWZmZWN0cy5j
bGVhcigpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwpAQCAtMjE0LDcgKzIz
OSw0MSBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBMYXlvdQogICAgICAgICB9CiAjaWYgRU5BQkxFKENT
U19TSEFERVJTKQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOiB7Ci0gICAg
ICAgICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgaW4gdGhlIHNvZnR3YXJlIHBhdGguCisjaWYgRU5B
QkxFKFdFQkdMKQorICAgICAgICAgICAgaWYgKCFpc1dlYkdMRW5hYmxlZChkb2N1bWVudCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEN1c3Rv
bUZpbHRlck9wZXJhdGlvbiogY3VzdG9tRmlsdGVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Q3Vz
dG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgZmlsdGVycyBhcmUgYWxyZWFkeSBsb2FkZWQuIElm
IG5vdCBqdXN0IHNraXAgdGhlbSBoZXJlLgorICAgICAgICAgICAgU3RyaW5nIHZlcnRleFNoYWRl
ciwgZnJhZ21lbnRTaGFkZXI7CisgICAgICAgICAgICBib29sIHNoYWRlcnNMb2FkZWQgPSB0cnVl
OworICAgICAgICAgICAgaWYgKGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+dmVydGV4U2hhZGVyKCkp
IHsKKyAgICAgICAgICAgICAgICBDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlciA9IGN1c3RvbUZp
bHRlck9wZXJhdGlvbi0+dmVydGV4U2hhZGVyKCktPmNhY2hlZFNoYWRlcigpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChjYWNoZWRTaGFkZXIpOworICAgICAgICAgICAgICAgIGNhY2hlZFNoYWRl
cnMuYXBwZW5kKGNhY2hlZFNoYWRlcik7CisgICAgICAgICAgICAgICAgY2FjaGVkU2hhZGVyLT5h
ZGRDbGllbnQodGhpcyk7CisgICAgICAgICAgICAgICAgaWYgKGNhY2hlZFNoYWRlci0+aXNMb2Fk
ZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyID0gY2FjaGVkU2hhZGVyLT5z
aGFkZXJTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHNoYWRlcnNMb2FkZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChj
dXN0b21GaWx0ZXJPcGVyYXRpb24tPmZyYWdtZW50U2hhZGVyKCkpIHsKKyAgICAgICAgICAgICAg
ICBDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlciA9IGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+ZnJh
Z21lbnRTaGFkZXIoKS0+Y2FjaGVkU2hhZGVyKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGNh
Y2hlZFNoYWRlcik7CisgICAgICAgICAgICAgICAgY2FjaGVkU2hhZGVycy5hcHBlbmQoY2FjaGVk
U2hhZGVyKTsKKyAgICAgICAgICAgICAgICBjYWNoZWRTaGFkZXItPmFkZENsaWVudCh0aGlzKTsK
KyAgICAgICAgICAgICAgICBpZiAoY2FjaGVkU2hhZGVyLT5pc0xvYWRlZCgpKQorICAgICAgICAg
ICAgICAgICAgICBmcmFnbWVudFNoYWRlciA9IGNhY2hlZFNoYWRlci0+c2hhZGVyU3RyaW5nKCk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzaGFkZXJzTG9hZGVk
ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2hhZGVyc0xvYWRlZCkg
eworICAgICAgICAgICAgICAgIGVmZmVjdCA9IEZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUodGhpcywg
ZG9jdW1lbnQsIHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPm1l
c2hSb3dzKCksIGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+bWVzaENvbHVtbnMoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUZpbHRlck9wZXJh
dGlvbi0+bWVzaEJveFR5cGUoKSwgY3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5tZXNoVHlwZSgpKTsK
KyAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNl
bmRpZgpAQCAtMjM2LDYgKzI5NSwxNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWls
ZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBMYXlvdQogCiAgICAg
bV9lZmZlY3RzLmZpcnN0KCktPmlucHV0RWZmZWN0cygpLmFwcGVuZChtX3NvdXJjZUdyYXBoaWMp
OwogICAgIHNldE1heEVmZmVjdFJlY3RzKG1fc291cmNlRHJhd2luZ1JlZ2lvbik7CisgICAgCisj
aWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisgICAgZm9yIChDYWNoZWRT
aGFkZXJMaXN0OjppdGVyYXRvciBpdGVyID0gbV9jYWNoZWRTaGFkZXJzLmJlZ2luKCksIGVuZCA9
IG1fY2FjaGVkU2hhZGVycy5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgaXRl
ci0+Z2V0KCktPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBtX2NhY2hlZFNoYWRlcnMuc3dhcChj
YWNoZWRTaGFkZXJzKTsKKyNlbmRpZgorfQorCit2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCit7CisgICAgbV9vYnNlcnZlci0+ZmlsdGVy
TmVlZHNSZXBhaW50KCk7CiB9CiAKIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OnByZXBhcmUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaApp
bmRleCAwYmFmYWM4Li5jNmVhMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKENT
U19GSUxURVJTKQogCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUg
IkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKQEAgLTQ0LDEy
ICs0NiwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
RmlsdGVyRWZmZWN0PiA+IEZpbHRlckVmZmVjdExpc3Q7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNz
IEZpbHRlckVmZmVjdE9ic2VydmVyOworY2xhc3MgQ2FjaGVkU2hhZGVyOwogCi1jbGFzcyBGaWx0
ZXJFZmZlY3RSZW5kZXJlciA6IHB1YmxpYyBGaWx0ZXIgeworY2xhc3MgRmlsdGVyRWZmZWN0UmVu
ZGVyZXIgOiBwdWJsaWMgRmlsdGVyLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZpbHRlckVmZmVjdFJlbmRlcmVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdFJlbmRlcmVyPiBjcmVhdGUoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqIG9ic2VydmVy
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWx0ZXJFZmZlY3RSZW5kZXJl
cigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWx0ZXJFZmZlY3RSZW5kZXJlcihv
YnNlcnZlcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTb3VyY2VJbWFnZVJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCkBAIC02NywxMCArNzMsMTIgQEAgcHVi
bGljOgogICAgIEdyYXBoaWNzQ29udGV4dCogaW5wdXRDb250ZXh0KCk7CiAgICAgSW1hZ2VCdWZm
ZXIqIG91dHB1dCgpIGNvbnN0IHsgcmV0dXJuIGxhc3RFZmZlY3QoKS0+YXNJbWFnZUJ1ZmZlcigp
OyB9CiAKLSAgICB2b2lkIGJ1aWxkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBjb25zdCBMYXlv
dXRSZWN0Jik7CisgICAgdm9pZCBidWlsZChEb2N1bWVudCosIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAgdm9pZCBwcmVwYXJlKCk7CiAgICAgdm9pZCBh
cHBseSgpOwogICAgIAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSopOworICAgIAogcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TWF4RWZmZWN0UmVjdHMoY29u
c3QgRmxvYXRSZWN0JiBlZmZlY3RSZWN0KQpAQCAtODcsNyArOTUsNyBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpOworICAg
IEZpbHRlckVmZmVjdFJlbmRlcmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKik7CiAgICAgdmlydHVh
bCB+RmlsdGVyRWZmZWN0UmVuZGVyZXIoKTsKICAgICAKICAgICBGbG9hdFJlY3QgbV9zb3VyY2VE
cmF3aW5nUmVnaW9uOwpAQCAtOTUsNiArMTAzLDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgRmls
dGVyRWZmZWN0TGlzdCBtX2VmZmVjdHM7CiAgICAgUmVmUHRyPFNvdXJjZUdyYXBoaWM+IG1fc291
cmNlR3JhcGhpYzsKKyAgICBGaWx0ZXJFZmZlY3RPYnNlcnZlciogbV9vYnNlcnZlcjsgLy8gTm8g
bmVlZCBmb3IgYSBzdHJvbmcgcmVmZXJlbmNlcyBoZXJlLiBJdCBvd25zIHVzLgorICAgIAorI2lm
IEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorICAgIHR5cGVkZWYgVmVjdG9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNoYWRlcj4gPiBDYWNoZWRTaGFkZXJMaXN0Owor
ICAgIENhY2hlZFNoYWRlckxpc3QgbV9jYWNoZWRTaGFkZXJzOworI2VuZGlmCiAgICAgCiAgICAg
Ym9vbCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggOTk3MGMwNy4uZmEwNTAzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00NDMwLDEyICs0NDMwLDEyIEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KCkKIHsKICAgICBpZiAoaGFz
RmlsdGVyKCkpIHsKICAgICAgICAgaWYgKCFtX2ZpbHRlcikgewotICAgICAgICAgICAgbV9maWx0
ZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2ZpbHRl
ciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUodGhpcyk7CiAgICAgICAgICAgICBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSByZW5kZXJlcigpLT5mcmFtZSgpLT5wYWdlKCktPnNl
dHRpbmdzKCktPmFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSA/IEFjY2VsZXJhdGVkIDogVW5h
Y2NlbGVyYXRlZDsKICAgICAgICAgICAgIG1fZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJlbmRl
cmluZ01vZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVy
KCktPnN0eWxlKCktPmZpbHRlcigpLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+Ym9yZGVyQm94
UmVjdCgpKTsKKyAgICAgICAgbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVyKCktPmRvY3VtZW50KCks
IHJlbmRlcmVyKCktPnN0eWxlKCktPmZpbHRlcigpLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+
Ym9yZGVyQm94UmVjdCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2ZpbHRlciA9IDA7CiAg
ICAgfQpAQCAtNDQ1Miw2ICs0NDUyLDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUZpbHRl
ckJhY2tpbmdTdG9yZSgpCiAgICAgfQogfQogCit2b2lkIFJlbmRlckxheWVyOjpmaWx0ZXJOZWVk
c1JlcGFpbnQoKQoreworICAgIHJlbmRlcmVyKCktPm5vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2Fs
YyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CisgICAgcmVuZGVyZXIoKS0+cmVwYWludCgpOworfQog
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgKaW5kZXggOTdlNGU0Mi4uM2JjN2MxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKQEAgLTQ0LDYgKzQ0LDkgQEAKICNpZm5kZWYgUmVuZGVyTGF5ZXJf
aAogI2RlZmluZSBSZW5kZXJMYXllcl9oCiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisjaW5j
bHVkZSAiRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlBhaW50SW5m
by5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlNjcm9sbEJlaGF2aW9yLmgi
CkBAIC0yMDIsNyArMjA1LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpeGVkIDogMTsKIH07
CiAKLWNsYXNzIFJlbmRlckxheWVyIDogcHVibGljIFNjcm9sbGFibGVBcmVhIHsKK2NsYXNzIFJl
bmRlckxheWVyIDogcHVibGljIFNjcm9sbGFibGVBcmVhCisjaWYgRU5BQkxFKENTU19GSUxURVJT
KQorICAgICwgcHVibGljIEZpbHRlckVmZmVjdE9ic2VydmVyCisjZW5kaWYKK3sKIHB1YmxpYzoK
ICAgICBmcmllbmQgY2xhc3MgUmVuZGVyUmVwbGljYTsKIApAQCAtNTEwLDYgKzUxNyw3IEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICBib29sIGhhc0ZpbHRlcigpIGNv
bnN0IHsgcmV0dXJuIHJlbmRlcmVyKCktPmhhc0ZpbHRlcigpOyB9CisgICAgdmlydHVhbCB2b2lk
IGZpbHRlck5lZWRzUmVwYWludCgpOwogI2VuZGlmCiAKICAgICAvLyBPdmVybG9hZGVkIG5ldyBv
cGVyYXRvci4gRGVyaXZlZCBjbGFzc2VzIG11c3Qgb3ZlcnJpZGUgb3BlcmF0b3IgbmV3CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5oCmlu
ZGV4IDg4YmZjODEuLjI2OTIyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Q7CiAg
ICAgCisgICAgdmlydHVhbCBDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhZGVyLmdldCgpOyB9CisgICAgCiBwcml2YXRlOgogICAgIFN0eWxlQ2FjaGVkU2hh
ZGVyKENhY2hlZFNoYWRlciopOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlU2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVTaGFkZXIuaAppbmRleCA5YjM2Njc3Li5mZjVkMmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTaGFkZXIuaApAQCAtMzYsOCArMzYsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFNoYWRlcjsKIGNsYXNzIENTU1ZhbHVl
OwotICAgIAorCiBjbGFzcyBTdHlsZVNoYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU2hh
ZGVyPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3R5bGVTaGFkZXIoKSB7IH0KQEAgLTQ3LDYg
KzQ4LDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Y3NzVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgCisgICAgdmlydHVhbCBDYWNoZWRTaGFkZXIqIGNh
Y2hlZFNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICAKIHByb3RlY3RlZDoKICAgICBT
dHlsZVNoYWRlcigpCiAgICAgICAgIDogbV9pc0NhY2hlZFNoYWRlcihmYWxzZSkK
</data>
<flag name="commit-queue"
          id="119510"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119487</attachid>
            <date>2011-12-15 13:00:31 -0800</date>
            <delta_ts>2011-12-15 15:06:15 -0800</delta_ts>
            <desc>Fixing build issue</desc>
            <filename>bug73317_4.patch</filename>
            <type>text/plain</type>
            <size>77109</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNjI1NWE1Li4wNmRkZWNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTIt
MTUgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gQWRkIEZFQ3VzdG9tRmlsdGVyIHRoYXQgcmVuZGVycyBjdXN0b20gZmlsdGVy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMv
ZmlsdGVycy9lZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY3Nz
My9maWx0ZXJzL2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBj
c3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL2ZyYWdtZW50LnNoYWRlcjogQWRkZWQuCisgICAgICAgICogY3NzMy9m
aWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXguc2hhZGVyOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL3ZlcnRleF9kZXRhY2hlZC5zaGFkZXI6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL3drMi9Ta2lwcGVkOiBXZWJLaXQyIGhhcyBubyBvcHRpb24gdG8gZm9yY2UgZW5h
YmxlIFdlYkdMIHlldC4KKwogMjAxMS0xMi0xNSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6ICNoZXggY29sb3JzIGFyZSBu
b3QgaGlnaGxpZ2h0ZWQgaW4gQ1NTIGZpbGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3Mz
L2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvZWZmZWN0LWN1c3RvbS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBiOTQ5MzBlZDkz
MTI0OTIwNjM2MGM3YWE3OTg0N2VhZjdkOWUyNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTM1
OTUKemNtZUhPWEg9OHZ3aGwhQkw5aC13RDhVKmxWSnJraDIhZWBeTl5ucm4wVEt7X2FTJWNpMm9P
U2EwOHRAZ0FxdHIyCnphRDx+JiFJNkBOQW1SdiEzX18lWlcoYmYjMDshT35gSXZocHU2ekY3eVk0
IUZAK1psKypJUz54X3B8cj0/a3tPPgp6dH1hV0xlN14oKTB4ZG0kP0M/KEBrZDZmaXE8djAqRihB
b356OFZJNlpJMyF+RjNTSXgwUlB+fkQ8TDImKm5WNG8Kem4/UlVWeihxZUJUaWR8QilfWDRjVD9u
dWFAYmUzX18xfU1De2hkUVN6JG9VSW9Tb2Z7SjNDdnJNVzYjT1RAQzwmCnpWenJYYl5hcj1RdHh8
T2RKU3JRIWNfMylIZnh8REVwJT5rd29PNTNWZClCbzRKWkBkTjthRTw3aDxFbmUlQGNgYgp6ZFI7
ZnMyTzQ2Z15jLWdOakptRiY8TEBrZXlVSV5pYmJhR1YkO0p2JiZjMEkrY2IjZX1yR0lBOTdRKj8w
ZF57OFcKemJOZWMmJCpReU5oPXd9Rm49aDtTcj9yc2xvT2RkSUlkd0RUeUMxaUBJR1ZKVldCMyg5
V0FuRntxYkFZKWcpMEEhCno/RTZOYDE/dyM2X3g4V3BJQyVjP0NHU3NCRCtmQiRfPlg/clUpT1Ju
QD8zJGcwWFdEOD9UO1Y0bUEpd31hTm1CJQp6WT1iKHoyQiFsanN2Szx8VHBBRUF7cm15SD5JLUQr
dnBiZUk0O0NLejNDZ35CcX0pZyUwN3FWJU13UntaLWRJakMKelhJWGtrX0ZDN3JnY35mZEVqSH1k
MiZtJlY5SlBqYXNPbk1KSXFUdVB7ZlNPM25AZzUmckV3O3NFPEtuQyRSP2lPCnp6R0JPfCZEMEJM
Tzc+cDlHLTlaZW1PYXV3QSMlR0BNJjhIUnhBKGtvYyo1PHpGODdCOXZFOzsyUTROalJsWCtLZgp6
Yyl2cnpfRC1DbWlZNjZEKytidHcyKUhsSig+cHw3Y01mPjtebjdXXy0mRnI1PH1fVUFuQTZwYWJy
LWh7V0k3cjcKelcmNksqRTw1PyUrS29UezxGODltWEU1YjlvcCMmcVc9KlZmaVR4OTBUIXM4aj57
VlZSOElZNnV3bEZpT3RDSmZsCnpeRkUpUl95YSN5UUAlM1c0MHB4dlg8cTBjdGVUeDs3RSktYWVf
Q35le28pdWg7NjM4JVkzM0V7az15UD4jVENRVwp6SkArUUpNNlduIVI4dTVDJTY0MntmPUQqNEJR
aWR7YEBrdyotam8hKyVifTN1LXR2flc8KiQ9fWFXN1VlWml0PVUKenU5PjwwZ1koYWk9JGxYRi1t
c25TYn5BKTVqPTlQbThTO2lRXis9UnZwVFhIYHtiSXxBTyZOOGo7dikkZzFvWFhoCnoyVUkyY3g/
ZSNMejVPQ0w/fXdrY2w9alM7LShTU3RCbEpLZF84SEd0dH1UQi1mMDV7K3p3X25xez1mY001cnFL
aAp6WXpjOEMzSyFrd0ZhT09qO2Q7c0xHKHpEOCYpYk5kT1ZBSUVrVks+N3JOX0R+JWpeZ2ZJPE1T
MmVNVDshQjVqMmAKeiFwNiokXjt9RVgqflE0VXdRWjQ+cmpQZXRgQz9GKGZaV0FoLTIqO0lzIVlu
WD4rdnRQNUFtekg+RUtiPTZKX2FUCnp1MD01Xj4+IyYzQDk1KXYhNVBOcERIY0U1dzR9NHszMkZ9
cldDMSNVX3xUYkh0JTwlOXd8cjg0OG1JUVk7dlczSQp6Ris1bFF4dHJyLWl6UHBLblhrQnplNkgq
PXRqdz1yaDRucDgqeUM3ZHtMKkJuPCN2YWt0U0d6U3U0VlkhWkB5YDwKemB9OXZnRSptKHo0WVJN
TUN1OHthcD8hcGhrdTdqaDF9Q3U7cDdsS0xMJDBrZjJGYGRgdHFSeWh6RSs+Wl8+UTUhCnolKSY3
VnFAfUczezBLQUN7bWA0ekN8RVpDQEtxYFVZdzVnIVgjWkQ+emxEe2pZQytXQHBVa2lTY2VpPD0m
S3U0Kgp6UHVsO3hDaXFCKnQwMHEqRHwwVGd1Wjt9V15VVDJkdXxJYnxmdElaSXd6YW5CJilnXlkq
ekxvYkxyYnVOX2ItVF4KejhPN19mTmlpVzQqRX08UFBgMG40TT57c0BmaGlIfWNiUU9PMyZyQFRY
PjNHbk9mS1o4ciZrdUZHSilrQHBNWTJqCnptWDcleUxZUzFvbHI/ZUR2OXpFUiZNNXttQTY0S3xE
KCE5UyoqWTtPdCNva147TXVSRzRCV092SVlRMXZWMUxEbwp6T2ZgQ2ZXNHBOfSpnMGoybCFsJn1H
KVc4LSt0UH0hI21pPTUzcHVDPmBEa1NLZVAmTnlIQy1lVHVtaHtoQ3p4RjUKekJFZWt6XzVwfVJ7
UHt4MmsqX0VfYG9iMCYtUnxRWiszYDIlZT91Qy0tOFlGQlApdTYyMDVpVUNtNmM8M2gzUFozCnpE
dEokbXc5MUtwI1FtZ0pQcWNlMnNIKzl9a0J3aW9XbD1gZFVpPVEoSWV2V2tmKEFkSSgkY3ZJaV9n
NVZwckttaQp6a35ST25DfDhCK0Q0ZkRKSkNFU010M0hYfGVTajdxNm5Raylkc1VkYnFQNlU0MGVs
Z2FtX29rcDMxQkkzP1ArVEIKemRTYz4jNTwlSUFNTE1eN3MpQStqK1AoNC10dlJmcmdqaHB+WCtB
UzJrIy1YT2tqXmVHNDNMUm80KmIjTGtBelAmCnpMVnYlNXBkPGh6Y3FpPEEzWSMxNkErayVzZVli
ITRKT2BrUVdoTzZlPCVGMkM4ZTFFXlJ2ZVopTk9KUV9QcVloUAp6RGRYJV4qTylKWU1uTCM8P0xf
VkolKHIlR1dSYHQ/MXdhI1duej9CSzJTP3ZMSz1odylSaCFtdHBuVGhFZ2lmWjUKej9MejJRRlNB
K1FuNFplWkR0UEQlTWNuTHxAQnMtJVRSa2lDbX1Wam9hb3FtUF4zSX5sI0Z3WXwqcztrJE5Pd21V
CnpyKHRqcDw7c2tSOG5CakNsTXVAU28qSEpWMUVSVXArQHxKJHdQZTdNdnFgfG1fYmV3JndPQX5m
bEpeWWluVi0qKwp6cUd5K008QS1zbzstPGwyUk9OPHUoUSgrfXA+fT5AeVU7cGV1SjVubmtKMmdP
Ukp2dG5xVW5WRXZ3TjRBKil6eDsKemRCSV9XQEdiS0ljZkYxTzdUfElLJT5YeXp3KlhmRnFXXnJX
ZDRSRkRpZygrbFVxQElTO1BXRClxZ2Q0ZWwyMEY/Cno5MlhgZnhIPitIV2pgIXIrMTlYPCs0TW1T
JUp1K1gjVUFvI3JNJmUxLWlKUlZ6fSZLdzFtczRFJDlYfj8tSCZEMQp6bHpjaXtvLSUxLVIybmxr
VHt7e01KfnMmX05lNCEkZGMtamQzUWxGUStifjM4N3NoMF9OcVVMJjxGc0l1bm1SYGkKem1LP09N
WCpTNStDcykxTCloP3V1PitUXm5aLUw4Um07UXtEbFRrYWhrIVZsMUVILUo3aUQma2xiPGlgJnlg
RHIpCnolR0VFdHhualhqRXl9an5DS1d4aUlsOTBVTndzUEVZYitwajxHLXQyVWNibS1qWWFUfDQ3
R24tZ2x6PFRLQ1BAfgp6K1g4IU5YJEokTT4+S3t5XmFFenBpcjgzV2BRdGFrWDlGdENBNm9OR0tn
ZFNrZV94Z3IjWWZpZDU8MnNGa2hpI18Kek4hKnFHazt0dE5sMSVmQ2p5NEd2YjR2Um51MUw3N2BZ
dWRgKiVOM31AfVBLPEBrNHlDVUo1Z1oxZiUlTFVSP0lmCnpTWUtfZ00qYFF0O2FGc2EqfmZsZnhK
KGZVYjMmIVNke0oyXj5nZmQ+QTlFIUNicil5MkkoNUZBUktOPjJGXn1WNwp6bT8+aExeamJeOVNY
JHI1NCs2UTBQR15PPnRweigyR3I4ZjhralotaGlvNyVIPih1ZTtHYTZ0IWhGcnszVFFCYigKenV1
YjxYYHB5ZUdfaGtTU3Rlais0c09gRFQ5WUQ7clZ9c0VHNzxsRChSKm4pMXN4P0RSb1VRPSljNHQk
cSlWTkIjCnowMUQ8TytTe3F3Ky0/aU49S29fK18oNWVJIWhGIzhWYyhkSDdsQjxoKGtxfH1eYEx+
MzgwSXVAbHA2MDZ3N1pFYAp6Wl4hNnwqYHNaP0t0cEchZFp7dF9XUnxiUXJobHkwT0g2MGE0ND9N
TUBMb2ZUMzc7WHtDcGFYSSl8SFdgKG0kcT4KejtsekItUWxZKWdMSEBLciRlOSt6blY2SkhLTUpV
KzFaLSs5bVZBSSF2YElKR3JJdEdwWE5wOEtlTVZkbTlCfnx9CnpeJndAbVJsQG9IcnwtKHU7OTBu
Pnd2cUhwcENiOzMwXjh7ZyNsdlVyTFhFLUdfdURYZl8yZ2RqVEB+QyVZbXhscwp6PjJkQjFlVCt1
ZldlVipSJmh9NndJZ0ErKlZ8T2J5VG5TK1lXdHJ0dzEqTzJsJCNoNE9TMExPZXB8TT1tdWR1fG0K
ekpZXjQtKGhrMCMremJyUHlIK2NiYX4lJFB3JkRTSnk7alRHO1khKFBvTClXckcwNyhvMmpsaGJr
I31NZlpRPGBACnptPVJKZyRFUVotMUppcDRxcEt0KCU4QGtPM355UlduNStNX0Q0ciFjPXopOytV
ejZfUVEjJlhxVHpfKGFneTtnQAp6V3MwMTg7SDRZXnluVVI0TzYpKDtIMnBeKktqSm5wVG0xR2k3
MT5gaHtwe09Wcy1GdTRrJTtjNHU/Y0VUI0BxJSgKemRpTil1c2xDKURMYCZ6KE9FWkI/WjMyQFBm
WEh9OWtOY0t8QER0VnpTa29vZ3o/OHVQeFY/dzhEe3hJeU9geiVzCnpjR1RwcDhEMiQmOVQ2XlUt
a1RRJD16Ty1TKW4zez04Y3ZSbmomXy1CbyNXaWg8SStUYndjc1loMT5FdEQhZk8+LQp6P0N3ODte
TW9aUmFeR3VKaGk4OGtfO3MqcEJKVntUeUFpVjl7S01vJDwocmo9VFAzI2t7NjhWJmJ3MjFnbU9I
fEoKemUrXjRTRWcmYnhNYlFlI2luPnVNWmtFVFJoVHdjb2x9WilEaXFnVjdSNiN3b0NvfVZ8eyQo
JH5MfjJJY057N1kzCnpUJl80Oy08TGh1ekpwS1VsT1o9SVdFcUFzZ0xmSUdvNlhoa2ZuOHhVMSRm
YGVFUkl0VzJ0UC14PHNJIzZOKn1+OQp6Z1FQcFhRPjZSN2s9Uy18MzEzIU4qTzRSak5DPmFUPlle
fT5NVVJMbjk5a0hZN2woPStjRjNxeUJ2SlV0SVJsPDIKekpmZXkhJmpPRDwwKVlKdCNqblJiPnc7
Y3hPIyRLVSs8bGRWTX4lQ1VRe2l7JVF+OXNNNmckeENzdlJpSFhReE5aCnp1SmRPPil6T2l3c0FZ
YWh5UUl7cVVpMXRsSn5oMkxeZiZyMCgtYkJKcj0mKWpeekpFKzBXfDIjKkcrLU8jN245Ngp6OGBM
Vitidjt4SXZSeEVxYShzYXUyMyVLTElabDJXdX03PCQ2PDdlZ3M5bHF+UypfdiVBYz4wa1JZLSFW
QSNxPTMKejw+OyFfPWQzb0REKSZYTTNpNjxgM3FAKjY8biFMTG4rZ0puVWk3KjV2KyRUJFE5VWp1
eF8qU009WVNKIVYpbTx3CnpUVSU1Yz1EPjxsRiMjU1lTX3c1TmpiWSE8MUp9JC0mPENaUmNJbDww
REIqeUt2WEEkSCVAOUtPYWA8eW52bUVwQgp6LUhwSTcmZUY8Kzx7ciVPNmFJcm8lOX1XQWQ1a01B
P2poQ3lEKl58KCFpOF4mX35iY0dtciZOaSRXZypsMnVkKzgKemopMEJNO3QjamQ1N3JESXV5R1FN
ezcqKjByNj9MJShhYU9kSj5tOUUoIXRocl5VbVlDKE42UjF2Mj5uMkA9R2dtCnpjNS1XKSR8N1VN
WEEzS05gPTJRJChHTH5+NjhNMzNAcypJI3tVMjY4SXgmd1pkaWV1bz89UjwjdiRfeVZTfWlOYwp6
cUZubmJOIUdkP1I7KkNgVlJyPk5GfD8taEkyZ3xHX0YrfDElVnc/az1LQD0kaXF8fWRGTmV0UzFh
bjRUUTtZKkUKelBja15aTzRsPyg/I3lAJkYkeVptRGA5UFFedV43eV8oYlI0T14mYG54YERWd3tO
X0QmZHx1YztiNVZofm40dVAyCnowIXlxRiFFREo0PWNpfnpAWFBwUDgwa3t0dSF3cm90VkNLbi1I
bj0yeXorfUgwM3p2UT1zPkJqKmlLfW00akxEQQp6amMlVmpkc1ZIO1FOdU1CTkBJSCt3TjAkbSgl
SX5PfEZOMH5YMDthfFY+cWBpNypka3MoT1NALVhTUyNWR29EX1gKekhuKjF3cERLWmAqeyZTKVI1
WGxJPmtCSnomam8hOVlZSG5LYE90XllCekIxJTZob0RfTlI0MiF2YWsmVT9HK2QyCnozQTQhWj0y
NUIobnU/MkptRjZsJXFme19tTVFfOTRzdC1DRztLUGFNPjFfPWp1Q3EkQ083T21JSTVrbWomaj9j
dAp6eXdDSlJKQERiVGZvRGVGeU1XOyRkI0xLbylVfTsxNGxrUmhtOGBxKVNKUTJjQ2ZJMmZWTGlN
bTspe0A9bEZmSEUKelBZXzg3VX5rKiReLSNzPXlueFFIZ1p8eHVLdkkwMTdkVjg9cmlPdE5URWZV
SXA9ak5lPiRSYXZWcmY0NzI3cDRFCno2eWooSjJRUExCemdKclcjT0VUNCY5XnkrZnF0JEc7cGwy
bmFibiZqQS1XRXRDdFYwe0Jxa3NfYnV5UzQyczVUOAp6Vnh3dT8oaHJsckNKdnRoY3N+alF4ZVFC
PTw7T0UzRjtXVntQdXZGIVpCYGhZMVgoci1HSzZ8VGZpZH47JGc7ISYKemA4OVVreEc7UjQ7Tj80
ajJwbjhOR1MkK0NTY1hqdkhMUyFMbkZ1YGFPKyt3cUp8Q01gKn5pcmEmJDYxbjxFeyhwCnp2Vml5
fGVjNz42Wk94OUp3VjwoUmheXlllYkNiMDA2clNgfCtrbFVqJk9kcXtlTm8jJDFZaVJ0ZCs9KUJr
Nkw3Rwp6ajg9YG1DRlpLVjFiK3Y+PHpEeGxgd0pwUj9eO2xyPXs1KVRSQ2tpSmUpeyE8aGtCfVR6
fSUzSnpsbDNQMCNpTlAKemVPXjcpOF45bDhAazEqWVFwIztXeTdLaFpNUmk8U1dAX2Epd0NEejZW
YjZ+QGApVUBWS30ySUM4bjRtdCRVXmtqCnpGc21sa1hyaXdzQUpKckpucDlEZkpacHs8VWxHdDh1
cng9YHxHel54Ky02WjEyKCZ6QXsjXmpnJjRBe0w7d3U4MAp6T0I+QkttZ1p0bGJKZU4ye01CNUNZ
WUdJS2xGMyZER19ATnxIQV8/OSheTmIpSERGQ3VUPVNtNXxNQVRVbUR2ekIKWHF8R1A3VylrP2Y2
WF5JNipUV0BGekV9U1ImeVJTZAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzljNzEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSBAQAorICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0
LWN1c3RvbS5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0NDMxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20uaHRtbApAQCAt
MCwwICsxLDggQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworPC9zY3Jp
cHQ+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgncmVzb3VyY2VzL3Zl
cnRleC5zaGFkZXInKSB1cmwoJ3Jlc291cmNlcy9mcmFnbWVudC5zaGFkZXInKSkiIHNyYz0icmVz
b3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IGN1c3Rv
bSh1cmwoJ3Jlc291cmNlcy92ZXJ0ZXguc2hhZGVyJyksIDUgMTApIiBzcmM9InJlc291cmNlcy9y
ZWZlcmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCdy
ZXNvdXJjZXMvdmVydGV4X2RldGFjaGVkLnNoYWRlcicpIHVybCgncmVzb3VyY2VzL2ZyYWdtZW50
LnNoYWRlcicpLCAyIDIgZGV0YWNoZWQpIiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4K
KzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20obm9uZSB1cmwoJ3Jlc291cmNlcy9m
cmFnbWVudC5zaGFkZXInKSkiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9mcmFnbWVudC5zaGFkZXIg
Yi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2ZyYWdtZW50LnNoYWRlcgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmQwNzM0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9mcmFnbWVudC5zaGFkZXIKQEAg
LTAsMCArMSw3IEBACitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjMiB2X3Rl
eENvb3JkOwordW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOwordm9pZCBtYWluKCkKK3sKKyAg
ICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKSArIDAuMzsK
K30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
c3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3ZlcnRleC5zaGFkZXIgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL3ZlcnRleC5zaGFkZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNzhkOGM0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9yZXNvdXJjZXMvdmVydGV4LnNoYWRlcgpAQCAtMCwwICsxLDEzIEBACitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK2F0dHJpYnV0ZSB2
ZWMyIGFfdGV4Q29vcmQ7CisKK3VuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb25NYXRyaXg7Cit2YXJ5
aW5nIHZlYzIgdl90ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9
IHVfcHJvamVjdGlvbk1hdHJpeCAqIChhX3Bvc2l0aW9uICsgdmVjNCgwLjEsIDAuMCwgMC4wLCAw
LjApKTsKKyAgICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4X2RldGFjaGVkLnNoYWRlciBiL0xh
eW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4X2RldGFjaGVkLnNoYWRlcgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzY4YTNjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXhfZGV0YWNoZWQu
c2hhZGVyCkBAIC0wLDAgKzEsMTQgQEAKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCithdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsKK2F0dHJp
YnV0ZSB2ZWMzIGFfdHJpYW5nbGVDb29yZDsKKwordW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbk1h
dHJpeDsKK3ZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworCit2b2lkIG1haW4oKQoreworICAgIGds
X1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uTWF0cml4ICogKGFfcG9zaXRpb24gKyB2ZWM0KGFfdHJp
YW5nbGVDb29yZC54IC8gNC4wLCBhX3RyaWFuZ2xlQ29vcmQueSAvIDQuMCwgMC4wLCAwLjApKTsK
KyAgICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQK
aW5kZXggYjY3NmMwZi4uZjRiY2RiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKQEAgLTE4
OSw2ICsxODksNyBAQCBjb21wb3NpdGluZy92aWRlby1wYWdlLXZpc2liaWxpdHkuaHRtbAogCiAj
IFdlYktpdDIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlCiAj
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxOTc+Citjc3MzL2Zp
bHRlcnMvY3VzdG9tLWZpbHRlci5odG1sCiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1v
YmplY3QtYXR0YWNobWVudC5odG1sCiBmYXN0L2NhbnZhcy93ZWJnbC9nbC12ZXJ0ZXgtYXR0cmli
LXplcm8taXNzdWVzLmh0bWwKIGZhc3QvZXZlbnRzL3BhZ2VoaWRlLXRpbWVvdXQuaHRtbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCA0ZTJhMjQ5Li5jMjY1M2QxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMTEwOCwxMiArMTEwOCwxNSBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcAogCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNo
LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb3NpdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bnZvbHZlTWF0cml4LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21G
aWx0ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGlu
Zy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDFlMWI1MjkuLjhmODU3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAx
MS0xMi0xNSAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFkZXJzXSBBZGQgRkVDdXN0b21GaWx0ZXIgdGhhdCByZW5kZXJzIGN1c3RvbSBm
aWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MzMxNworCisgICAgICAgIFVzaW5nIGEgR3JhcGhpY3NDb250ZXh0M0QgdG8gcmVuZGVyIHRoZSBz
aGFkZXJzIGluIEdQVSBhbmQgcmVhZCB0aGUKKyAgICAgICAgcmVzdWx0IGJhY2sgYW5kIHVzZSBp
dCBpbiB0aGUgc29mdHdhcmUgZmlsdGVycyBwaXBlbGluZS4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBjc3MzL2ZpbHRlcnMvZWZmZWN0LWN1
c3RvbS5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2hhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNoYWRlcjo6Q2Fj
aGVkU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNoYWRlcjo6c2hhZGVyU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNoYWRlcjo6ZGF0YSk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YWRk
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9tRmlsdGVy
TWVzaCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjp+Q3VzdG9tRmlsdGVy
TWVzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJN
ZXNoLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNo
YWRlci5oLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OnZlcnRpY2VzQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OmJ5dGVzUGVyVmVydGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OmVsZW1lbnRzQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OmluZGljZXNDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21GaWx0ZXJNZXNoOjptZXNoQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZp
bHRlck1lc2g6Om1lc2hUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclNoYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
RmlsdGVyU2hhZGVyOjpkZWZhdWx0VmVydGV4U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6ZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6Q3VzdG9tRmlsdGVyU2hhZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6fkN1c3RvbUZpbHRlclNoYWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFk
ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3Rv
bUZpbHRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3J0aG9NYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OkZFQ3VzdG9tRmlsdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVD
dXN0b21GaWx0ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpG
RUN1c3RvbUZpbHRlcjo6ZHVtcCk6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUN1c3RvbUZpbHRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6dG9Db2x1bW5NYWpvckZsb2F0QXJyYXkpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3RPYnNlcnZlcjo6fkZpbHRlckVmZmVjdE9ic2VydmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJH
TEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRl
ckVmZmVjdFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVy
OjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6bm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6ZmlsdGVyTmVlZHNSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkU2hhZGVyOjpjYWNoZWRTaGFkZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVNoYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTaGFkZXI6OmNhY2hlZFNoYWRlcik6CisKIDIwMTEtMTItMTUgIENocmlzIE1hcnJpbiAg
PGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGVkIGVycm9yIGluIFRhcmdldC5wcmku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwNzBjM2E3Li45MTk0ZDA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI1MzYsNiArMjUzNiwxMCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Jl
ZlB0ckNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UmVmUHRyQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
VHJhbnNmb3JtYXRpb25NYXRyaXhDYWlyby5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
U2hhZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlz
dGFudExpZ2h0U291cmNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBcCkBAIC0yNTQ4LDYgKzI1NTIsOCBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0
aW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNw
bGFjZW1lbnRNYXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGZkYjFmNDYuLjgzZjQwYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQpAQCAtMjA3NywxMSArMjA3NywxNCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5o
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIFwKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBcCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb2xvck1hdHJpeC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRy
aXguaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmggXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaCBcCkBAIC0zMjM1LDEyICszMjM4
LDE1IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YU0xUPTEpIHsKIAogY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX0ZJTFRFUlM9MSkgewogICAgIFNPVVJDRVMgKz0gXAorICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwIFwKKyAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3BwIFwKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwIFwKICAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBcCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIFwKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwIFwKKyAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBcCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwIFwKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCA5Y2Y2Njk5Li41MGVmNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjY3LDYgKzM2Njcs
MTAgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VFZmwuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW50UG9pbnRFZmwuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW50UmVjdEVmbC5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNo
YWRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyU2hhZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RGlzdGFudExpZ2h0U291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCcsCkBAIC0zNjc5LDYgKzM2ODMsOCBAQAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4Lmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmls
dGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNl
TGlnaHRpbmcuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlmZnVzZUxpZ2h0aW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOWMxYzY0OS4uZDE0MDUyMSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5NjEyLDYgKzI5NjEyLDIy
IEBACiAJCQkJCU5hbWU9ImZpbHRlcnMiCiAJCQkJCT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJNZXNoLmNw
cCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlck1lc2guaCIKKwkJCQkJ
CT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlclNoYWRlci5jcHAiCisJCQkJCQk+CisJ
CQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJTaGFkZXIuaCIKKwkJCQkJCT4KKwkJCQkJPC9G
aWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xmaWx0ZXJzXERpc3RhbnRMaWdodFNvdXJjZS5jcHAiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4K
QEAgLTI5NjY4LDYgKzI5Njg0LDE0IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZp
bGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xGRUN1
c3RvbUZpbHRlci5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xGRUN1c3RvbUZpbHRl
ci5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcRkVEaWZmdXNlTGlnaHRpbmcuY3BwIgog
CQkJCQkJPgogCQkJCQk8L0ZpbGU+CkBAIC00MjQ3Myw2ICs0MjQ5Nyw3IEBACiAJCQkJPEZpbGUK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcRmlsdGVyT3BlcmF0aW9ucy5o
IgogCQkJCQk+CisJCQkJPC9GaWxlPgogCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cmVuZGVyaW5nXHN0eWxlXEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgogCQkJCQk+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmYw
MmI0MC4uNzVlNTAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTM5MCw2ICsxMzkwLDEzIEBACiAJCTUwMzhCRjI4MTQ3NTBG
MTkwMDk1RTBEMSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMzhCRjI0MTQ3NTBGMTkwMDk1RTBEMSAvKiBD
dXN0b21GaWx0ZXJPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MDhDQ0E0RjEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1Ro
cmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4
Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLzsgfTsKIAkJNTA4
Q0NBNTAxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEUxM0NGMTA2QjAwMzE1
MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwICovOyB9OworCQk1MEQ0MDNDNzE0NzY4Qzk0MDBE
MzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTBENDAzQzUxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmls
dGVyLmNwcCAqLzsgfTsKKwkJNTBENDAzQzgxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmls
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0
MDNDNjE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCAqLzsgfTsKKwkJNTBENDA1
RjkxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA1RjcxNDdEMzFGMzAwRDMwQkI1
IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwICovOyB9OworCQk1MEQ0MDVGQTE0N0QzMUYzMDBEMzBC
QjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTBENDA1RjgxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1l
c2guaCAqLzsgfTsKKwkJNTBENDA2MTExNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNo
YWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MEQ0MDYwRjE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCAqLzsgfTsK
KwkJNTBENDA2MTIxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2MTAxNDdENDlE
RTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5oICovOyB9OworCQk1MEQ0MDY3RDE0N0U0
MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNjdDMTQ3RTQwRDgwMEQzMEJCNSAvKiBG
aWx0ZXJFZmZlY3RPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUwRTU2NkQ2MTM5RTM4QzUwMDIxNDQzMyAvKiBDU1NXcmFwU2hhcGVz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMUJB
QUIxMTM5NTExNEIwMEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmNwcCAqLzsgfTsKIAkJNTEwMTg0
NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNo
ZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTEwMTg0NkEwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjgwQjA4NjAyQTAwNEE4
MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovOyB9OwpAQCAtODYyMyw2ICs4NjMwLDEzIEBACiAJCTUw
OENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJl
YWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRmxvd1Ro
cmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwQjQyMTU3MTQ2OTc2OTYw
MDg3RTYwNCAvKiBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MEQ0MDNDNTE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRkVDdXN0b21GaWx0ZXIuY3BwOyBw
YXRoID0gZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUwRDQwM0M2MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGRUN1c3RvbUZpbHRlci5oOyBwYXRoID0gZmls
dGVycy9GRUN1c3RvbUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0
MDVGNzE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21GaWx0ZXJNZXNoLmNwcDsgcGF0aCA9IGZp
bHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUwRDQwNUY4MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2guaDsgcGF0aCA9IGZpbHRl
cnMvQ3VzdG9tRmlsdGVyTWVzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0
MDYwRjE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlclNoYWRlci5jcHA7IHBhdGgg
PSBmaWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyU2hhZGVyLmg7IHBh
dGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyRWZmZWN0T2JzZXJ2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVG
IC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVk
UGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0
QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRB
MkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc3MDgsNiArMTc3MjIsMTIgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTQ5RUNFQjVDMTQ5OTc5MEQwMENERDNBNCAvKiBhcm0gKi8sCiAJCQkJ
MTk4NDFCRkExMzY4MzZBMTAwNkVCQkI5IC8qIGFybSAqLywKKwkJCQk1MEQ0MDYwRjE0N0Q0OURF
MDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCAqLywKKwkJCQk1MEQ0MDYxMDE0N0Q0
OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggKi8sCisJCQkJNTBENDA1RjcxNDdE
MzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwICovLAorCQkJCTUwRDQwNUY4MTQ3
RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi8sCisJCQkJNTBENDAzQzUxNDc2
OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCAqLywKKwkJCQk1MEQ0MDNDNjE0NzY4
Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCAqLywKIAkJCQlBMUUxMTU0MzEzMDE1QzNE
MDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNwcCAqLywKIAkJCQk4NDczMEQ1QTEyNDhG
MEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNlLmggKi8sCiAJCQkJQTc1RThCODAwRTFE
RTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwICovLApAQCAtMjA5MjMsNiArMjA5NDMsNyBAQAog
CQlGNTIzRDJGMzAyREU0NDNCMDE4NjM1Q0EgLyogcmVuZGVyaW5nICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUg
LyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCAqLywKIAkJCQk0MzkwNDZDMjEyREEyNUNFMDBBRjgw
QTIgLyogbWF0aG1sICovLAogCQkJCUJDOEM4RkFBMEREQ0QyRjIwMEI1OTJGNCAvKiBzdHlsZSAq
LywKIAkJCQkwODhDMkY3NDEyMzkwMDgwMDAzRDY1Q0UgLyogc3ZnICovLApAQCAtMjQ4NDIsNiAr
MjQ4NjMsMTAgQEAKIAkJCQlBMTBEQzc2QjE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEyQzBDNDExNDZEQzZDQzAwMTZDOTExIC8qIE5vdGlm
aWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEyOENBNkIxNDczMzE2MzAwNzRDNzJBIC8q
IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUwRDQwM0M4MTQ3
NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTBE
NDA1RkExNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guaCBpbiBIZWFkZXJzICov
LAorCQkJCTUwRDQwNjEyMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTUwRDQwNjdEMTQ3RTQwRDgwMEQzMEJCNSAvKiBGaWx0ZXJFZmZl
Y3RPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FBNTFERDYxNDg1MDZBOTAwQUQyNzUy
IC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDM4QkYyODE0
NzUwRjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJl
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzcyOSw2ICsyNzc1NCw5IEBACiAJCQkJN0FBNTFCNkYx
NDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBMTBEQzc2QTE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzMTI4Q0E2ODE0NzMzMTUyMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MEQ0MDNDNzE0NzY4Qzk0MDBEMzBCQjUg
LyogRkVDdXN0b21GaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTBENDA1RjkxNDdEMzFG
MzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTBE
NDA2MTExNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QUE1MURENTE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkUzRkFEMzgxNDczM0Y0MDAwRTQyMzA2IC8qIEpT
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdFMTE2QjEx
NDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAppbmRleCAxZDhm
NTQwLi4xM2JkYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2hhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hh
ZGVyLmNwcApAQCAtMzIsMTEgKzMyLDE0IEBACiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogCiAj
aW5jbHVkZSAiQ2FjaGVkU2hhZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENh
Y2hlZFNoYWRlcjo6Q2FjaGVkU2hhZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQogICAgIDogQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2VSZXF1ZXN0LCBTaGFkZXJSZXNv
dXJjZSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxp
Y2F0aW9uL3NoYWRlciIpKQogewogfQogCkBAIC00NCw2ICs0NywyNCBAQCBDYWNoZWRTaGFkZXI6
On5DYWNoZWRTaGFkZXIoKQogewogfQogCitjb25zdCBTdHJpbmcmIENhY2hlZFNoYWRlcjo6c2hh
ZGVyU3RyaW5nKCkKK3sKKyAgICBpZiAoIW1fc2hhZGVyU3RyaW5nICYmIG1fZGF0YSkgeworICAg
ICAgICBtX3NoYWRlclN0cmluZyA9IG1fZGVjb2Rlci0+ZGVjb2RlKG1fZGF0YS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hhZGVyU3RyaW5nICs9IG1fZGVjb2Rlci0+Zmx1
c2goKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zaGFkZXJTdHJpbmc7Cit9CisKK3ZvaWQgQ2Fj
aGVkU2hhZGVyOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3sKKyAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKQorICAgICAgICBtX2RhdGEg
PSBkYXRhOworCisgICAgQ2FjaGVkUmVzb3VyY2U6OmRhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVk
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19T
SEFERVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNo
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCmluZGV4
IDhkZWFkMDEuLmNjMzhmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2hhZGVyLmgKQEAgLTM2LDEwICszNiwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFRleHRSZXNvdXJjZURlY29kZXI7CisKIGNsYXNzIENhY2hlZFNoYWRlciA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZSB7CiBwdWJsaWM6CiAgICAgQ2FjaGVkU2hhZGVyKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogICAgIHZpcnR1YWwgfkNhY2hlZFNoYWRlcigpOworICAgIAorICAgIGNvbnN0
IFN0cmluZyYgc2hhZGVyU3RyaW5nKCk7CisgICAgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIAorcHJpdmF0ZToKKyAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOworICAgIFN0cmluZyBtX3NoYWRlclN0
cmluZzsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmM3M2VhYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCkBAIC0w
LDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDi
gJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBC
RQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5j
bHVkZSAiQ3VzdG9tRmlsdGVyTWVzaC5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKKworI2RlZmluZSBERUJVR19DVVNUT01fRklMVEVSX01FU0ggMAorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyB2b2lkIGFkZFBvaW50KGludCBpLCBpbnQgaiwgVmVjdG9yPGZsb2F0
PiYgdmVydGljZXMsIFZlY3Rvcjx1aW50MTZfdD4mIGluZGljZXMsIGZsb2F0IGhTaXplLCBmbG9h
dCB2U2l6ZSwgZmxvYXQgbWhTaXplLCBmbG9hdCBtdlNpemUsIGZsb2F0IG1lc2hCb3hYLCBmbG9h
dCBtZXNoQm94WSwgaW50IGRpLCBpbnQgZGosIGludCB0cmlhbmdsZSkKK3sKKyAgICBkaSArPSBp
OworICAgIGRqICs9IGo7CisgICAgdmVydGljZXMuYXBwZW5kKGhTaXplICogZGkgLSAwLjVmICsg
bWVzaEJveFgpOworICAgIHZlcnRpY2VzLmFwcGVuZCh2U2l6ZSAqIGRqIC0gMC41ZiArIG1lc2hC
b3hZKTsKKyAgICB2ZXJ0aWNlcy5hcHBlbmQoMC4wZik7CisgICAgdmVydGljZXMuYXBwZW5kKDEu
MGYpOworICAgIHZlcnRpY2VzLmFwcGVuZChoU2l6ZSAqIGRpICsgbWVzaEJveFgpOworICAgIHZl
cnRpY2VzLmFwcGVuZCh2U2l6ZSAqIGRqICsgbWVzaEJveFkpOworICAgIHZlcnRpY2VzLmFwcGVu
ZChtaFNpemUgKiBkaSk7CisgICAgdmVydGljZXMuYXBwZW5kKG12U2l6ZSAqIGRqKTsKKyAgICB2
ZXJ0aWNlcy5hcHBlbmQoaSk7CisgICAgdmVydGljZXMuYXBwZW5kKGopOworICAgIHZlcnRpY2Vz
LmFwcGVuZCh0cmlhbmdsZSk7CisgICAgaW5kaWNlcy5hcHBlbmQoaW5kaWNlcy5zaXplKCkpOwor
fQorCitDdXN0b21GaWx0ZXJNZXNoOjpDdXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBjb2xzLCB1bnNpZ25lZCByb3dzLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0
ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQp
CisgICAgLCBtX3ZlcnRpY2VzQnVmZmVyKDApCisgICAgLCBtX2VsZW1lbnRzQnVmZmVyKDApCisg
ICAgLCBtX21lc2hCb3gobWVzaEJveCkKKyAgICAsIG1fbWVzaFR5cGUobWVzaFR5cGUpCit7Cisg
ICAgdW5zaWduZWQgZmxvYXRzUGVyVmVydGV4OworICAgIAorICAgIFZlY3RvcjxmbG9hdD4gdmVy
dGljZXM7CisgICAgVmVjdG9yPHVpbnQxNl90PiBpbmRpY2VzOworCisgICAgdW5zaWduZWQgaFBv
aW50cyA9IGNvbHMgKyAyOworICAgIHVuc2lnbmVkIHZQb2ludHMgPSByb3dzICsgMjsKKworICAg
IHVuc2lnbmVkIGhTcGFjZXMgPSBjb2xzICsgMTsKKyAgICB1bnNpZ25lZCB2U3BhY2VzID0gcm93
cyArIDE7CisgICAgICAgIAorICAgIGZsb2F0IGhTaXplID0gbWVzaEJveC53aWR0aCgpIC8gaFNw
YWNlczsKKyAgICBmbG9hdCB2U2l6ZSA9IG1lc2hCb3guaGVpZ2h0KCkgLyB2U3BhY2VzOworCisg
ICAgZmxvYXQgbWhTaXplID0gMS4wIC8gaFNwYWNlczsKKyAgICBmbG9hdCBtdlNpemUgPSAxLjAg
LyB2U3BhY2VzOworICAgIAorICAgIGZsb2F0IG1lc2hCb3hYID0gbWVzaEJveC54KCk7CisgICAg
ZmxvYXQgbWVzaEJveFkgPSBtZXNoQm94LnkoKTsKKyAgICAKKyAgICBtX2luZGljZXNDb3VudCA9
IGhTcGFjZXMgKiB2U3BhY2VzICogMiAqIDM7IC8vIDIgdHJpYW5nbGVzIHBlciBxdWFkLCAzIGlu
ZGljZXMgcGVyIHRyaWFuZ2xlCisgICAgaW5kaWNlcy5yZXNlcnZlQ2FwYWNpdHkobV9pbmRpY2Vz
Q291bnQpOyAKKyAgICAKKyAgICBpZiAobWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
OjpBVFRBQ0hFRCkgeworICAgICAgICBmbG9hdHNQZXJWZXJ0ZXggPSA4OworICAgICAgICAvLyBU
cmlhbmdsZXMgc2hhcmUgdGhlaXIgcG9pbnRzLgorICAgICAgICB2ZXJ0aWNlcy5yZXNlcnZlQ2Fw
YWNpdHkoaFBvaW50cyAqIHZQb2ludHMgKiBmbG9hdHNQZXJWZXJ0ZXgpOworICAgICAgICAKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHZQb2ludHM7ICsraikgeworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhQb2ludHM7ICsraSkgeworICAgICAgICAgICAg
ICAgIHZlcnRpY2VzLmFwcGVuZChoU2l6ZSAqIGkgLSAwLjVmICsgbWVzaEJveFgpOworICAgICAg
ICAgICAgICAgIHZlcnRpY2VzLmFwcGVuZCh2U2l6ZSAqIGogLSAwLjVmICsgbWVzaEJveFkpOwor
ICAgICAgICAgICAgICAgIHZlcnRpY2VzLmFwcGVuZCgwLjBmKTsKKyAgICAgICAgICAgICAgICB2
ZXJ0aWNlcy5hcHBlbmQoMS4wZik7CisgICAgICAgICAgICAgICAgdmVydGljZXMuYXBwZW5kKGhT
aXplICogaSArIG1lc2hCb3hYKTsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNlcy5hcHBlbmQodlNp
emUgKiBqICsgbWVzaEJveFkpOworICAgICAgICAgICAgICAgIHZlcnRpY2VzLmFwcGVuZChtaFNp
emUgKiBpKTsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNlcy5hcHBlbmQobXZTaXplICogaik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICNkZWZpbmUgQUREX1BP
SU5UKHgsIHkpIFwKKyAgICAgICAgICAgIGluZGljZXMuYXBwZW5kKChqICsgeSkgKiBoUG9pbnRz
ICsgKGkgKyB4KSk7CisgICAgICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IHZTcGFjZXM7ICsraikgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGhTcGFjZXM7ICsraSkgeworICAgICAgICAgICAgICAgIEFERF9QT0lOVCgwLCAwKTsKKyAgICAg
ICAgICAgICAgICBBRERfUE9JTlQoMSwgMCk7CisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDEs
IDEpOworCisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDAsIDApOworICAgICAgICAgICAgICAg
IEFERF9QT0lOVCgxLCAxKTsKKyAgICAgICAgICAgICAgICBBRERfUE9JTlQoMCwgMSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICN1bmRlZiBBRERfUE9JTlQK
KyAgICB9IGVsc2UgeworICAgICAgICBmbG9hdHNQZXJWZXJ0ZXggPSAxMTsKKyAgICAgICAgLy8g
VHJpYW5nbGVzIGRvIG5vdCBzaGFyZSBhbnkgb2YgdGhlIHZlcnRleGVzLCBzbyB3ZSBuZWVkIGEg
dmVydGV4IHBlciBpbmRleC4KKyAgICAgICAgdmVydGljZXMucmVzZXJ2ZUNhcGFjaXR5KG1faW5k
aWNlc0NvdW50ICogZmxvYXRzUGVyVmVydGV4KTsKKworICAgICAgICAjZGVmaW5lIEFERF9QT0lO
VCh4LCB5LCB0cmlhbmdsZSkgXAorICAgICAgICAgICAgYWRkUG9pbnQoaSwgaiwgdmVydGljZXMs
IGluZGljZXMsIGhTaXplLCB2U2l6ZSwgbWhTaXplLCBtdlNpemUsIG1lc2hCb3hYLCBtZXNoQm94
WSwgeCwgeSwgdHJpYW5nbGUpCisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHZT
cGFjZXM7ICsraikgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhTcGFj
ZXM7ICsraSkgeworICAgICAgICAgICAgICAgIEFERF9QT0lOVCgwLCAwLCAwKTsKKyAgICAgICAg
ICAgICAgICBBRERfUE9JTlQoMSwgMCwgMSk7CisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDEs
IDEsIDIpOworCisgICAgICAgICAgICAgICAgQUREX1BPSU5UKDAsIDAsIDMpOworICAgICAgICAg
ICAgICAgIEFERF9QT0lOVCgxLCAxLCA0KTsKKyAgICAgICAgICAgICAgICBBRERfUE9JTlQoMCwg
MSwgNSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICN1bmRl
ZiBBRERfUE9JTlQKKyAgICB9CisgICAgCisgICAgbV9ieXRlc1BlclZlcnRleCA9IGZsb2F0c1Bl
clZlcnRleCAqIHNpemVvZihmbG9hdCk7CisgICAgCisjaWYgREVCVUdfQ1VTVE9NX0ZJTFRFUl9N
RVNICisgICAgcHJpbnRmKCJNZXNoVkJPOiBSb3dzOiAlZCwgQ29sczogJWQgYm94OiAlZiwgJWYs
ICVmLCAlZiwgdHlwZTogJXNcbiIsIAorICAgICAgICAgICAgY29scywgcm93cywgbWVzaEJveC54
KCksIG1lc2hCb3gueSgpLCBtZXNoQm94LndpZHRoKCksIG1lc2hCb3guaGVpZ2h0KCksIChtZXNo
VHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEKSA/ICJBdHRhY2hlZCIgOiAi
RGV0YWNoZWQiKTsKKyAgICBwcmludGYoIi0tLVZlcnRleDpcblx0Iik7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHZlcnRpY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHByaW50Zigi
JWYgIiwgdmVydGljZXMuYXQoaSkpOworICAgICAgICBpZiAoISgoaSArIDEpICUgZmxvYXRzUGVy
VmVydGV4KSkKKyAgICAgICAgICAgIHByaW50ZigiXG5cdCIpOworICAgIH0KKyAgICBwcmludGYo
IlxuLS0tSW5kaWNlczogIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluZGljZXMu
c2l6ZSgpOyArK2kpCisgICAgICAgIHByaW50ZigiJWQgIiwgaW5kaWNlcy5hdChpKSk7CisgICAg
cHJpbnRmKCJcbiIpOworI2VuZGlmCisKKyAgICBtX3ZlcnRpY2VzQnVmZmVyID0gbV9jb250ZXh0
LT5jcmVhdGVCdWZmZXIoKTsKKyAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV92ZXJ0aWNlc0J1ZmZlcik7CisgICAgbV9jb250ZXh0LT5i
dWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIHZlcnRpY2VzLnNpemUo
KSAqIHNpemVvZihmbG9hdCksIHZlcnRpY2VzLmRhdGEoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlNU
QVRJQ19EUkFXKTsKKyAgICAKKyAgICBtX2VsZW1lbnRzQnVmZmVyID0gbV9jb250ZXh0LT5jcmVh
dGVCdWZmZXIoKTsKKyAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBtX2VsZW1lbnRzQnVmZmVyKTsKKyAgICBtX2NvbnRleHQt
PmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRp
Y2VzLnNpemUoKSAqIHNpemVvZih1aW50MTZfdCksIGluZGljZXMuZGF0YSgpLCBHcmFwaGljc0Nv
bnRleHQzRDo6U1RBVElDX0RSQVcpOworfQorCitDdXN0b21GaWx0ZXJNZXNoOjp+Q3VzdG9tRmls
dGVyTWVzaCgpCit7CisgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV92ZXJ0aWNlc0J1ZmZl
cik7CisgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV9lbGVtZW50c0J1ZmZlcik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykg
JiYgRU5BQkxFKFdFQkdMKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQ3YmY0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaApAQCAtMCww
ICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0
ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxB
UyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQor
ICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3VzdG9tRmls
dGVyTWVzaF9oCisjZGVmaW5lIEN1c3RvbUZpbHRlck1lc2hfaAorCisjaWYgRU5BQkxFKENTU19T
SEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRp
b24uaCIKKyNpbmNsdWRlIDxGbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworCitj
bGFzcyBDdXN0b21GaWx0ZXJNZXNoIDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyTWVz
aD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck1lc2g+IGNy
ZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgY29scywgdW5zaWduZWQg
cm93cywgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBt
ZXNoVHlwZSkgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlck1lc2go
Y29udGV4dCwgY29scywgcm93cywgbWVzaEJveCwgbWVzaFR5cGUpKTsKKyAgICB9CisgICAgfkN1
c3RvbUZpbHRlck1lc2goKTsKKworICAgIHVuc2lnbmVkIHZlcnRpY2VzQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV92ZXJ0aWNlc0J1ZmZlcjsgfQorICAgIHVuc2lnbmVkIGJ5dGVzUGVyVmVydGV4
KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlc1BlclZlcnRleDsgfQorICAgIAorICAgIHVuc2lnbmVk
IGVsZW1lbnRzQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50c0J1ZmZlcjsgfQorICAg
IHVuc2lnbmVkIGluZGljZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kaWNlc0NvdW50OyB9
CisgICAgCisgICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94KCkgY29uc3QgeyByZXR1cm4gbV9t
ZXNoQm94OyB9CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVzaFR5cGU7IH0KKworcHJpdmF0ZToKKyAgICBDdXN0b21GaWx0
ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywg
Y29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBl
KTsKKyAgICAKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIAorICAgIHVu
c2lnbmVkIG1fdmVydGljZXNCdWZmZXI7CisgICAgdW5zaWduZWQgbV9ieXRlc1BlclZlcnRleDsK
KyAgICAKKyAgICB1bnNpZ25lZCBtX2VsZW1lbnRzQnVmZmVyOworICAgIHVuc2lnbmVkIG1faW5k
aWNlc0NvdW50OworICAgIAorICAgIEZsb2F0UmVjdCBtX21lc2hCb3g7CisgICAgQ3VzdG9tRmls
dGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtX21lc2hUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wp
CisKKyNlbmRpZiAvLyBDdXN0b21GaWx0ZXJNZXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjNkODY4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJTaGFkZXIuY3BwCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IDIw
MTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
KyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykg
JiYgRU5BQkxFKFdFQkdMKQorCisjZGVmaW5lIFNIQURFUjAoU3JjKSAjU3JjCisjZGVmaW5lIFNI
QURFUihTcmMpIFNIQURFUjAoU3JjKQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyU2hhZGVyLmgi
CisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1N0cmluZyBDdXN0b21GaWx0ZXJTaGFkZXI6OmRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmco
KQoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICBhdHRyaWJ1dGUg
dmVjMiBhX3RleENvb3JkOworICAgICAgICB1bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uTWF0cml4
OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdm9pZCBtYWluKCkK
KyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXgg
KiBhX3Bvc2l0aW9uOworICAgICAgICAgICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7CisgICAg
ICAgIH0KKyAgICApOworfQorCitTdHJpbmcgQ3VzdG9tRmlsdGVyU2hhZGVyOjpkZWZhdWx0RnJh
Z21lbnRTaGFkZXJTdHJpbmcoKQoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAg
ICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOworICAgICAgICB2b2lkIG1haW4oKQor
ICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJl
LCB2X3RleENvb3JkKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK0N1c3RvbUZpbHRlclNoYWRl
cjo6Q3VzdG9tRmlsdGVyU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHZlcnRleFNoYWRlclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclN0
cmluZykKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV92ZXJ0ZXhTaGFkZXJTdHJp
bmcoIXZlcnRleFNoYWRlclN0cmluZy5pc051bGwoKSA/IHZlcnRleFNoYWRlclN0cmluZyA6IGRl
ZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcoKSkKKyAgICAsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmco
IWZyYWdtZW50U2hhZGVyU3RyaW5nLmlzTnVsbCgpID8gZnJhZ21lbnRTaGFkZXJTdHJpbmcgOiBk
ZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKSkKKyAgICAsIG1fcHJvZ3JhbSgwKQorICAgICwg
bV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV90ZXhBdHRyaWJMb2NhdGlvbigt
MSkKKyAgICAsIG1fbWVzaEF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV90cmlhbmdsZUF0dHJp
YkxvY2F0aW9uKC0xKQorICAgICwgbV9tZXNoQm94TG9jYXRpb24oLTEpCisgICAgLCBtX3Byb2pl
Y3Rpb25NYXRyaXhMb2NhdGlvbigtMSkKKyAgICAsIG1fdGlsZVNpemVMb2NhdGlvbigtMSkKKyAg
ICAsIG1fbWVzaFNpemVMb2NhdGlvbigtMSkKKyAgICAsIG1fc2FtcGxlckxvY2F0aW9uKC0xKQor
ICAgICwgbV9zYW1wbGVyU2l6ZUxvY2F0aW9uKC0xKQorICAgICwgbV9jb250ZW50U2FtcGxlckxv
Y2F0aW9uKC0xKQorICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQoreworICAgIFBsYXRmb3Jt
M0RPYmplY3QgdmVydGV4U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OlZFUlRFWF9TSEFERVIpOworICAgIFBsYXRmb3JtM0RPYmplY3QgZnJhZ21lbnRT
aGFkZXIgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBR01F
TlRfU0hBREVSKTsKKworICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwg
bV92ZXJ0ZXhTaGFkZXJTdHJpbmcpOworICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcih2ZXJ0
ZXhTaGFkZXIpOworICAgIAorICAgIGludCBjb21waWxlZCA9IDA7CisgICAgbV9jb250ZXh0LT5n
ZXRTaGFkZXJpdih2ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QSUxFX1NUQVRV
UywgJmNvbXBpbGVkKTsKKyAgICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGFuIGludmFsaWQgc2hhZGVyLiBUaHJvdyBzb21lIGVycm9ycy4KKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDE2CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UoZnJhZ21lbnRT
aGFkZXIsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcpOworICAgIG1fY29udGV4dC0+Y29tcGlsZVNo
YWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgCisgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihm
cmFnbWVudFNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVTLCAmY29tcGls
ZWQpOworICAgIGlmICghY29tcGlsZWQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4g
aW52YWxpZCBzaGFkZXIuIFRocm93IHNvbWUgZXJyb3JzLgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MTYKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBtX3Byb2dyYW0gPSBtX2NvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKKyAg
ICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3Byb2dyYW0sIHZlcnRleFNoYWRlcik7CisgICAg
bV9jb250ZXh0LT5hdHRhY2hTaGFkZXIobV9wcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7CisgICAg
bV9jb250ZXh0LT5saW5rUHJvZ3JhbShtX3Byb2dyYW0pOworICAgIAorICAgIG1fY29udGV4dC0+
ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIo
ZnJhZ21lbnRTaGFkZXIpOworICAgIAorICAgIGludCBsaW5rZWQgPSAwOworICAgIG1fY29udGV4
dC0+Z2V0UHJvZ3JhbWl2KG1fcHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTktfU1RBVFVT
LCAmbGlua2VkKTsKKyAgICBpZiAoIWxpbmtlZCkgeworICAgICAgICAvLyBGSVhNRTogSW52YWxp
ZCB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVyIGNvbWJpbmF0aW9uLiBUaHJvdyBzb21lIGVycm9ycyBo
ZXJlLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQ0MTYKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX3Bvc2l0aW9uQXR0cmli
TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfcG9z
aXRpb24iKTsKKyAgICBtX3RleEF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJM
b2NhdGlvbihtX3Byb2dyYW0sICJhX3RleENvb3JkIik7CisgICAgbV9tZXNoQXR0cmliTG9jYXRp
b24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfbWVzaENvb3Jk
Iik7CisgICAgbV90cmlhbmdsZUF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJM
b2NhdGlvbihtX3Byb2dyYW0sICJhX3RyaWFuZ2xlQ29vcmQiKTsKKyAgICBtX21lc2hCb3hMb2Nh
dGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfbWVzaEJv
eCIpOworICAgIG1fdGlsZVNpemVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKG1fcHJvZ3JhbSwgInVfdGlsZVNpemUiKTsKKyAgICBtX21lc2hTaXplTG9jYXRpb24gPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X21lc2hTaXplIik7Cisg
ICAgbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihtX3Byb2dyYW0sICJ1X3Byb2plY3Rpb25NYXRyaXgiKTsKKyAgICBtX3NhbXBsZXJMb2Nh
dGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInNfdGV4dHVy
ZSIpOworICAgIG1fc2FtcGxlclNpemVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1fcHJvZ3JhbSwgInNfdGV4dHVyZVNpemUiKTsKKyAgICBtX2NvbnRlbnRTYW1wbGVy
TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJzX2Nv
bnRlbnRUZXh0dXJlIik7CisgICAgCisgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKK30KKyAg
ICAKK0N1c3RvbUZpbHRlclNoYWRlcjo6fkN1c3RvbUZpbHRlclNoYWRlcigpCit7CisgICAgaWYg
KG1fcHJvZ3JhbSkKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fcHJvZ3JhbSk7
Cit9CisKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VC
R0wpCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYWYxZmNjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgKQEAgLTAsMCArMSwx
MDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT
4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YK
KyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21GaWx0ZXJT
aGFkZXJfaAorI2RlZmluZSBDdXN0b21GaWx0ZXJTaGFkZXJfaAorCisjaWYgRU5BQkxFKENTU19T
SEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwor
CitjbGFzcyBDdXN0b21GaWx0ZXJTaGFkZXI6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRl
clNoYWRlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclNo
YWRlcj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZl
cnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcikKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyU2hhZGVyKGNvbnRleHQsIHZlcnRleFNo
YWRlciwgZnJhZ21lbnRTaGFkZXIpKTsKKyAgICB9CisgICAgCisgICAgfkN1c3RvbUZpbHRlclNo
YWRlcigpOworICAgIAorICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFZlcnRleFNoYWRlclN0cmlu
ZygpOworICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCk7ICAg
IAorICAgIAorICAgIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiBt
X3ZlcnRleFNoYWRlclN0cmluZzsgfQorICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7IH0KKyAgICAKKyAgICBpbnQg
cG9zaXRpb25BdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb25BdHRyaWJM
b2NhdGlvbjsgfQorICAgIGludCB0ZXhBdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4QXR0cmliTG9jYXRpb247IH0KKyAgICBpbnQgbWVzaEF0dHJpYkxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9tZXNoQXR0cmliTG9jYXRpb247IH0KKyAgICBpbnQgdHJpYW5nbGVBdHRyaWJM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJpYW5nbGVBdHRyaWJMb2NhdGlvbjsgfQorICAg
IGludCBtZXNoQm94TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lc2hCb3hMb2NhdGlvbjsg
fQorICAgIGludCBwcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3By
b2plY3Rpb25NYXRyaXhMb2NhdGlvbjsgfQorICAgIGludCB0aWxlU2l6ZUxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV90aWxlU2l6ZUxvY2F0aW9uOyB9CisgICAgaW50IG1lc2hTaXplTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX21lc2hTaXplTG9jYXRpb247IH0KKyAgICBpbnQgc2FtcGxl
ckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb247IH0KKyAgICBpbnQg
Y29udGVudFNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNhbXBsZXJM
b2NhdGlvbjsgfQorICAgIGludCBzYW1wbGVyU2l6ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zYW1wbGVyU2l6ZUxvY2F0aW9uOyB9CisgICAgCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemVkOyB9CisgICAgCisgICAgUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtOyB9CisKK3ByaXZhdGU6Cisg
ICAgQ3VzdG9tRmlsdGVyU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2
ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpOworICAgIAorICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIAorICAgIFN0cmluZyBtX3Zl
cnRleFNoYWRlclN0cmluZzsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZzsKKwor
ICAgIFBsYXRmb3JtM0RPYmplY3QgbV9wcm9ncmFtOworICAgIAorICAgIGludCBtX3Bvc2l0aW9u
QXR0cmliTG9jYXRpb247CisgICAgaW50IG1fdGV4QXR0cmliTG9jYXRpb247CisgICAgaW50IG1f
bWVzaEF0dHJpYkxvY2F0aW9uOworICAgIGludCBtX3RyaWFuZ2xlQXR0cmliTG9jYXRpb247Cisg
ICAgaW50IG1fbWVzaEJveExvY2F0aW9uOworICAgIGludCBtX3Byb2plY3Rpb25NYXRyaXhMb2Nh
dGlvbjsKKyAgICBpbnQgbV90aWxlU2l6ZUxvY2F0aW9uOworICAgIGludCBtX21lc2hTaXplTG9j
YXRpb247CisgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOworICAgIGludCBtX3NhbXBsZXJTaXpl
TG9jYXRpb247CisgICAgaW50IG1fY29udGVudFNhbXBsZXJMb2NhdGlvbjsKKyAgICAKKyAgICBi
b29sIG1faXNJbml0aWFsaXplZDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hB
REVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNkNzQyYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0
ZXIuY3BwCkBAIC0wLDAgKzEsMjEyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdF
QkdMKQorI2luY2x1ZGUgIkZFQ3VzdG9tRmlsdGVyLmgiCisKKyNpbmNsdWRlICJDYWNoZWRTaGFk
ZXIuaCIKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJNZXNoLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmls
dGVyU2hhZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEcmF3aW5nQnVm
ZmVyLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0
LmgiCisjaW5jbHVkZSAiU3R5bGVDYWNoZWRTaGFkZXIuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCisjaW5jbHVkZSAiVGV4dHVyZS5oIgorI2luY2x1ZGUgIlRpbGluZ0RhdGEuaCIKKyNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCisjaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBv
cnRob01hdHJpeChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmbG9hdCB0
b3ApCit7CisgICAgZmxvYXQgZGVsdGFYID0gcmlnaHQgLSBsZWZ0OworICAgIGZsb2F0IGRlbHRh
WSA9IHRvcCAtIGJvdHRvbTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRobzsKKyAgICBp
ZiAoIWRlbHRhWCB8fCAhZGVsdGFZKQorICAgICAgICByZXR1cm4gb3J0aG87CisgICAgb3J0aG8u
c2V0TTExKDIuMGYgLyBkZWx0YVgpOworICAgIG9ydGhvLnNldE00MSgtKHJpZ2h0ICsgbGVmdCkg
LyBkZWx0YVgpOworICAgIG9ydGhvLnNldE0yMigyLjBmIC8gZGVsdGFZKTsKKyAgICBvcnRoby5z
ZXRNNDIoLSh0b3AgKyBib3R0b20pIC8gZGVsdGFZKTsKKworICAgIC8vIFVzZSBiaWcgZW5vdWdo
IG5lYXIvZmFyIHZhbHVlcywgc28gdGhhdCBzaW1wbGUgcm90YXRpb25zIG9mIHJhdGhlciBsYXJn
ZSBvYmplY3RzIHdpbGwgbm90CisgICAgLy8gZ2V0IGNsaXBwZWQuIDEwMDAwIHNob3VsZCBjb3Zl
ciBtb3N0IG9mIHRoZSBzY3JlZW4gcmVzb2x1dGlvbnMuCisgICAgY29uc3QgZmxvYXQgZmFyVmFs
dWUgPSAxMDAwMDsKKyAgICBjb25zdCBmbG9hdCBuZWFyVmFsdWUgPSAtMTAwMDA7CisgICAgb3J0
aG8uc2V0TTMzKC0yLjBmIC8gKGZhclZhbHVlIC0gbmVhclZhbHVlKSk7CisgICAgb3J0aG8uc2V0
TTQzKC0gKGZhclZhbHVlICsgbmVhclZhbHVlKSAvIChmYXJWYWx1ZSAtIG5lYXJWYWx1ZSkpOwor
ICAgIG9ydGhvLnNldE00NCgxLjBmKTsKKworICAgIHJldHVybiBvcnRobzsKK30KKworRkVDdXN0
b21GaWx0ZXI6OkZFQ3VzdG9tRmlsdGVyKEZpbHRlciogZmlsdGVyLCBEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hh
ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1
bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSBt
ZXNoQm94VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJP
cGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQorICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikK
KyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX3ZlcnRleFNoYWRlcih2ZXJ0ZXhT
aGFkZXIpCisgICAgLCBtX2ZyYWdtZW50U2hhZGVyKGZyYWdtZW50U2hhZGVyKQorICAgICwgbV9t
ZXNoUm93cyhtZXNoUm93cykKKyAgICAsIG1fbWVzaENvbHVtbnMobWVzaENvbHVtbnMpCisgICAg
LCBtX21lc2hCb3hUeXBlKG1lc2hCb3hUeXBlKQorICAgICwgbV9tZXNoVHlwZShtZXNoVHlwZSkK
KworeworfQorCitQYXNzUmVmUHRyPEZFQ3VzdG9tRmlsdGVyPiBGRUN1c3RvbUZpbHRlcjo6Y3Jl
YXRlKEZpbHRlciogZmlsdGVyLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdmVy
dGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBt
ZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSBtZXNoQm94VHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0
ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRkVDdXN0b21GaWx0ZXIoZmlsdGVyLCBkb2N1bWVudCwgdmVydGV4U2hhZGVyLCBmcmFnbWVu
dFNoYWRlciwgbWVzaFJvd3MsIG1lc2hDb2x1bW5zLCBtZXNoQm94VHlwZSwgbWVzaFR5cGUpKTsK
K30KKwordm9pZCBGRUN1c3RvbUZpbHRlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3sKKyAg
ICBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQoKTsKKyAgICBpZiAoIWRzdFBpeGVsQXJyYXkpCisgICAgICAgIHJldHVybjsKKworICAgIEZp
bHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKKyAgICBJbnRSZWN0IGVmZmVjdEFEcmF3
aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFp
bnRSZWN0KCkpOworICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNQ
cmVtdWx0aXBsaWVkSW1hZ2UoZWZmZWN0QURyYXdpbmdSZWN0KTsKKyAgICAKKyAgICBJbnRTaXpl
IG5ld0NvbnRleHRTaXplKGVmZmVjdEFEcmF3aW5nUmVjdC53aWR0aCgpLCBlZmZlY3RBRHJhd2lu
Z1JlY3QuaGVpZ2h0KCkpOworICAgIGJvb2wgaGFkQ29udGV4dCA9IG1fY29udGV4dDsKKyAgICBp
ZiAoIW1fY29udGV4dCkgeworICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBh
dHRyaWJ1dGVzOworICAgICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHRy
dWU7CisgICAgICAgIGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhID0gZmFsc2U7CisgICAg
ICAgIAorICAgICAgICBtX2NvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJp
YnV0ZXMsIG1fZG9jdW1lbnQtPnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCksIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pOworICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBE
cmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBuZXdDb250ZXh0U2l6ZSwgIWF0
dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICAgICAgCisgICAgICAgIG1fc2hh
ZGVyID0gQ3VzdG9tRmlsdGVyU2hhZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBtX3ZlcnRl
eFNoYWRlciwgbV9mcmFnbWVudFNoYWRlcik7CisgICAgICAgIG1fbWVzaCA9IEN1c3RvbUZpbHRl
ck1lc2g6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIG1fbWVzaENvbHVtbnMsIG1fbWVzaFJvd3Ms
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRSZWN0KDAs
IDAsIDEsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9t
ZXNoVHlwZSk7CisgICAgfQorICAgIAorICAgIGlmICghaGFkQ29udGV4dCB8fCBtX2NvbnRleHRT
aXplICE9IG5ld0NvbnRleHRTaXplKSB7CisgICAgICAgIG1faW5wdXRUZXh0dXJlID0gMDsKKyAg
ICAgICAgbV9kcmF3aW5nQnVmZmVyLT5yZXNldChuZXdDb250ZXh0U2l6ZSk7CisgICAgICAgIG1f
Y29udGV4dC0+cmVzaGFwZShuZXdDb250ZXh0U2l6ZS53aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5o
ZWlnaHQoKSk7CisgICAgICAgIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgbmV3Q29udGV4dFNp
emUud2lkdGgoKSwgbmV3Q29udGV4dFNpemUuaGVpZ2h0KCkpOworICAgICAgICBtX2lucHV0VGV4
dHVyZSA9IFRleHR1cmU6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIFRleHR1cmU6OlJHQkE4LCBu
ZXdDb250ZXh0U2l6ZS53aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5oZWlnaHQoKSk7CisgICAgICAg
IG1fY29udGV4dFNpemUgPSBuZXdDb250ZXh0U2l6ZTsKKyAgICB9CisgICAgCisgICAgaWYgKG1f
aW5wdXRUZXh0dXJlLT50aWxlcygpLm51bVRpbGVzKCkgIT0gMSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICBtX2NvbnRl
eHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhpY3ND
b250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQpOworICAgIAorICAgIG1fY29udGV4dC0+dXNlUHJv
Z3JhbShtX3NoYWRlci0+cHJvZ3JhbSgpKTsKKyAgICAKKyAgICBpZiAobV9zaGFkZXItPnNhbXBs
ZXJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0x
aShtX3NoYWRlci0+c2FtcGxlckxvY2F0aW9uKCksIDApOworICAgICAgICBtX2lucHV0VGV4dHVy
ZS0+bG9hZChzcmNQaXhlbEFycmF5LT5kYXRhKCkpOworICAgICAgICBtX2lucHV0VGV4dHVyZS0+
YmluZFRpbGUoMCk7CisgICAgfQorICAgIAorICAgIGlmIChtX3NoYWRlci0+cHJvamVjdGlvbk1h
dHJpeExvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcHJv
amVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KC0wLjUsIDAuNSwgLTAuNSwgMC41KTsKKyAgICAg
ICAgZmxvYXQgZ2xQcm9qZWN0aW9uTWF0cml4WzE2XTsKKyAgICAgICAgcHJvamVjdGlvbk1hdHJp
eC50b0NvbHVtbk1ham9yRmxvYXRBcnJheShnbFByb2plY3Rpb25NYXRyaXgpOworICAgICAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobV9zaGFkZXItPnByb2plY3Rpb25NYXRyaXhMb2Nh
dGlvbigpLCBmYWxzZSwgJmdsUHJvamVjdGlvbk1hdHJpeFswXSwgMSk7CisgICAgfQorICAgIAor
ICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVS
LCBtX21lc2gtPnZlcnRpY2VzQnVmZmVyKCkpOworICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1fbWVzaC0+ZWxlbWVudHNC
dWZmZXIoKSk7CisKKyAgICB1bnNpZ25lZCB2ZXJ0ZXhTaXplID0gbV9tZXNoLT5ieXRlc1BlclZl
cnRleCgpOworICAgIAorICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7CisgICAgCisgICAgaWYgKG1f
c2hhZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9u
KCksIDQsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIHZlcnRleFNpemUsIG9mZnNl
dCk7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9zaGFkZXIt
PnBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSk7CisgICAgfQorICAgIG9mZnNldCArPSA0ICogc2l6
ZW9mKGZsb2F0KTsKKyAgICAKKyAgICBpZiAobV9zaGFkZXItPnRleEF0dHJpYkxvY2F0aW9uKCkg
IT0gLTEpIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVy
LT50ZXhBdHRyaWJMb2NhdGlvbigpLCAyLCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNl
LCB2ZXJ0ZXhTaXplLCBvZmZzZXQpOworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KG1fc2hhZGVyLT50ZXhBdHRyaWJMb2NhdGlvbigpKTsKKyAgICB9CisgICAgb2Zm
c2V0ICs9IDIgKiBzaXplb2YoZmxvYXQpOworICAgIAorICAgIGlmIChtX3NoYWRlci0+bWVzaEF0
dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKG1fc2hhZGVyLT5tZXNoQXR0cmliTG9jYXRpb24oKSwgMiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkZMT0FULCBmYWxzZSwgdmVydGV4U2l6ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9jb250ZXh0
LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3NoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCkp
OworICAgIH0KKyAgICBvZmZzZXQgKz0gMiAqIHNpemVvZihmbG9hdCk7CisgICAgCisgICAgaWYg
KG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpERVRBQ0hFRCAmJiBtX3NoYWRl
ci0+dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIG1fY29udGV4dC0+
dmVydGV4QXR0cmliUG9pbnRlcihtX3NoYWRlci0+dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpLCAz
LCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCB2ZXJ0ZXhTaXplLCBvZmZzZXQpOwor
ICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fc2hhZGVyLT50cmlh
bmdsZUF0dHJpYkxvY2F0aW9uKCkpOworICAgIH0KKyAgICAKKyAgICBtX2NvbnRleHQtPmRyYXdF
bGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCBtX21lc2gtPmluZGljZXNDb3Vu
dCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQsIDApOworICAgIAorICAgIG1f
ZHJhd2luZ0J1ZmZlci0+Y29tbWl0KCk7CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURh
dGEgPSBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKG1fZHJhd2lu
Z0J1ZmZlci5nZXQoKSk7CisgICAgQnl0ZUFycmF5KiBncHVSZXN1bHQgPSBpbWFnZURhdGEtPmRh
dGEoKS0+ZGF0YSgpOworICAgIEFTU0VSVChncHVSZXN1bHQtPmxlbmd0aCgpID09IGRzdFBpeGVs
QXJyYXktPmxlbmd0aCgpKTsKKyAgICBtZW1jcHkoZHN0UGl4ZWxBcnJheS0+ZGF0YSgpLCBncHVS
ZXN1bHQtPmRhdGEoKSwgZ3B1UmVzdWx0LT5sZW5ndGgoKSk7Cit9CisKK3ZvaWQgRkVDdXN0b21G
aWx0ZXI6OmR1bXAoKQoreworfQorCitUZXh0U3RyZWFtJiBGRUN1c3RvbUZpbHRlcjo6ZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKK3sKKyAg
ICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKKyAgICB0cyA8PCAiW2ZlQ3VzdG9tRmlsdGVyIjsK
KyAgICBGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMpOworICAgIHRzIDw8
ICJdXG4iOworICAgIGlucHV0RWZmZWN0KDApLT5leHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzLCBp
bmRlbnQgKyAxKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZp
bHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3Rv
bUZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MjQ3OWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ3VzdG9tRmlsdGVyLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEx
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEZFQ3VzdG9tRmlsdGVyX2gKKyNkZWZpbmUgRkVDdXN0b21GaWx0ZXJf
aAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRl
ICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQ2FjaGVkU2hhZGVyOworY2xhc3MgQ3VzdG9tRmlsdGVyTWVzaDsK
K2NsYXNzIEN1c3RvbUZpbHRlclNoYWRlcjsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRHJhd2lu
Z0J1ZmZlcjsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3MgVGV4dHVyZTsKKyAgICAK
K2NsYXNzIEZFQ3VzdG9tRmlsdGVyIDogcHVibGljIEZpbHRlckVmZmVjdCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RkVDdXN0b21GaWx0ZXI+IGNyZWF0ZShGaWx0ZXIqLCBEb2N1
bWVudCosIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50
U2hhZGVyLAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBt
ZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSwgCisgICAgICAg
ICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CisgICAgdmlydHVhbCB2b2lkIGR1bXAo
KTsKKworICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRkVDdXN0b21G
aWx0ZXIoRmlsdGVyKiwgRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29u
c3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlciwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBt
ZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVz
aEJveFR5cGUsIAorICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVz
aFR5cGUpOworICAgIAorICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIAorICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVy
PiBtX2RyYXdpbmdCdWZmZXI7CisgICAgUmVmUHRyPFRleHR1cmU+IG1faW5wdXRUZXh0dXJlOwor
ICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJTaGFkZXI+IG1fc2hhZGVyOworICAgIFJlZlB0cjxDdXN0
b21GaWx0ZXJNZXNoPiBtX21lc2g7CisgICAgSW50U2l6ZSBtX2NvbnRleHRTaXplOworICAgIAor
ICAgIFN0cmluZyBtX3ZlcnRleFNoYWRlcjsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlcjsK
KworICAgIHVuc2lnbmVkIG1fbWVzaFJvd3M7CisgICAgdW5zaWduZWQgbV9tZXNoQ29sdW1uczsK
KyAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hCb3hUeXBlIG1fbWVzaEJveFR5cGU7Cisg
ICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtX21lc2hUeXBlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBF
TkFCTEUoV0VCR0wpCisKKyNlbmRpZiAvLyBGRUN1c3RvbUZpbHRlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggM2NmZDIzMC4u
NWZmN2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9U
ZXh0dXJlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpIHx8IEVOQUJMRShDU1NfU0hBREVSUykKIAogI2luY2x1ZGUgIlRleHR1cmUuaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCBlMGQ0Zjc4Li5h
ZjU4MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTE5
OCw1ICsxMTk4LDI1IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4
Ojp0bzJkVHJhbnNmb3JtKCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9tYXRyaXhbM11bMF0sIG1fbWF0cml4WzNdWzFdLCAwLCBtX21hdHJpeFszXVszXSk7CiB9CiAK
K3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KGZsb2F0
KiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmVzdWx0WzBdID0gbTExKCk7CisgICAgcmVzdWx0WzFd
ID0gbTEyKCk7CisgICAgcmVzdWx0WzJdID0gbTEzKCk7CisgICAgcmVzdWx0WzNdID0gbTE0KCk7
CisgICAgcmVzdWx0WzRdID0gbTIxKCk7CisgICAgcmVzdWx0WzVdID0gbTIyKCk7CisgICAgcmVz
dWx0WzZdID0gbTIzKCk7CisgICAgcmVzdWx0WzddID0gbTI0KCk7CisgICAgcmVzdWx0WzhdID0g
bTMxKCk7CisgICAgcmVzdWx0WzldID0gbTMyKCk7CisgICAgcmVzdWx0WzEwXSA9IG0zMygpOwor
ICAgIHJlc3VsdFsxMV0gPSBtMzQoKTsKKyAgICByZXN1bHRbMTJdID0gbTQxKCk7CisgICAgcmVz
dWx0WzEzXSA9IG00MigpOworICAgIHJlc3VsdFsxNF0gPSBtNDMoKTsKKyAgICByZXN1bHRbMTVd
ID0gbTQ0KCk7CisKK30KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmlu
ZGV4IDA0NTBhZDcuLjdmNzc5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmgKQEAgLTM1MCw2ICszNTAsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIG1ldGhvZCByZXR1
cm5zIHRoZSBtYXRyaXggd2l0aG91dCAzRCBjb21wb25lbnRzLgogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHRvMmRUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHRvQ29sdW1uTWFq
b3JGbG9hdEFycmF5KGZsb2F0KiByZXN1bHQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIC8vIG11
bHRpcGx5IHBhc3NlZCAyRCBwb2ludCBieSBtYXRyaXggKGFzc3VtZSB6PTApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYzYwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
ICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRmlsdGVyRWZmZWN0T2JzZXJ2
ZXJfaAorI2RlZmluZSBGaWx0ZXJFZmZlY3RPYnNlcnZlcl9oCisKKyNpZiBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmlsdGVyRWZmZWN0T2JzZXJ2
ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdE9ic2VydmVyKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGZpbHRlck5lZWRzUmVwYWludCgpID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKKworI2VuZGlm
IC8vIEZpbHRlckVmZmVjdE9ic2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDQ2N2M0OTkuLjEyNjQ0ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApA
QCAtMzQsMTEgKzM0LDE5IEBACiAjaW5jbHVkZSAiRkVEcm9wU2hhZG93LmgiCiAjaW5jbHVkZSAi
RkVHYXVzc2lhbkJsdXIuaCIKICNpbmNsdWRlICJGRU1lcmdlLmgiCisjaW5jbHVkZSAiRmlsdGVy
RWZmZWN0T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKIAogI2luY2x1
ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCisjaWYgRU5BQkxF
KENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiQ2FjaGVkU2hhZGVyLmgi
CisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiRkVDdXN0b21G
aWx0ZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIGlubGluZSB2b2lkIGVuZE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+JiBw
YXJhbWV0ZXJzKQpAQCAtNTUsOSArNjMsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIGxhc3RNYXRy
aXhSb3coVmVjdG9yPGZsb2F0PiYgcGFyYW1ldGVycykKICAgICBwYXJhbWV0ZXJzLmFwcGVuZCgx
KTsKICAgICBwYXJhbWV0ZXJzLmFwcGVuZCgwKTsKIH0KKyAgICAKKyAgICAKKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKK3N0YXRpYyBib29sIGlzV2ViR0xFbmFibGVk
KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICAvLyBXZSBvbmx5IHdhbnQgdG8gZW5hYmxlIHNo
YWRlcnMgaWYgV2ViR0wgaXMgYWxzbyBlbmFibGVkIG9uIHRoaXMgcGxhdGZvcm0uCisgICAgU2V0
dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgcmV0dXJuIHNldHRp
bmdzICYmIHNldHRpbmdzLT53ZWJHTEVuYWJsZWQoKTsKK30KKyNlbmRpZgogCi1GaWx0ZXJFZmZl
Y3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQotICAgIDogbV9ncmFwaGljc0J1ZmZl
ckF0dGFjaGVkKGZhbHNlKQorRmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRl
cmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKiBvYnNlcnZlcikKKyAgICA6IG1fb2JzZXJ2ZXIob2Jz
ZXJ2ZXIpCisgICAgLCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQoZmFsc2UpCiB7CiAgICAgc2V0
RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUoMSwgMSkpOwogICAgIG1fc291cmNlR3JhcGhpYyA9
IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSh0aGlzKTsKQEAgLTcyLDggKzkxLDE0IEBAIEdyYXBoaWNz
Q29udGV4dCogRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCgpCiAgICAgcmV0dXJu
IHNvdXJjZUltYWdlKCktPmNvbnRleHQoKTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6YnVpbGQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3QgTGF5b3V0
UmVjdCYgYm9yZGVyQm94KQordm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBM
YXlvdXRSZWN0JiBib3JkZXJCb3gpCiB7CisjaWYgIUVOQUJMRShDU1NfU0hBREVSUykgfHwgIUVO
QUJMRShXRUJHTCkKKyAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOworI2Vsc2UKKyAgICBDYWNo
ZWRTaGFkZXJMaXN0IGNhY2hlZFNoYWRlcnM7CisjZW5kaWYKKwogICAgIG1fZWZmZWN0cy5jbGVh
cigpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwpAQCAtMjE0LDcgKzIzOSw0
MSBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBvcGVyYXRpb25zLCBjb25zdCBMYXlvdQogICAgICAgICB9CiAjaWYgRU5BQkxFKENTU19T
SEFERVJTKQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOiB7Ci0gICAgICAg
ICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgaW4gdGhlIHNvZnR3YXJlIHBhdGguCisjaWYgRU5BQkxF
KFdFQkdMKQorICAgICAgICAgICAgaWYgKCFpc1dlYkdMRW5hYmxlZChkb2N1bWVudCkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEN1c3RvbUZp
bHRlck9wZXJhdGlvbiogY3VzdG9tRmlsdGVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Q3VzdG9t
RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgZmlsdGVycyBhcmUgYWxyZWFkeSBsb2FkZWQuIElmIG5v
dCBqdXN0IHNraXAgdGhlbSBoZXJlLgorICAgICAgICAgICAgU3RyaW5nIHZlcnRleFNoYWRlciwg
ZnJhZ21lbnRTaGFkZXI7CisgICAgICAgICAgICBib29sIHNoYWRlcnNMb2FkZWQgPSB0cnVlOwor
ICAgICAgICAgICAgaWYgKGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+dmVydGV4U2hhZGVyKCkpIHsK
KyAgICAgICAgICAgICAgICBDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlciA9IGN1c3RvbUZpbHRl
ck9wZXJhdGlvbi0+dmVydGV4U2hhZGVyKCktPmNhY2hlZFNoYWRlcigpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChjYWNoZWRTaGFkZXIpOworICAgICAgICAgICAgICAgIGNhY2hlZFNoYWRlcnMu
YXBwZW5kKGNhY2hlZFNoYWRlcik7CisgICAgICAgICAgICAgICAgY2FjaGVkU2hhZGVyLT5hZGRD
bGllbnQodGhpcyk7CisgICAgICAgICAgICAgICAgaWYgKGNhY2hlZFNoYWRlci0+aXNMb2FkZWQo
KSkKKyAgICAgICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyID0gY2FjaGVkU2hhZGVyLT5zaGFk
ZXJTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNo
YWRlcnNMb2FkZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjdXN0
b21GaWx0ZXJPcGVyYXRpb24tPmZyYWdtZW50U2hhZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBD
YWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlciA9IGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+ZnJhZ21l
bnRTaGFkZXIoKS0+Y2FjaGVkU2hhZGVyKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGNhY2hl
ZFNoYWRlcik7CisgICAgICAgICAgICAgICAgY2FjaGVkU2hhZGVycy5hcHBlbmQoY2FjaGVkU2hh
ZGVyKTsKKyAgICAgICAgICAgICAgICBjYWNoZWRTaGFkZXItPmFkZENsaWVudCh0aGlzKTsKKyAg
ICAgICAgICAgICAgICBpZiAoY2FjaGVkU2hhZGVyLT5pc0xvYWRlZCgpKQorICAgICAgICAgICAg
ICAgICAgICBmcmFnbWVudFNoYWRlciA9IGNhY2hlZFNoYWRlci0+c2hhZGVyU3RyaW5nKCk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzaGFkZXJzTG9hZGVkID0g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2hhZGVyc0xvYWRlZCkgewor
ICAgICAgICAgICAgICAgIGVmZmVjdCA9IEZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUodGhpcywgZG9j
dW1lbnQsIHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPm1lc2hS
b3dzKCksIGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+bWVzaENvbHVtbnMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUZpbHRlck9wZXJhdGlv
bi0+bWVzaEJveFR5cGUoKSwgY3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5tZXNoVHlwZSgpKTsKKyAg
ICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICNlbmRp
ZgpAQCAtMjM2LDYgKzI5NSwxNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBMYXlvdQogCiAgICAgbV9l
ZmZlY3RzLmZpcnN0KCktPmlucHV0RWZmZWN0cygpLmFwcGVuZChtX3NvdXJjZUdyYXBoaWMpOwog
ICAgIHNldE1heEVmZmVjdFJlY3RzKG1fc291cmNlRHJhd2luZ1JlZ2lvbik7CisgICAgCisjaWYg
RU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisgICAgZm9yIChDYWNoZWRTaGFk
ZXJMaXN0OjppdGVyYXRvciBpdGVyID0gbV9jYWNoZWRTaGFkZXJzLmJlZ2luKCksIGVuZCA9IG1f
Y2FjaGVkU2hhZGVycy5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgaXRlci0+
Z2V0KCktPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBtX2NhY2hlZFNoYWRlcnMuc3dhcChjYWNo
ZWRTaGFkZXJzKTsKKyNlbmRpZgorfQorCit2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCit7CisgICAgbV9vYnNlcnZlci0+ZmlsdGVyTmVl
ZHNSZXBhaW50KCk7CiB9CiAKIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OnByZXBhcmUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAppbmRl
eCAwYmFmYWM4Li5jNmVhMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQogCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKQEAgLTQ0LDEyICs0
NiwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8Rmls
dGVyRWZmZWN0PiA+IEZpbHRlckVmZmVjdExpc3Q7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEZp
bHRlckVmZmVjdE9ic2VydmVyOworY2xhc3MgQ2FjaGVkU2hhZGVyOwogCi1jbGFzcyBGaWx0ZXJF
ZmZlY3RSZW5kZXJlciA6IHB1YmxpYyBGaWx0ZXIgeworY2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVy
ZXIgOiBwdWJsaWMgRmlsdGVyLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdFJlbmRlcmVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdFJlbmRlcmVyPiBjcmVhdGUoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqIG9ic2VydmVyKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWx0ZXJFZmZlY3RSZW5kZXJlcigp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWx0ZXJFZmZlY3RSZW5kZXJlcihvYnNl
cnZlcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTb3VyY2VJbWFnZVJlY3QoY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCkBAIC02NywxMCArNzMsMTIgQEAgcHVibGlj
OgogICAgIEdyYXBoaWNzQ29udGV4dCogaW5wdXRDb250ZXh0KCk7CiAgICAgSW1hZ2VCdWZmZXIq
IG91dHB1dCgpIGNvbnN0IHsgcmV0dXJuIGxhc3RFZmZlY3QoKS0+YXNJbWFnZUJ1ZmZlcigpOyB9
CiAKLSAgICB2b2lkIGJ1aWxkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBjb25zdCBMYXlvdXRS
ZWN0Jik7CisgICAgdm9pZCBidWlsZChEb2N1bWVudCosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
LCBjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAgdm9pZCBwcmVwYXJlKCk7CiAgICAgdm9pZCBhcHBs
eSgpOwogICAgIAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSopOworICAgIAogcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TWF4RWZmZWN0UmVjdHMoY29uc3Qg
RmxvYXRSZWN0JiBlZmZlY3RSZWN0KQpAQCAtODcsNyArOTUsNyBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpOworICAgIEZp
bHRlckVmZmVjdFJlbmRlcmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKik7CiAgICAgdmlydHVhbCB+
RmlsdGVyRWZmZWN0UmVuZGVyZXIoKTsKICAgICAKICAgICBGbG9hdFJlY3QgbV9zb3VyY2VEcmF3
aW5nUmVnaW9uOwpAQCAtOTUsNiArMTAzLDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgRmlsdGVy
RWZmZWN0TGlzdCBtX2VmZmVjdHM7CiAgICAgUmVmUHRyPFNvdXJjZUdyYXBoaWM+IG1fc291cmNl
R3JhcGhpYzsKKyAgICBGaWx0ZXJFZmZlY3RPYnNlcnZlciogbV9vYnNlcnZlcjsgLy8gTm8gbmVl
ZCBmb3IgYSBzdHJvbmcgcmVmZXJlbmNlcyBoZXJlLiBJdCBvd25zIHVzLgorICAgIAorI2lmIEVO
QUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorICAgIHR5cGVkZWYgVmVjdG9yPENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNoYWRlcj4gPiBDYWNoZWRTaGFkZXJMaXN0OworICAg
IENhY2hlZFNoYWRlckxpc3QgbV9jYWNoZWRTaGFkZXJzOworI2VuZGlmCiAgICAgCiAgICAgYm9v
bCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggOTk3MGMwNy4uZmEwNTAzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00NDMwLDEyICs0NDMwLDEyIEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KCkKIHsKICAgICBpZiAoaGFzRmls
dGVyKCkpIHsKICAgICAgICAgaWYgKCFtX2ZpbHRlcikgewotICAgICAgICAgICAgbV9maWx0ZXIg
PSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2ZpbHRlciA9
IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUodGhpcyk7CiAgICAgICAgICAgICBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUgPSByZW5kZXJlcigpLT5mcmFtZSgpLT5wYWdlKCktPnNldHRp
bmdzKCktPmFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2Nl
bGVyYXRlZDsKICAgICAgICAgICAgIG1fZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJlbmRlcmlu
Z01vZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVyKCkt
PnN0eWxlKCktPmZpbHRlcigpLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVj
dCgpKTsKKyAgICAgICAgbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVyKCktPmRvY3VtZW50KCksIHJl
bmRlcmVyKCktPnN0eWxlKCktPmZpbHRlcigpLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+Ym9y
ZGVyQm94UmVjdCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2ZpbHRlciA9IDA7CiAgICAg
fQpAQCAtNDQ1Miw2ICs0NDUyLDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUZpbHRlckJh
Y2tpbmdTdG9yZSgpCiAgICAgfQogfQogCit2b2lkIFJlbmRlckxheWVyOjpmaWx0ZXJOZWVkc1Jl
cGFpbnQoKQoreworICAgIHJlbmRlcmVyKCktPm5vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhT
eW50aGV0aWNTdHlsZUNoYW5nZSk7CisgICAgcmVuZGVyZXIoKS0+cmVwYWludCgpOworfQogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKaW5kZXggOTdlNGU0Mi4uM2JjN2MxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmgKQEAgLTQ0LDYgKzQ0LDkgQEAKICNpZm5kZWYgUmVuZGVyTGF5ZXJfaAog
I2RlZmluZSBSZW5kZXJMYXllcl9oCiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlBhaW50SW5mby5o
IgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlNjcm9sbEJlaGF2aW9yLmgiCkBA
IC0yMDIsNyArMjA1LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpeGVkIDogMTsKIH07CiAK
LWNsYXNzIFJlbmRlckxheWVyIDogcHVibGljIFNjcm9sbGFibGVBcmVhIHsKK2NsYXNzIFJlbmRl
ckxheWVyIDogcHVibGljIFNjcm9sbGFibGVBcmVhCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQor
ICAgICwgcHVibGljIEZpbHRlckVmZmVjdE9ic2VydmVyCisjZW5kaWYKK3sKIHB1YmxpYzoKICAg
ICBmcmllbmQgY2xhc3MgUmVuZGVyUmVwbGljYTsKIApAQCAtNTEwLDYgKzUxNyw3IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICBib29sIGhhc0ZpbHRlcigpIGNvbnN0
IHsgcmV0dXJuIHJlbmRlcmVyKCktPmhhc0ZpbHRlcigpOyB9CisgICAgdmlydHVhbCB2b2lkIGZp
bHRlck5lZWRzUmVwYWludCgpOwogI2VuZGlmCiAKICAgICAvLyBPdmVybG9hZGVkIG5ldyBvcGVy
YXRvci4gRGVyaXZlZCBjbGFzc2VzIG11c3Qgb3ZlcnJpZGUgb3BlcmF0b3IgbmV3CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5oCmluZGV4
IDg4YmZjODEuLjI2OTIyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZFNoYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZFNoYWRlci5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Q7CiAgICAg
CisgICAgdmlydHVhbCBDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhZGVyLmdldCgpOyB9CisgICAgCiBwcml2YXRlOgogICAgIFN0eWxlQ2FjaGVkU2hhZGVy
KENhY2hlZFNoYWRlciopOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlU2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVTaGFkZXIuaAppbmRleCA5YjM2Njc3Li5mZjVkMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTaGFkZXIuaApAQCAtMzYsOCArMzYsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFNoYWRlcjsKIGNsYXNzIENTU1ZhbHVlOwot
ICAgIAorCiBjbGFzcyBTdHlsZVNoYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU2hhZGVy
PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3R5bGVTaGFkZXIoKSB7IH0KQEAgLTQ3LDYgKzQ4
LDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3Nz
VmFsdWUoKSBjb25zdCA9IDA7CiAgICAgCisgICAgdmlydHVhbCBDYWNoZWRTaGFkZXIqIGNhY2hl
ZFNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICAKIHByb3RlY3RlZDoKICAgICBTdHls
ZVNoYWRlcigpCiAgICAgICAgIDogbV9pc0NhY2hlZFNoYWRlcihmYWxzZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119668</attachid>
            <date>2011-12-16 14:11:57 -0800</date>
            <delta_ts>2011-12-16 14:34:01 -0800</delta_ts>
            <desc>Patch V3</desc>
            <filename>bug73317_5.patch</filename>
            <type>text/plain</type>
            <size>83603</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNjFkZTRjLi41MmIwOGU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTIt
MTYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gQWRkIEZFQ3VzdG9tRmlsdGVyIHRoYXQgcmVuZGVycyBjdXN0b20gZmlsdGVy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTcK
KworICAgICAgICBXZWJLaXQyIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgV2ViR0wgZmxhZyBpbiBsYXlv
dXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UuCisgICAgICAgIFNraXBwaW5nIHRo
ZSB0ZXN0IGxpa2UgYWxsIHRoZSBvdGhlciBXZWJHTCB0ZXN0cyBkby4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvZmlsdGVycy9lZmZlY3Qt
Y3VzdG9tLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0ZXJzL2VmZmVj
dC1jdXN0b20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvZWZm
ZWN0LWN1c3RvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3VyY2Vz
L2NvbG9yLW9mZnNldC5mczogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0ZXJzL3Jlc291cmNl
cy92ZXJ0ZXgtZXhwbG9kZS1kZXRhY2hlZC52czogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0
ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93azIvU2tpcHBlZDogU2tpcHBpbmcgdGhlIHRlc3QgdW50aWwgV2ViR0wgY2FuIGJlIGVuYWJs
ZWQgZnJvbSBsYXlvdXRUZXN0Q29udHJvbGxlci4KKwogMjAxMS0xMi0xNiAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAgQXVkaW8gZmlsZSBpbiB2aWRlbyBl
bGVtZW50IGhhcyBhIHNpemUgb2YgMHgwIC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9lZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9lZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDhiZjQxZDkxZTA1
ZTE0OWE0YTM1Y2I1N2I5YTBlYjdhNTliZTRkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNDg5
NQp6Y21lSE9kcHkoYWAkckR0VHNpZVBtZ3BjdTxhfTVwc1lFQnFYLT1nY2hwQ01ANG9ONUYmYEZV
fmlsO302NmZxa3IKemJZaTR6blFpMi1pT3AjPCU7eCopZENLPHNlKmdLc1VjY30yYHUqfHEqWDtK
Vz9fSm1YZFNCUHx6T1FsQj9VMGo8Cno8WnFIZkxQOWRtYH1RMFc1P1pBdEJxWlhvU3t6dShpTWtM
MHlsakl6ZGNYdEVvQyp3cU1UUTkocFdmeH5aKVJyZAp6P3s5MnF2ZVZxZUZ3bEhneiVLTENNZ2Y3
UjAqd3QjNj5tSCQxNVZMNj4pX3ojP0JKbH5iez1+QVowSVE9cD1qYU0KelcwYTY/SHc5a3JzbDNY
OEd8UyslWWkhU0NnJEVzbEozT2NmSVpAeTRgUTVhMzxHJFJJRno9ayEmMihnPyNNZDthCnpXZVp8
VCFnZ0xsYGZDYV8/eHN3dWc4JHNwRTFNM15abVExREhGNFE7Ylg2VDJPX15ze1lAclZNN1M1bVo+
e2MrNAp6USNnTHF3ZEt7fm47YHx0dzZMJDVnV2xwOW0kWFl0YCpvZWJhXjI1akNhUHktSENqWEEz
QER8SDd4KlJUamBaM3wKekg3KUd6VTJpckdvR2QpK3tUYVQjenZ0PmlwMyR5WD9GVjVWckpgI3pn
VXo5ViRwaERLWHh9fDt2SjBIRT05TlQ/Cnp6MiQrSVZEbyF0YCk2YmI5bXh0cVRYZGg/MWZeTSpJ
VVg/PjRzdmBaSnYqcmhPUFBqTHsmOU9XeDExX31CUD9nYgp6cHwxRkFXS0R+TmkwZE9sVXorVjhE
d3kzYl5DQ1A8MmE5KGg/YnxuM3RrdU8oOFN1MEI9JTtlQlBpfFlNcXFleXIKejs4PXhtPS1DbWVS
YWJMSHk2SEB9bzBTRDdqVjh0P1g5bnFSY1NPZ0dUM0U5T19BPWArY3cqS3FpTlJnQXJRM1FFCnoh
OHtDYGJeaDlMJSsxTk09TmRQQEZ1aVZDeClYXio/SXFmOy15amEjdD1lYVFBemR3S1lrIXUjdzB9
PEVuP0w2Ywp6RHM5LWJ8SXckakBNQUkwJXpMYzEtbnZVeWJCY1prayR2Zl8jUFdMZmE8LXE3UHR3
N3NIej1tSSlEe3lDKF9iV3kKeik8MFhIcW5hNCR8Rn00T3pecmFLUzJlNm1ZVn4yPndjKUNMek5n
OzFVTzBAOEcjJHgybiFPayloMSs/WHAlYjt2CnpMJVJPeXIwP0FKUClYTlI8eVlCX3BXaytuJWgh
SExJPTkyTkVkT1lHPiR1TFJnUCtFTlVOJkIxKnwpMDlYQnMocAp6PTN6SXhKaCl+dC1SbVpgTUkz
UXFZfi03XzBiVXs+e24yTSZwPkIwSz0pODlORGBsMnJ7S2lTRkcxZUFSMyUlbEIKek8ybD50alRJ
WXRqLWs3PT5LfDZjLXAoTHluWUJzKGJOejtBUm9FKHxgKWEtQzQrRFNTVWshSF5UQlE/cUQwQGNp
CnoqMkxQMlF0PytSXnNpPT0xKVJ1cSlzdXdZbS1mdztjMUc+ezNhWWZxcHMlVnErVCR+Rjc2UC1G
KiZaPmYlNiZacwp6R0NNQnJ5UD5ISTIydzZHanZRSzM4U2xHZU9wJk4qb25NPWpXa24xdXcrWnZG
UHFURnxCZj4jbThwM0Z+dk0mWD0KektmalF1THkxeisjZiMha3Y/WTY5Nit3MGkzMjZ5QUA3YUFV
VDl7Njl5YEMyd1gqV3JZUmtNbisqMnVeTUpLUzhDCnpzPUx8b21HRX1RVmAxSCgtVXxDdm5yXyp9
Q31DQjVWdnZMNGk3KiQhP1lrbSQoNTd3Y0R6OXlLT2NnOE5eWk1DMAp6U05rJHU5bEQ2KkhzPVIj
clY9eFB0QEZTXmF0THhBP0RTJHNwOUt9VWN2Sl9NTjUhJXE7MUkzJTRlKWwyREpfcDcKej9GSiZF
dEwzJThOa1lRRjUyNDlUPkg1KCEyRHxAJGBgM0RNZiNnOyN0VVVpQWRCUlIldjdpcnNWQn4qbmBN
Rm99CnozUUZMZVh3NTtlQFlrS2M4fD5qOWxxQiprZyNTKGBTJTFBN3hhTkFWKVlATWtGMFdNeT50
Mih0TDFKZHBWdn0kQQp6JFZGTXRkYlMxbiRZSURWenFZX0dTZ0I8YGs+dilARiFwZ31NMn55X18/
MDhCSjxfSWJ1eGRXTnR6TkBaQzNiUV4Keit2JD08LTc3aFNvVn5LU1FpRH47aG9aNjxRQlNFYmxx
ZlkkWFJhUDR6QUFRQ0c9fDNoYTwhazhFYGY3d2dnbTVfCnp6USRXdyMxa0p+ZlZlakRYbzIpUkhj
My1+dkptTFg5a0ApS2Z5Nmg9cSpmeV9PQzROeD9QWk8pcj9BcFU4O3tBeAp6VEMrWnd0NXF+TFoh
Q2NEe2BDQFA9b1dwPjd6ZjcmRj4mfGx2b2xSJG0qcnxIM3IhTjFoLXN+NHRaMmlrUHVZKmcKem1a
MWlgRWxDbzJya2t+RDhBSCs0T3I2M2NycH5DUHp8enhnZy1LN0hoeUR1QiYmPiZJd3JWOWYqVUpo
MzlzPE5ECnpXU3p5JkYjZFFCMz14c3MyZjEwe3p7azhQTT9+XiUmS185LTgjPVItTUU9OTlyVmAy
O1pkTmB0TldEUUE5QDZDJQp6O3teU3hoRWFxfl9MUWJ8ZDRaanZTLTtzSnFTe2VjMylJYWlHajt1
V0hOP3NDJlhtQUM4U1EpN2xDaSRnK3ZlVlAKemQ2aFdmOUhIfVM0UHU7ODh0V20mMDlhdSFDVmFV
LU5nUk5edUM+Pl5oVz5ge3JmYDFgbk5hSjZTdFpPMytudTJ3CnpYc21qXyRHTVJWam1CXjFKZT9X
MXd1SGVAN2tYcVh5OFpQczY0QHNfSXBwJVBoSlo8MkBlaERtLURUczB7dnRNIwp6KEdyaUc0clh1
U2QrK3g9Tm5+ZWxUa3NtYnRGKiZsO25CNi1rQUQjc2ZMS01wRnpOZDIpSlo7ek1Qbjcqel9ELU8K
eitYUjtPTl5SOURQS2R3RGszaDE5bV9udzhrPFRAT3I3aSY0R254ZkRkPmFhI2d2SXtEdGlQY0J3
azQoM1VYSm9ECnpvQHQrTDdxPjdDYj5lfHlMI1NCaipNP1U4eTlWdVFCPCl5R3RSOW5BSzEybiVT
VDJ8bTJpPEFHQ3xQN3RVUGdrPwp6anY3TXdoaG5PeTYjMmJIYmErKXVfJklFS09TcTNNQj48ISE0
X1ppMnZ7QnxfQ0NMdzgtb1d+e3BofXdxQyFrPzMKenRnSkc0eHxFd1prb0NmVkRTSGtUaUZOTnF2
MT9me0p0bHkkUFhxTio0YGNqI1QlN2U+SWxIRE1JUS08UHlHWSlICnp5Nyh6dEJESSs2SnxFTG0t
ZjNgKUxuPkpsRWZMZ3gjXjtgWj47NkRCQE9hWkV6fWU2b2ZaMW9DZ0FOTEN1TSZ2Sgp6aiZGZWl6
PyEtTUhOd1BHUyhsSFFwOWZmWWdWTDBkMEpDIy0zekleQkUwPGMmRkI2NzQzWGBQTTxeKmtVMGc4
I34KempoPEEyZlU3OH0+O1EzcExzc0g0R0JqKnt0TTRuNnY4Ul53OTs1WWpENTJrUkRyKXJMNyF2
KF5YUHdPZTQxY2wwCnpqNUk1VGJHaDY+aFo8d0BiSGwyTyNAYT5NOV9PbUdeKSVgcE57RldyQEwj
ZTA0Yys9OVNPWGVURDttUzRnV25FLQp6Zng/ZTRnZnNsY0lESksoVjthOSMhU0ZSOTR0Ujhwa0Zx
NiMpTEI9JXFqZ3IhcipHcTVaV3xWZmtjSURlX0xzWFgKejxLbXxWQFclV3pNdDlsYzxUWitKVXxv
fnc1V2Q0SW1qVWMjQlQ+JSRaVDB7SSpUfDUyYEpsSU0xanlfXzNSJDt8CnooPipzSkYhbXw2cnU/
KGR0PV82Tj0qR19CWl9fO257IWYjdGheZiUjcHRMSTBXM31eeTg9YmBYaC16NHNZRWY7IQp6T290
Yjd7aE1DWjJIfU05eXxpKXsyfl9QO0t4b3NkPH1wV0hPU2xSKXBlNyVCNSZMYlMlcUMoeDRZfEdr
I0pEKX4KemZKS0ZBU0xmajBgdzNwVEc5JjZYaF5eNj5scXl0UDkkcC0hWT1pSV9rQ2VkazdWR01Z
Uk8wdmo/Y2BIUGxhPHooCnoqXklPeFZZVUtQa25pWGdOTVZtZ2ZONGwkK19LWUpWODBYcVF0PClu
OHYreiUwWGg4Nzl3eSVhbkc7ODAoQFNNTQp6I31CbX40WVAlUiQhbXQ4I2l7bXFCSShlQDQhVFU8
P190byVqdFJ+fj5WQE95T1E8bDM2aHcmfSpgdlYkWVIkSCUKejsxNU45ZF5UTSkrRnk1bkhjX3Zq
WnxXYEZ1d2UyPVg5fm93eChuN2tGRHM1eW1xYz5hQnotNjlgJmt0LWBSTVNMCnpnM0t6clFwPDt8
cE03fDsxVXpYcykqeWg2Uj5aSn45Kj5SRFlrWl4hUjZAVTxxVXBSQVNoRkp6cGdCTlFEYElMVgp6
dEVBVlApXzQyXipAJWJYa24hT1NeTTE2TEwzM3RDTXEoTGVHNmlvNWlBOHdQO15YSTwlUHZnM2d4
RDs7SWN8Jm4KenZ4UkttX29iY15pPjVRWWRjenYkKH5ublpCK2ZsNF5fOX58UHZBPTVQNEt5MUtk
Q2p4ZFpgX2FRVTdwJGFUcjFBCnpKYmp2ZEokQWtkJCp7fWs5ayFafVdtNnN6eDxIcHM2VzE9clVn
dEh7N3wqZXlrQnsqdmc+c21MOFh2Pz1RUmxlcQp6VEVaVi09MiVRSW9eMXtBO0lgc2l3T3luM2Iw
U3VXYktwdk1tfU5CUGVyRnYoSn59amU9P0tMRCEpPVpsPFRrMy0Kel5VUCV2bVl5VnJFaUtPQnRz
bzB2QjR2SlZHRFg3a3NofDJkKlBBVUQrMEM5e0pXaChBJHRfVXplSzlrKmRzNT1fCnpsakQtemxh
N2NRTGRINkRaXmJ9cTZ0ViZCUS1RMkRNaT9rJjYwTEF5bW45JilmZjsmWnt5ZFZwSFNSOUdFMmg2
KQp6ZzhlKlhaXkZWU1lEcFhxN0wrKX5nQU1mIVJGeytETV5BQXRIST1NfTwwJnBOK21yPm1nNU1f
fmJEZnRZRUE5QU0KenNTaC1yOGhQUll6N28wejJVN1BfcXNYYGBLam8hPmpyd245anxrK2g1MEpZ
fGxue3FzRGhUJDtndkxDQyplWjM0CnpvJXZRTDMoVkp8VmU/YWlaNE58N29GanhpXnpLIz4tWD47
S2xvTFphQHdfZV5ReXJZbWlAYExaV35oTnw/UiZYdAp6cSttYSFaSWxFakhNTCp+djhhaE9IeXBR
Mi12TWY2MWFZVDc3K2tJWjh2aSg8cyswQVE+S2lrQj1kYWZVKXxYQ30KenVUNCtGUXRINSNDRVFG
RUVGbHIlaChkZm5IcVFCZGokPCt4WDd6RjRYV2pSXnBNKEo0XmBGeVVjM3hOe1NGZHQoCnpBfU4k
SFM4KnN3RDRBe2BBSl9RIU1jTF5Udl5VbjNfOyQrPFFLKGl6XypicVI0bz1BcDlVMlFBLXJgQ2te
ZDdqMwp6aEQ7cmRwYlVQUHJESCRnRyFqQGoxZ254YmMxd3FnRTI0bXlmRGJeJmViITF5MVZzKGJN
ajF0aVY+I2p6ZFpuYFkKelVMSH41JGxSc2Q9YUhsMllyKmJ5OFUza2M/KDUoLT1TYHktT2ghZDhE
dGBQJGV9VVd5MiNMI0BPRWNTMWxrNHU9CnpxYihZJU5FbzU/Vmk/fjgwUWdsaHooRG9XVXIyZXEt
T1NMcCZUQ1NGZSMqPXFpa2szPXhsZD1sJkEyUTFzaj4wWQp6b3ZST3ImKD80eFA+THNSRDd8OCtL
MHYrbndqeXhyc29+KnQ/NDQzR2RLUDF3SkdMKWlhJD12aXg0VmtGQDk/enQKeiUjU0tMWSRpYCho
eXtmfFFGITN7SU8pMEgjXytoNXREO000WFVofndBRGtRSihPZVA9Sj0xalVtV0VhKjhhJGJpCnpP
QGBwYjFSQ0V4RmhDdj1odVdSWEFTYSYjNnl4QWNjRCg/MSt5TCUwYihaczZ3NFhPbkgodzU2Sz5U
Zk0wQWxKSQp6IXU5ejRRcHMqQVN1JD9PaCZRZTJ5JlBaJGcxV1lYQEM9KHpULSptNEpNTEJkQ0N5
Ulo5OTl7dnNmbERCRm5HZm8KelV9aUwhRVBpQlVYaiY7WmtoNyNuJHx8d1VzYXRsNXJCZysma2NH
KSZUbm9kU2NTcDFKITMxfXo8cDVyVG1BZlV0Cno0NlllQEhMQ3pVVGFpX09XeGl7aXVPJjM8JjFk
Vis+TjdgfChrJjlFaGRzIU50ZHMtQT41SmBsKjIpfTtpdFArMAp6RTR6O1E/czdwIUpHKldANj1X
MHE4T21kaDY3WTI4TXApRzZRPWtPS2RSIXxPeVRsdE0jTEhuS01uNTVjM1M7SkcKemRDdXNnUWYx
ZiVmbGowQXI4UjN1SWFISEgyWEt1QDZ7KDZWIXFwSjt2cl4wfiF7ZWVwcmpGIT9YWER6UnlDNzl9
Cnpuc2p9PzkzRzBRZU89RGNBSHQ7RW81NG9Ldnk/cSU/fXYhRC1BI0REMEE8U3JBZzwqNDQpXihf
bUB6c0w/QyVEaAp6R3I8ODlmaTxSUXN0Xl5XcDV1OUtQbnc1TylyYS07OF82OT9hYzBRUkVZbGVu
eF8zVXgjZm1oKT91MCVFYGB2blMKekJuMiZBZyRQMnRBbUdgSS1RI3loPEhTamJ7U0UkWTF8WExh
VXQwMGJuTDBnWEgqaUg/cnl8ZSs0M0I4ZDR2d210CnpDOGN4b0klelZFVylhJVY4cE5vP0I3SEhX
ZyE+MlB1fSF4e3p+QHRAYkwqcC1lYS16Vys0NTxHWSZkVUp1ODx3Ywp6Y3kxeHIlRyp5JVNGJG93
K180PylJZ2F1TUVsdElzbGB9flBiT0ktfml2PlhxOCkkVjImOFRXeC1UbVZnaChnVE4KemlBOyp9
MUcxNWI+VXhqaWpNcTFPSzJ7NiVBO2JORXU2c05QPE1WR2RiMzFVPWN8WkNpcE1Fdig+KzlVV2Rx
P05nCnptSSl7PGYmdU98bkRnfjIwIXppQjNZbXYzWkptfVlWLWdyOGxGUCRRK0QzRW5fTngtUDxy
TFhHRktiT3M9fEZnXwp6TmZnRWtecm5LSHMpUXl4MWU0ZUk0eXFvZCRtQ2dKSUc3P0J7VjQ4STJQ
dC17cXE3ZEBZTkt3K3U5fDtjMWYhZkIKekVAKVJuUFA9LUJWaDU7PmNEKE9zNE19ekd3MGZldFdv
PzlJNnZvU3JIYD5XVWF6M1VNIVFgRzM7K05wIzg0aF5QCnpIIXwqRzJQUyV+OzlgZSoxRk5oRWhS
RVg7Y2gqcX5jKk1AU00ybEg0dHVIWEdLcUBhVGlaQHNVbGxAdWomazBXPwp6eSh4ZE5uWGlIU0NC
O20rPlh+e0VhTlBqO0QjT0lgNkhJNDIyRVNHWko2TF5lWiglNmRtP0ApUykyVUtiV0JOTkQKekdA
NE5LWXh8LWAqfkJSYCZCZ3ZMeSN1Y2B6cEk3JFo+KlZVWCg4MHJ6X1o4UnFTUjllR1A1Tm1eKGFK
cGV5eVlMCno+Ml9sfFl4eV97IS1Zc0FHaTcyMyhzc242UTY2MTMtKlNxMkkje2x9aiVfYTJ6IyZh
USV9QWZRSG42RkhrSS17UQp6QmNDb0g5JXpuVkE+QnV8Nj48KS1RJXIzUjlZTlZfMWQ3SCooSiZW
ZyhGTnN+Kyp1OzBAZWpScGgzR2JgQERTKT8KejBZcCNpXnkkOz93ek1vNE1SUGM8ZXp0WEstWjgw
WkwzQn5eREojWjt1WTs0QzZhaV5eQjhtRCRmRGNieSFOTW1DCnp2YnpQQXlweGtlJldsQ29AOD9H
IUk4N24qZXt6XiM8eDZIcmc2cHspekF6TDlfJk8+M3d6YmJYamxZO0kxREspOwp6bz4zNGUyJk8t
N0FzXmNYTmxpIzw+ZXk4UFc3MlkqT2I0NlpeKmNoT141WmE2U21fMFA4c25VOUd6TWw8a1NwYTIK
endUJXduNyE2dWpueGVoVShyKHRYLTIyUCklLXcqKi1FZF41X0E8R1hIdnhDe0VVanw+XyhkeHZO
I3kyNjliPisjCnotQDIoVk5ueT5XLX1zPkgxa0MtMWp0TD9FSDMtPEZqIyg5ek14TTM7RX5TSWJa
IVhqeGdqbGFfQE1ZY3w/U2NpVAp6cHlJR3Aqa0hZNFk9bGhQYXgkTV45V0FsaD19LXh1Kmx6WTw7
Y2FWK2IoU0FsSnRYZjJLMGckK3BPM1ErNVh5QiUKem8pP3liMGhTZE9gLWhKNFlxdShiRUN4LXco
KzBkQUlGU3hYJGZifEUpOTY3RlNlaXhgdGpudiYzOTRoSy0xaSFvCnpZYENRX09TOXxwMEFFKEM2
JGxJKTNMKEhuQUw0cEtvMWVwZTdsOWpfTkx3bDJTOSNoQVZFJXlie3Z4b1heNWU/Wgp6RyRsQX1T
TzZ9NjNvUTY5Snx2PWhmJChaYSMwdzRea2JvM0srVn18R2FNbDhPYDByKlZAMHokc1I/NHtLZCMr
UXcKejJ6RTRWSjNLdHRFQUZgJj15fU5La3xVQkhlIT9tSmd+MDhYWWZ0T3JuUmJ1V2VLbDNCQ20p
USs9eGtBMl9WYjx4CnpQXmtgdkdMXlAweUlJS3NLQ353eyZYSTVKZGNESGBeTXxVNEh6WTxwdWFq
MHwrU3xlfWwxRVoqPClyfnsjR24hNgp6eVd5IUNvRUhlQUN7VUModiFeNWxQZlJxTHQoTzJZSGF8
QlY2R3x5ZlhDfn4lRjklWWs0M01qPj88WlJMPmd3UUsKekFoSVc4aTJRTC1sTHJ1dXNfRDNNZD16
ZDBXNHdkejxRbCYySCpeT3krMCNZZTJnfVRFM0lhNlF0dmpgMHtJam5nCnoyZkN6UXFjUl8xITs9
OFFMQm5CUXtJZGZBaFd4dXA7N1IwUU5VXmwlY245JWw3P1BmKnBHVmtXVF5rWXNgWjN8eQp6TCtj
fVZLSXhlaXBJRjJpI0RZQTtmQDV0RmhTOStiRyNPRyN7RnBmKTk+JHVeLX5NUz5DMCo9LVR9TD5f
TSo4UFAKens2fXtOaXZVQDtkKjVEeFdPZjcjS2VfcUhoUl4yQktyKmtwN19eNlA+MlY7THc+JFR5
RVc3KylKMGBqTCtiMHk9CnpvTypTQWx+dU47OW4jdGEkQEZHTXk1P0pOaCRTNUBKKFN2IVg5M2ZO
R3NlR0c3czA1dzA9Y34wKyszLT0rPTJ7Sgp6R3QlRkdCT0Y3XkNTXz9lRV4zSEdVaW9RVzx7cUZM
Sjczci1Gb31AX3MmVDNVZVZPbEl0KmJ5YS1uPSFDVXljOUoKekRvaUBJdVM9RitqYyk/IWBWU3By
aDQ9aUhne3o0QzdGQDk4SHJfZitlQDdWWiNXKTMrb2t7JW1mKj57I1hCNVJhCnpVPzZRVFZLO3Eq
PGBGbVVKc0lsK3goSiReZHE+RD93T2pCVz8tKyo2YCt1QSNZZUo7ayo/WXo+RzNhKUlXMCFvcAp6
SH50RCp2TmJURmRVeHhOR29PQD8wOCNuTD5DQUdFNSpDUjg7JWFeSnt4OE09Xm9SeE1rI0pHem15
Vk95JTUoeiUKelFeJERCOUhQbmpGMV9meTJ9dkJRYilZS1k4ViVyIzV+bn5zZGVEQTY3SUxPKSVt
ek1VUSM2az9WZ1VvVlpadCpKCno1XnV7MnJTKzk3UGV8dSs3QygwdiE4Q0wyKUdYT352aj1IP0tW
KTd7eilZJnxYRmR1aDAxRDNRQDlnSElGYSk0NQp6OWVpZmhGUTl9KSZIXlp5OU5yKiswdW4kV0Bz
ZzxrM1ZYci0pRzxGc285YFBoJD8pP317O2dLT2RaelRZYCZzO2EKelRNSU8lZVZJSzE3VlFTJmw2
aTlqLSFYLT9aczJSOFhKejx+WjIlbHdJcHpvN1NGcXRyKWZMfFNVRTt3aklyWGROCnp0UTNsMGg0
cF8/RDlHY0tFK0hZTXY+JCY5dXVfKStFd1BlY0VCVXEzWSp3MWhpWW9tfWw0cV9jX01jYWltQ21w
ewp6V0xReU57e2BpPnFQQUFsKjI+c0pZbyk+YjhmfnNMbjNWPnpxUEFBbCoyK05xP34xdDY4Q0Uq
TyVDfCRtejg/UG4KZShpIUZ3azFhfUB1R3VfUTJtQS05a2g5flZKcih3VDd5Ym5wWXVAWXQKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVy
cy9lZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9l
ZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xNjNiNGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJz
L2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKyAgICAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtY3VzdG9tLmh0bWwgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmZiMTRlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
c3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxpbWcgc3R5bGU9Ii13ZWJr
aXQtZmlsdGVyOiBjdXN0b20odXJsKCdyZXNvdXJjZXMvdmVydGV4LW9mZnNldC52cycpIHVybCgn
cmVzb3VyY2VzL2NvbG9yLW9mZnNldC5mcycpKSIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBu
ZyI+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgncmVzb3VyY2VzL3Zl
cnRleC1vZmZzZXQudnMnKSwgNSAxMCkiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgor
PGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJ3Jlc291cmNlcy92ZXJ0ZXgt
ZXhwbG9kZS1kZXRhY2hlZC52cycpLCAyIDIgZGV0YWNoZWQpIiBzcmM9InJlc291cmNlcy9yZWZl
cmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCdyZXNv
dXJjZXMvdmVydGV4LWV4cGxvZGUtZGV0YWNoZWQudnMnKSB1cmwoJ3Jlc291cmNlcy9jb2xvci1v
ZmZzZXQuZnMnKSwgMiAyIGRldGFjaGVkKSIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+
Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogY3VzdG9tKG5vbmUgdXJsKCdyZXNvdXJjZXMv
Y29sb3Itb2Zmc2V0LmZzJykpIiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY29sb3Itb2Zmc2V0LmZz
IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9jb2xvci1vZmZzZXQuZnMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJkMDczNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY29sb3Itb2Zmc2V0LmZzCkBA
IC0wLDAgKzEsNyBAQAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2YXJ5aW5nIHZlYzIgdl90
ZXhDb29yZDsKK3VuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKK3ZvaWQgbWFpbigpCit7Cisg
ICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCkgKyAwLjM7
Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtZXhwbG9kZS1kZXRhY2hlZC52cyBiL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4LWV4cGxvZGUtZGV0YWNoZWQudnMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc2OGEzYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4LWV4cGxvZGUt
ZGV0YWNoZWQudnMKQEAgLTAsMCArMSwxNCBAQAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
K2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247CithdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOwor
YXR0cmlidXRlIHZlYzMgYV90cmlhbmdsZUNvb3JkOworCit1bmlmb3JtIG1hdDQgdV9wcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7Cisg
ICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiAoYV9wb3NpdGlvbiArIHZlYzQo
YV90cmlhbmdsZUNvb3JkLnggLyA0LjAsIGFfdHJpYW5nbGVDb29yZC55IC8gNC4wLCAwLjAsIDAu
MCkpOworICAgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzIGIvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZDhjNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3ZlcnRleC1vZmZzZXQudnMKQEAgLTAsMCArMSwx
MyBAQAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRp
b247CithdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworCit1bmlmb3JtIG1hdDQgdV9wcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7Cisg
ICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiAoYV9wb3NpdGlvbiArIHZlYzQo
MC4xLCAwLjAsIDAuMCwgMC4wKSk7CisgICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IDFjMWY3MjcuLmViYjYzZGMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9Ta2lwcGVkCkBAIC0xODksNiArMTg5LDcgQEAgY29tcG9zaXRpbmcvdmlkZW8tcGFn
ZS12aXNpYmlsaXR5Lmh0bWwKIAogIyBXZWJLaXQyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVy
Lm92ZXJyaWRlUHJlZmVyZW5jZQogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyMTk3PgorY3NzMy9maWx0ZXJzL2N1c3RvbS1maWx0ZXIuaHRtbAogZmFzdC9jYW52
YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbAogZmFzdC9jYW52YXMv
d2ViZ2wvZ2wtdmVydGV4LWF0dHJpYi16ZXJvLWlzc3Vlcy5odG1sCiBmYXN0L2V2ZW50cy9wYWdl
aGlkZS10aW1lb3V0Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdkM2M1OC4uNWYyNGZm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMTEsMTIgKzExMTEsMTUgQEAgU0VUKFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKIAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclNoYWRlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rp
c3RhbnRMaWdodFNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxl
bmQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RHJvcFNoYWRvdy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNTIzMGIxLi5kYTdiNmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsOTUgQEAKKzIwMTEtMTItMTYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hp
Y3VAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hhZGVyc10gQWRkIEZFQ3VzdG9tRmlsdGVy
IHRoYXQgcmVuZGVycyBjdXN0b20gZmlsdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTcKKworICAgICAgICBVc2luZyBhIEdyYXBoaWNzQ29u
dGV4dDNEIHRvIHJlbmRlciB0aGUgc2hhZGVycyBpbiBHUFUsIHJlYWQgdGhlCisgICAgICAgIHJl
c3VsdCBiYWNrIGFuZCB1c2UgaXQgaW4gdGhlIHNvZnR3YXJlIGZpbHRlcnMgcGlwZWxpbmUuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY3Nz
My9maWx0ZXJzL2VmZmVjdC1jdXN0b20uaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRTaGFkZXI6OkNhY2hlZFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRT
aGFkZXI6OnNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTaGFkZXI6OmRh
dGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6Ok1lc2hHZW5lcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6dmVydGljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVz
aEdlbmVyYXRvcjo6aW5kaWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjpw
b2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6cG9pbnRzQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6dGlsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzaEdlbmVyYXRvcjo6dGlsZXNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2Vu
ZXJhdG9yOjppbmRpY2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6
ZmxvYXRzUGVyVmVydGV4KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6OnZlcnRl
eENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6OmFkZFRpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRNZXNoSW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6Z2VuZXJhdGVBdHRhY2hlZE1lc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNoVmVydGV4QW5kSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6Z2VuZXJhdGVEZXRhY2hlZE1l
c2gpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkUG9zaXRpb25BdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkVGV4Q29vcmRBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkTWVzaENvb3JkQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6OmFkZFRyaWFuZ2xlQ29vcmRB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRN
ZXNoVmVydGV4QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjph
ZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hH
ZW5lcmF0b3I6OmR1bXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1l
c2g6OkN1c3RvbUZpbHRlck1lc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVz
aDo6fkN1c3RvbUZpbHRlck1lc2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyTWVzaC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZp
bHRlck1lc2g6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjp2
ZXJ0aWNlc0J1ZmZlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNo
OjpieXRlc1BlclZlcnRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjpl
bGVtZW50c0J1ZmZlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNo
OjppbmRpY2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6bWVz
aEJveCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjptZXNoVHlwZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6ZGVmYXVsdFZl
cnRleFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJTaGFkZXI6
OmRlZmF1bHRGcmFnbWVudFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21G
aWx0ZXJTaGFkZXI6OkN1c3RvbUZpbHRlclNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0
b21GaWx0ZXJTaGFkZXI6On5DdXN0b21GaWx0ZXJTaGFkZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmg6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Om9ydGhvTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9t
RmlsdGVyOjpGRUN1c3RvbUZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmR1bXApOgor
ICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvQ29sdW1uTWFq
b3JGbG9hdEFycmF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdE9i
c2VydmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
aGFkZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0T2JzZXJ2ZXI6On5GaWx0
ZXJFZmZlY3RPYnNlcnZlcik6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzV2ViR0xFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0
ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmZpbHRlck5lZWRzUmVw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUNhY2hlZFNoYWRlcjo6Y2FjaGVkU2hhZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVTaGFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZGVyOjpjYWNoZWRTaGFk
ZXIpOgorCiAyMDExLTEyLTE2ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4K
IAogICAgICAgICBBdWRpbyBmaWxlIGluIHZpZGVvIGVsZW1lbnQgaGFzIGEgc2l6ZSBvZiAweDAg
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggODY2Y2Q2ZC4uODRjMDNkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNTM5LDYgKzI1MzksMTAgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9S
ZWZQdHJDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1JlZlB0ckNhaXJvLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clNoYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rp
c3RhbnRMaWdodFNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgXApAQCAtMjU1MSw2ICsyNTU1LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdo
dGluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlz
cGxhY2VtZW50TWFwLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAyOWMzMDg4Li5lMGE4OTM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKQEAgLTIwODAsMTEgKzIwODAsMTQgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
aCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCBcCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmggXAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvbmVudFRyYW5zZmVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0
cml4LmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmggXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmggXApAQCAtMzIzOCwxMiArMzI0
MSwxNSBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWFNMVD0xKSB7CiAKIGNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9GSUxURVJTPTEpIHsKICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCBcCisgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBcCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcCBcCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBcCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBcCisgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBcCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggMjliNjFiMS4uNGYyNzhlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzY2OCw2ICszNjY4
LDEwIEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlRWZsLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ludFBvaW50RWZsLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ludFJlY3RFZmwuY3BwJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2gu
aCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJT
aGFkZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclNoYWRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAnLApAQCAtMzY4MCw2ICszNjg0LDggQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVy
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZp
bHRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVz
ZUxpZ2h0aW5nLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpZmZ1c2VMaWdodGluZy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGJhZDUzNjQuLmMwZmVlMTIgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTYxNiw2ICsyOTYxNiwy
MiBAQAogCQkJCQlOYW1lPSJmaWx0ZXJzIgogCQkJCQk+CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcQ3VzdG9tRmlsdGVyTWVzaC5j
cHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJNZXNoLmgiCisJCQkJ
CQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIgorCQkJCQkJPgor
CQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXGZpbHRlcnNcQ3VzdG9tRmlsdGVyU2hhZGVyLmgiCisJCQkJCQk+CisJCQkJCTwv
RmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcZmlsdGVyc1xEaXN0YW50TGlnaHRTb3VyY2UuY3BwIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+
CkBAIC0yOTY3Miw2ICsyOTY4OCwxNCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxG
aWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcRkVD
dXN0b21GaWx0ZXIuY3BwIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcRkVDdXN0b21GaWx0
ZXIuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEZFRGlmZnVzZUxpZ2h0aW5nLmNwcCIK
IAkJCQkJCT4KIAkJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhmZDk0ZWYuLjdjMTBkMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzOTMs
NiArMTM5MywxMyBAQAogCQk1MDM4QkYyODE0NzUwRjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MDM4QkYyNDE0NzUwRjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTA4Q0NBNEYx
M0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBS
ZW5kZXJGbG93VGhyZWFkLmggKi87IH07CiAJCTUwOENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBS
ZW5kZXJGbG93VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUwOENDQTRFMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNw
cCAqLzsgfTsKKwkJNTBENDAzQzcxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwM0M1
MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5jcHAgKi87IH07CisJCTUwRDQwM0M4
MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDAzQzYxNDc2OEM5NDAwRDMwQkI1IC8qIEZF
Q3VzdG9tRmlsdGVyLmggKi87IH07CisJCTUwRDQwNUY5MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0
b21GaWx0ZXJNZXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwRDQwNUY3MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmNwcCAq
LzsgfTsKKwkJNTBENDA1RkExNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNUY4MTQ3
RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi87IH07CisJCTUwRDQwNjExMTQ3
RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8q
IEN1c3RvbUZpbHRlclNoYWRlci5jcHAgKi87IH07CisJCTUwRDQwNjEyMTQ3RDQ5REUwMEQzMEJC
NSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJT
aGFkZXIuaCAqLzsgfTsKKwkJNTBENDA2N0QxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVj
dE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MEU1NjZENjEz
OUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFCMTEzOTUxMTRCMDBGN0FDRUIgLyogQ1NT
V3JhcFNoYXBlcy5jcHAgKi87IH07CiAJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNo
ZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDE4NDZBMEIwODYwMkEwMDRBODI1
RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLzsg
fTsKQEAgLTg2MzMsNiArODY0MCwxMyBAQAogCQk1MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyog
UmVuZGVyRmxvd1RocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJGbG93VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwOENDQTRFMTND
RjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MEI0MjE1NzE0Njk3Njk2MDA4N0U2MDQgLyogV2ViS2l0Q1NTU2hhZGVy
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NTU2hhZGVy
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDAzQzUxNDc2OEM5NDAw
RDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEZFQ3VzdG9tRmlsdGVyLmNwcDsgcGF0aCA9IGZpbHRlcnMvRkVDdXN0b21GaWx0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0MDNDNjE0NzY4Qzk0MDBE
MzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gRkVDdXN0b21GaWx0ZXIuaDsgcGF0aCA9IGZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDA1RjcxNDdEMzFGMzAwRDMwQkI1IC8qIEN1
c3RvbUZpbHRlck1lc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
Q3VzdG9tRmlsdGVyTWVzaC5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0MDVGODE0N0QzMUYzMDBEMzBCQjUg
LyogQ3VzdG9tRmlsdGVyTWVzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBD
dXN0b21GaWx0ZXJNZXNoLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8qIEN1
c3RvbUZpbHRlclNoYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0MDYxMDE0N0Q0OURFMDBE
MzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEN1c3RvbUZpbHRlclNoYWRlci5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJT
aGFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDA2N0MxNDdFNDBEODAw
RDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZpbHRlckVmZmVjdE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1FcnJvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3NzI1LDYgKzE3NzM5LDEyIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0OUVDRUI1QzE0
OTk3OTBEMDBDREQzQTQgLyogYXJtICovLAogCQkJCTE5ODQxQkZBMTM2ODM2QTEwMDZFQkJCOSAv
KiBhcm0gKi8sCisJCQkJNTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNo
YWRlci5jcHAgKi8sCisJCQkJNTBENDA2MTAxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRl
clNoYWRlci5oICovLAorCQkJCTUwRDQwNUY3MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0
ZXJNZXNoLmNwcCAqLywKKwkJCQk1MEQ0MDVGODE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmls
dGVyTWVzaC5oICovLAorCQkJCTUwRDQwM0M1MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZp
bHRlci5jcHAgKi8sCisJCQkJNTBENDAzQzYxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmls
dGVyLmggKi8sCiAJCQkJQTFFMTE1NDMxMzAxNUMzRDAwNTRBQzhDIC8qIERpc3RhbnRMaWdodFNv
dXJjZS5jcHAgKi8sCiAJCQkJODQ3MzBENUExMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdo
dFNvdXJjZS5oICovLAogCQkJCUE3NUU4QjgwMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNw
cCAqLywKQEAgLTIwOTQyLDYgKzIwOTYyLDcgQEAKIAkJRjUyM0QyRjMwMkRFNDQzQjAxODYzNUNB
IC8qIHJlbmRlcmluZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNTBENDA2N0MxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmgg
Ki8sCiAJCQkJNDM5MDQ2QzIxMkRBMjVDRTAwQUY4MEEyIC8qIG1hdGhtbCAqLywKIAkJCQlCQzhD
OEZBQTBERENEMkYyMDBCNTkyRjQgLyogc3R5bGUgKi8sCiAJCQkJMDg4QzJGNzQxMjM5MDA4MDAw
M0Q2NUNFIC8qIHN2ZyAqLywKQEAgLTI0ODY2LDYgKzI0ODg3LDEwIEBACiAJCQkJQTEwREM3NkIx
NDc0N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
MkMwQzQxMTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxMjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MEQ0MDNDODE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21G
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUwRDQwNUZBMTQ3RDMxRjMwMEQzMEJCNSAvKiBD
dXN0b21GaWx0ZXJNZXNoLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEQ0MDYxMjE0N0Q0OURFMDBE
MzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEQ0MDY3
RDE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdBQTUxREQ2MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTAzOEJGMjgxNDc1MEYxOTAwOTVFMEQxIC8qIEN1c3RvbUZp
bHRlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkUzRkFEMzkxNDczM0Y0MDAwRTQy
MzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3
NTYsNiArMjc3ODEsOSBAQAogCQkJCTdBQTUxQjZGMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNwZWN0
b3JCYXNlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwREM3NkExNDc0N0JBQjAwNUUy
NDcxIC8qIFN0eWxlR3JpZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyOENBNjgxNDcz
MzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTBENDAzQzcxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUwRDQwNUY5MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJN
ZXNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUwRDQwNjExMTQ3RDQ5REUwMEQzMEJCNSAvKiBD
dXN0b21GaWx0ZXJTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBNTFERDUxNDg1MDZB
OTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTZFM0ZBRDM4MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTA3RTExNkIxMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRU
cmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNoYWRlci5jcHAKaW5kZXggMWQ4ZjU0MC4uMTNiZGExZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKQEAgLTMyLDExICszMiwxNCBA
QAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKIAogI2luY2x1ZGUgIkNhY2hlZFNoYWRlci5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYWNoZWRTaGFkZXI6OkNhY2hlZFNoYWRlcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKICAgICA6IENhY2hlZFJlc291
cmNlKHJlc291cmNlUmVxdWVzdCwgU2hhZGVyUmVzb3VyY2UpCisgICAgLCBtX2RlY29kZXIoVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi9zaGFkZXIiKSkKIHsKIH0KIApA
QCAtNDQsNiArNDcsMjQgQEAgQ2FjaGVkU2hhZGVyOjp+Q2FjaGVkU2hhZGVyKCkKIHsKIH0KIAor
Y29uc3QgU3RyaW5nJiBDYWNoZWRTaGFkZXI6OnNoYWRlclN0cmluZygpCit7CisgICAgaWYgKCFt
X3NoYWRlclN0cmluZyAmJiBtX2RhdGEpIHsKKyAgICAgICAgbV9zaGFkZXJTdHJpbmcgPSBtX2Rl
Y29kZXItPmRlY29kZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICBt
X3NoYWRlclN0cmluZyArPSBtX2RlY29kZXItPmZsdXNoKCk7CisgICAgfQorCisgICAgcmV0dXJu
IG1fc2hhZGVyU3RyaW5nOworfQorCit2b2lkIENhY2hlZFNoYWRlcjo6ZGF0YShQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKGFs
bERhdGFSZWNlaXZlZCkKKyAgICAgICAgbV9kYXRhID0gZGF0YTsKKworICAgIENhY2hlZFJlc291
cmNlOjpkYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaAppbmRleCA4ZGVhZDAxLi5jYzM4ZjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCkBAIC0zNiwxMCArMzYsMTkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwor
CiBjbGFzcyBDYWNoZWRTaGFkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogcHVibGljOgog
ICAgIENhY2hlZFNoYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIH5D
YWNoZWRTaGFkZXIoKTsKKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIHNoYWRlclN0cmluZygpOwor
ICAgIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKKyAgICAKK3ByaXZhdGU6CisgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1f
ZGVjb2RlcjsKKyAgICBTdHJpbmcgbV9zaGFkZXJTdHJpbmc7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1l
c2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJNZXNoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjI4YWU3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcApAQCAtMCwwICsxLDI0OSBAQAorLyoKKyAqIENvcHly
aWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkN1c3RvbUZpbHRlck1lc2guaCIK
KworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisKKyNkZWZpbmUgREVCVUdfQ1VTVE9N
X0ZJTFRFUl9NRVNIIDAKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXNoR2VuZXJh
dG9yIHsKK3B1YmxpYzoKKyAgICBNZXNoR2VuZXJhdG9yKHVuc2lnbmVkIGNvbHMsIHVuc2lnbmVk
IHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpN
ZXNoVHlwZSBtZXNoVHlwZSkKKyAgICAgICAgOiBtX21lc2hUeXBlKG1lc2hUeXBlKQorICAgICAg
ICAsIG1fcG9pbnRzKGNvbHMgKyAyLCByb3dzICsgMikKKyAgICAgICAgLCBtX3RpbGVzKGNvbHMg
KyAxLCByb3dzICsgMSkKKyAgICAgICAgLCBtX3RpbGVTaXplSW5QaXhlbHMobWVzaEJveC53aWR0
aCgpIC8gbV90aWxlcy53aWR0aCgpLCBtZXNoQm94LmhlaWdodCgpIC8gbV90aWxlcy5oZWlnaHQo
KSkKKyAgICAgICAgLCBtX3RpbGVTaXplSW5EZXZpY2VTcGFjZSgxLjBmIC8gbV90aWxlcy53aWR0
aCgpLCAxLjBmIC8gbV90aWxlcy5oZWlnaHQoKSkKKyAgICAgICAgLCBtX21lc2hCb3gobWVzaEJv
eCkKKyAgICB7CisgICAgICAgIG1fdmVydGljZXMucmVzZXJ2ZUNhcGFjaXR5KHZlcnRleENvdW50
KCkgKiBmbG9hdHNQZXJWZXJ0ZXgoKSk7CisgICAgICAgIG1faW5kaWNlcy5yZXNlcnZlQ2FwYWNp
dHkoaW5kaWNlc0NvdW50KCkpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fbWVzaFR5cGUgPT0g
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCkKKyAgICAgICAgICAgIGdlbmVyYXRlQXR0
YWNoZWRNZXNoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRlRGV0YWNoZWRN
ZXNoKCk7CisKKyNpZiBERUJVR19DVVNUT01fRklMVEVSX01FU0gKKyAgICAgICAgZHVtcEJ1ZmZl
cnMoKTsKKyNlbmRpZgorICAgIH0KKworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2Vz
KCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNlczsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50MTZf
dD4mIGluZGljZXMoKSBjb25zdCB7IHJldHVybiBtX2luZGljZXM7IH0KKworICAgIGNvbnN0IElu
dFNpemUmIHBvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzOyB9CisgICAgdW5zaWduZWQg
cG9pbnRzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BvaW50cy53aWR0aCgpICogbV9wb2ludHMu
aGVpZ2h0KCk7IH0KKyAgICAKKyAgICBjb25zdCBJbnRTaXplJiB0aWxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fdGlsZXM7IH0KKyAgICB1bnNpZ25lZCB0aWxlc0NvdW50KCkgY29uc3QgeyByZXR1cm4g
bV90aWxlcy53aWR0aCgpICogbV90aWxlcy5oZWlnaHQoKTsgfQorICAgIAorICAgIHVuc2lnbmVk
IGluZGljZXNDb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdCB1bnNpZ25lZCB0cmlh
bmdsZXNQZXJUaWxlID0gMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW5kaWNlc1BlclRyaWFu
Z2xlID0gMzsKKyAgICAgICAgcmV0dXJuIHRpbGVzQ291bnQoKSAqIHRyaWFuZ2xlc1BlclRpbGUg
KiBpbmRpY2VzUGVyVHJpYW5nbGU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGZsb2F0c1Bl
clZlcnRleCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9tZXNoVHlwZSA9PSBDdXN0
b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEID8gQXR0YWNoZWRNZXNoVmVydGV4U2l6ZSA6IERl
dGFjaGVkTWVzaFZlcnRleFNpemU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIHZlcnRleENv
dW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX21lc2hUeXBlID09IEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6QVRUQUNIRUQgPyBwb2ludHNDb3VudCgpIDogaW5kaWNlc0NvdW50KCk7
CisgICAgfQorCitwcml2YXRlOgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEF0dGFjaGVk
TWVzaFZlcnRleFNpemUgPSA0ICsgLy8gdmVjNCBhX3Bvc2l0aW9uCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICsgLy8gdmVjMiBhX3RleENvb3Jk
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOyAg
Ly8gdmVjMiBhX21lc2hDb29yZAorICAgIAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBEZXRh
Y2hlZE1lc2hWZXJ0ZXhTaXplID0gQXR0YWNoZWRNZXNoVmVydGV4U2l6ZSArCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOyAvLyB2ZWMzIGFfdHJp
YW5nbGVDb29yZAorICAgIAorICAgIHR5cGVkZWYgdm9pZCAoTWVzaEdlbmVyYXRvcjo6KkFkZFRy
aWFuZ2xlVmVydGV4RnVuY3Rpb24pKGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVY
LCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOworICAgIAorICAgIHRlbXBsYXRlIDxBZGRU
cmlhbmdsZVZlcnRleEZ1bmN0aW9uIGFkZFRyaWFuZ2xlVmVydGV4PgorICAgIHZvaWQgYWRkVGls
ZShpbnQgcXVhZFgsIGludCBxdWFkWSkKKyAgICB7CisgICAgICAgICgoKnRoaXMpLiooYWRkVHJp
YW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDAsIDAsIDEpOworICAgICAgICAoKCp0aGlzKS4q
KGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAxLCAwLCAyKTsKKyAgICAgICAgKCgq
dGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMSwgMSwgMyk7CisgICAg
ICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDAsIDAsIDQp
OworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAx
LCAxLCA1KTsKKyAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBx
dWFkWSwgMCwgMSwgNik7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkQXR0YWNoZWRNZXNoSW5k
ZXgoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGlu
dCB0cmlhbmdsZSkKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSh0cmlhbmdsZSk7CisgICAg
ICAgIG1faW5kaWNlcy5hcHBlbmQoKHF1YWRZICsgdHJpYW5nbGVZKSAqIG1fcG9pbnRzLndpZHRo
KCkgKyAocXVhZFggKyB0cmlhbmdsZVgpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBnZW5lcmF0
ZUF0dGFjaGVkTWVzaCgpCisgICAgeworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fcG9p
bnRzLmhlaWdodCgpOyArK2opIAorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3Bv
aW50cy53aWR0aCgpOyArK2kpCisgICAgICAgICAgICAgICAgYWRkQXR0YWNoZWRNZXNoVmVydGV4
QXR0cmlidXRlcyhpLCBqKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwg
bV90aWxlcy5oZWlnaHQoKTsgKytqKQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBt
X3RpbGVzLndpZHRoKCk7ICsraSkKKyAgICAgICAgICAgICAgICBhZGRUaWxlPCZNZXNoR2VuZXJh
dG9yOjphZGRBdHRhY2hlZE1lc2hJbmRleD4oaSwgaik7CisgICAgfQorICAgIAorICAgIHZvaWQg
YWRkRGV0YWNoZWRNZXNoVmVydGV4QW5kSW5kZXgoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0
cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSkKKyAgICB7CisgICAgICAgIGFk
ZERldGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMocXVhZFgsIHF1YWRZLCB0cmlhbmdsZVgsIHRy
aWFuZ2xlWSwgdHJpYW5nbGUpOworICAgICAgICBtX2luZGljZXMuYXBwZW5kKG1faW5kaWNlcy5z
aXplKCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGdlbmVyYXRlRGV0YWNoZWRNZXNoKCkKKyAg
ICB7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV90aWxlcy5oZWlnaHQoKTsgKytqKQor
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3RpbGVzLndpZHRoKCk7ICsraSkKKyAg
ICAgICAgICAgICAgICBhZGRUaWxlPCZNZXNoR2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0
ZXhBbmRJbmRleD4oaSwgaik7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkUG9zaXRpb25BdHRy
aWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCisgICAgeworICAgICAgICAvLyB2ZWM0IGFfcG9z
aXRpb24KKyAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLndpZHRo
KCkgKiBxdWFkWCAtIDAuNWYgKyBtX21lc2hCb3gueCgpKTsKKyAgICAgICAgbV92ZXJ0aWNlcy5h
cHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLmhlaWdodCgpICogcXVhZFkgLSAwLjVmICsgbV9tZXNo
Qm94LnkoKSk7CisgICAgICAgIG1fdmVydGljZXMuYXBwZW5kKDAuMGYpOyAvLyB6CisgICAgICAg
IG1fdmVydGljZXMuYXBwZW5kKDEuMGYpOworICAgIH0KKworICAgIHZvaWQgYWRkVGV4Q29vcmRB
dHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCisgICAgeworICAgICAgICAvLyB2ZWMyIGFf
dGV4Q29vcmQKKyAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLndp
ZHRoKCkgKiBxdWFkWCArIG1fbWVzaEJveC54KCkpOworICAgICAgICBtX3ZlcnRpY2VzLmFwcGVu
ZChtX3RpbGVTaXplSW5QaXhlbHMuaGVpZ2h0KCkgKiBxdWFkWSArIG1fbWVzaEJveC55KCkpOwor
ICAgIH0KKworICAgIHZvaWQgYWRkTWVzaENvb3JkQXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1
YWRZKQorICAgIHsKKyAgICAgICAgLy8gdmVjMiBhX21lc2hDb29yZAorICAgICAgICBtX3ZlcnRp
Y2VzLmFwcGVuZChtX3RpbGVTaXplSW5EZXZpY2VTcGFjZS53aWR0aCgpICogcXVhZFgpOworICAg
ICAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5EZXZpY2VTcGFjZS5oZWlnaHQoKSAq
IHF1YWRZKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFRyaWFuZ2xlQ29vcmRBdHRyaWJ1dGUoaW50
IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZSkKKyAgICB7CisgICAgICAgIC8vIHZlYzMg
YV90cmlhbmdsZUNvb3JkCisgICAgICAgIG1fdmVydGljZXMuYXBwZW5kKHF1YWRYKTsKKyAgICAg
ICAgbV92ZXJ0aWNlcy5hcHBlbmQocXVhZFkpOworICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZCh0
cmlhbmdsZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRBdHRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1
dGVzKGludCBxdWFkWCwgaW50IHF1YWRZKQorICAgIHsKKyAgICAgICAgYWRkUG9zaXRpb25BdHRy
aWJ1dGUocXVhZFgsIHF1YWRZKTsKKyAgICAgICAgYWRkVGV4Q29vcmRBdHRyaWJ1dGUocXVhZFgs
IHF1YWRZKTsKKyAgICAgICAgYWRkTWVzaENvb3JkQXR0cmlidXRlKHF1YWRYLCBxdWFkWSk7Cisg
ICAgfQorCisgICAgdm9pZCBhZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKGludCBxdWFk
WCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUp
CisgICAgeworICAgICAgICBhZGRBdHRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKHF1YWRYICsg
dHJpYW5nbGVYLCBxdWFkWSArIHRyaWFuZ2xlWSk7CisgICAgICAgIGFkZFRyaWFuZ2xlQ29vcmRB
dHRyaWJ1dGUocXVhZFgsIHF1YWRZLCB0cmlhbmdsZSk7CisgICAgfQorICAgIAorI2lmZGVmIERF
QlVHX0NVU1RPTV9GSUxURVJfTUVTSAorICAgIHZvaWQgZHVtcEJ1ZmZlcnMoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcHJpbnRmKCJNZXNoIGJ1ZmZlcnM6IFBvaW50cy53aWR0aCgpOiAlZCwgUG9p
bnRzLmhlaWdodCgpOiAlZCBtZXNoQm94OiAlZiwgJWYsICVmLCAlZiwgdHlwZTogJXNcbiIsIAor
ICAgICAgICAgICAgICAgbV9wb2ludHMud2lkdGgoKSwgbV9wb2ludHMuaGVpZ2h0KCksIG1fbWVz
aEJveC54KCksIG1fbWVzaEJveC55KCksIG1fbWVzaEJveC53aWR0aCgpLCBtX21lc2hCb3guaGVp
Z2h0KCksIAorICAgICAgICAgICAgICAgKG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uOjpBVFRBQ0hFRCkgPyAiQXR0YWNoZWQiIDogIkRldGFjaGVkIik7CisgICAgICAgIHByaW50
ZigiLS0tVmVydGV4OlxuXHQiKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dmVydGljZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIHByaW50ZigiJWYgIiwgbV92ZXJ0
aWNlcy5hdChpKSk7CisgICAgICAgICAgICBpZiAoISgoaSArIDEpICUgZmxvYXRzUGVyVmVydGV4
KCkpKQorICAgICAgICAgICAgICAgIHByaW50ZigiXG5cdCIpOworICAgICAgICB9CisgICAgICAg
IHByaW50ZigiXG4tLS1JbmRpY2VzOiAiKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1faW5kaWNlcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHByaW50ZigiJWQgIiwgbV9p
bmRpY2VzLmF0KGkpKTsKKyAgICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0KKyNlbmRpZgorCisg
ICAgCitwcml2YXRlOgorICAgIFZlY3RvcjxmbG9hdD4gbV92ZXJ0aWNlczsKKyAgICBWZWN0b3I8
dWludDE2X3Q+IG1faW5kaWNlczsKKyAgICAKKyAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1l
c2hUeXBlIG1fbWVzaFR5cGU7CisgICAgSW50U2l6ZSBtX3BvaW50czsKKyAgICBJbnRTaXplIG1f
dGlsZXM7CisgICAgRmxvYXRTaXplIG1fdGlsZVNpemVJblBpeGVsczsKKyAgICBGbG9hdFNpemUg
bV90aWxlU2l6ZUluRGV2aWNlU3BhY2U7CisgICAgRmxvYXRSZWN0IG1fbWVzaEJveDsKK307CisK
K0N1c3RvbUZpbHRlck1lc2g6OkN1c3RvbUZpbHRlck1lc2goR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHVuc2lnbmVkIGNvbHMsIHVuc2lnbmVkIHJvd3MsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIG1lc2hCb3gsIEN1c3RvbUZpbHRlck9w
ZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAg
ICAsIG1fdmVydGljZXNCdWZmZXJPYmplY3QoMCkKKyAgICAsIG1fZWxlbWVudHNCdWZmZXJPYmpl
Y3QoMCkKKyAgICAsIG1fbWVzaEJveChtZXNoQm94KQorICAgICwgbV9tZXNoVHlwZShtZXNoVHlw
ZSkKK3sKKyAgICBNZXNoR2VuZXJhdG9yIGdlbmVyYXRvcihjb2xzLCByb3dzLCBtZXNoQm94LCBt
ZXNoVHlwZSk7CisgICAgbV9pbmRpY2VzQ291bnQgPSBnZW5lcmF0b3IuaW5kaWNlc0NvdW50KCk7
CisgICAgbV9ieXRlc1BlclZlcnRleCA9IGdlbmVyYXRvci5mbG9hdHNQZXJWZXJ0ZXgoKSAqIHNp
emVvZihmbG9hdCk7ICAgIAorCisgICAgbV92ZXJ0aWNlc0J1ZmZlck9iamVjdCA9IG1fY29udGV4
dC0+Y3JlYXRlQnVmZmVyKCk7CisgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpBUlJBWV9CVUZGRVIsIG1fdmVydGljZXNCdWZmZXJPYmplY3QpOworICAgIG1fY29u
dGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBnZW5lcmF0
b3IudmVydGljZXMoKS5zaXplKCkgKiBzaXplb2YoZmxvYXQpLCBnZW5lcmF0b3IudmVydGljZXMo
KS5kYXRhKCksIEdyYXBoaWNzQ29udGV4dDNEOjpTVEFUSUNfRFJBVyk7CisgICAgCisgICAgbV9l
bGVtZW50c0J1ZmZlck9iamVjdCA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCk7CisgICAgbV9j
b250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZF
UiwgbV9lbGVtZW50c0J1ZmZlck9iamVjdCk7CisgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdy
YXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiwgZ2VuZXJhdG9yLmluZGljZXMo
KS5zaXplKCkgKiBzaXplb2YodWludDE2X3QpLCBnZW5lcmF0b3IuaW5kaWNlcygpLmRhdGEoKSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKTsKK30KKworQ3VzdG9tRmlsdGVyTWVzaDo6
fkN1c3RvbUZpbHRlck1lc2goKQoreworICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKG1fdmVy
dGljZXNCdWZmZXJPYmplY3QpOworICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKG1fZWxlbWVu
dHNCdWZmZXJPYmplY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1l
c2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTgwMWZhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJNZXNoLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEN1c3RvbUZpbHRlck1lc2hfaAorI2RlZmluZSBDdXN0b21GaWx0ZXJNZXNo
X2gKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVk
ZSAiQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKKworY2xhc3Mg
Q3VzdG9tRmlsdGVyTWVzaCA6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRlck1lc2g+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJNZXNoPiBjcmVhdGUo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIGNvbHMsIHVuc2lnbmVkIHJvd3Ms
IGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5
cGUpIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJNZXNoKGNvbnRl
eHQsIGNvbHMsIHJvd3MsIG1lc2hCb3gsIG1lc2hUeXBlKSk7CisgICAgfQorICAgIH5DdXN0b21G
aWx0ZXJNZXNoKCk7CisKKyAgICBQbGF0Zm9ybTNET2JqZWN0IHZlcnRpY2VzQnVmZmVyT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNlc0J1ZmZlck9iamVjdDsgfQorICAgIHVuc2lnbmVk
IGJ5dGVzUGVyVmVydGV4KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlc1BlclZlcnRleDsgfQorICAg
IAorICAgIFBsYXRmb3JtM0RPYmplY3QgZWxlbWVudHNCdWZmZXJPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBtX2VsZW1lbnRzQnVmZmVyT2JqZWN0OyB9CisgICAgdW5zaWduZWQgaW5kaWNlc0NvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9pbmRpY2VzQ291bnQ7IH0KKyAgICAKKyAgICBjb25zdCBGbG9h
dFJlY3QmIG1lc2hCb3goKSBjb25zdCB7IHJldHVybiBtX21lc2hCb3g7IH0KKyAgICBDdXN0b21G
aWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNo
VHlwZTsgfQorCitwcml2YXRlOgorICAgIEN1c3RvbUZpbHRlck1lc2goR3JhcGhpY3NDb250ZXh0
M0QqLCB1bnNpZ25lZCBjb2xzLCB1bnNpZ25lZCByb3dzLCBjb25zdCBGbG9hdFJlY3QmIG1lc2hC
b3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUpOworICAgIAorICAgIEdyYXBoaWNz
Q29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgCisgICAgUGxhdGZvcm0zRE9iamVjdCBtX3ZlcnRp
Y2VzQnVmZmVyT2JqZWN0OworICAgIHVuc2lnbmVkIG1fYnl0ZXNQZXJWZXJ0ZXg7CisgICAgCisg
ICAgUGxhdGZvcm0zRE9iamVjdCBtX2VsZW1lbnRzQnVmZmVyT2JqZWN0OworICAgIHVuc2lnbmVk
IG1faW5kaWNlc0NvdW50OworICAgIAorICAgIEZsb2F0UmVjdCBtX21lc2hCb3g7CisgICAgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtX21lc2hUeXBlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUo
V0VCR0wpCisKKyNlbmRpZiAvLyBDdXN0b21GaWx0ZXJNZXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
U2hhZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjNkODY4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJTaGFkZXIuY3BwCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJp
Z2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICog
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hB
REVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjZGVmaW5lIFNIQURFUjAoU3JjKSAjU3JjCisjZGVm
aW5lIFNIQURFUihTcmMpIFNIQURFUjAoU3JjKQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyU2hh
ZGVyLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1N0cmluZyBDdXN0b21GaWx0ZXJTaGFkZXI6OmRlZmF1bHRWZXJ0ZXhTaGFkZXJT
dHJpbmcoKQoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICBhdHRy
aWJ1dGUgdmVjMiBhX3RleENvb3JkOworICAgICAgICB1bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9u
TWF0cml4OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdm9pZCBt
YWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25N
YXRyaXggKiBhX3Bvc2l0aW9uOworICAgICAgICAgICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7
CisgICAgICAgIH0KKyAgICApOworfQorCitTdHJpbmcgQ3VzdG9tRmlsdGVyU2hhZGVyOjpkZWZh
dWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKQoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAg
IHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29y
ZDsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOworICAgICAgICB2b2lkIG1h
aW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoc190
ZXh0dXJlLCB2X3RleENvb3JkKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK0N1c3RvbUZpbHRl
clNoYWRlcjo6Q3VzdG9tRmlsdGVyU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHZlcnRleFNoYWRlclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNo
YWRlclN0cmluZykKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV92ZXJ0ZXhTaGFk
ZXJTdHJpbmcoIXZlcnRleFNoYWRlclN0cmluZy5pc051bGwoKSA/IHZlcnRleFNoYWRlclN0cmlu
ZyA6IGRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcoKSkKKyAgICAsIG1fZnJhZ21lbnRTaGFkZXJT
dHJpbmcoIWZyYWdtZW50U2hhZGVyU3RyaW5nLmlzTnVsbCgpID8gZnJhZ21lbnRTaGFkZXJTdHJp
bmcgOiBkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKSkKKyAgICAsIG1fcHJvZ3JhbSgwKQor
ICAgICwgbV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV90ZXhBdHRyaWJMb2Nh
dGlvbigtMSkKKyAgICAsIG1fbWVzaEF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV90cmlhbmds
ZUF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV9tZXNoQm94TG9jYXRpb24oLTEpCisgICAgLCBt
X3Byb2plY3Rpb25NYXRyaXhMb2NhdGlvbigtMSkKKyAgICAsIG1fdGlsZVNpemVMb2NhdGlvbigt
MSkKKyAgICAsIG1fbWVzaFNpemVMb2NhdGlvbigtMSkKKyAgICAsIG1fc2FtcGxlckxvY2F0aW9u
KC0xKQorICAgICwgbV9zYW1wbGVyU2l6ZUxvY2F0aW9uKC0xKQorICAgICwgbV9jb250ZW50U2Ft
cGxlckxvY2F0aW9uKC0xKQorICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQoreworICAgIFBs
YXRmb3JtM0RPYmplY3QgdmVydGV4U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIpOworICAgIFBsYXRmb3JtM0RPYmplY3QgZnJh
Z21lbnRTaGFkZXIgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBR01FTlRfU0hBREVSKTsKKworICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKHZlcnRleFNo
YWRlciwgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcpOworICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRl
cih2ZXJ0ZXhTaGFkZXIpOworICAgIAorICAgIGludCBjb21waWxlZCA9IDA7CisgICAgbV9jb250
ZXh0LT5nZXRTaGFkZXJpdih2ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QSUxF
X1NUQVRVUywgJmNvbXBpbGVkKTsKKyAgICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGFuIGludmFsaWQgc2hhZGVyLiBUaHJvdyBzb21lIGVycm9ycy4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDE2CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UoZnJh
Z21lbnRTaGFkZXIsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcpOworICAgIG1fY29udGV4dC0+Y29t
cGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgCisgICAgbV9jb250ZXh0LT5nZXRTaGFk
ZXJpdihmcmFnbWVudFNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVTLCAm
Y29tcGlsZWQpOworICAgIGlmICghY29tcGlsZWQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMg
aXMgYW4gaW52YWxpZCBzaGFkZXIuIFRocm93IHNvbWUgZXJyb3JzLgorICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MTYKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBtX3Byb2dyYW0gPSBtX2NvbnRleHQtPmNyZWF0ZVByb2dyYW0o
KTsKKyAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3Byb2dyYW0sIHZlcnRleFNoYWRlcik7
CisgICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIobV9wcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7
CisgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShtX3Byb2dyYW0pOworICAgIAorICAgIG1fY29u
dGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5kZWxldGVT
aGFkZXIoZnJhZ21lbnRTaGFkZXIpOworICAgIAorICAgIGludCBsaW5rZWQgPSAwOworICAgIG1f
Y29udGV4dC0+Z2V0UHJvZ3JhbWl2KG1fcHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTktf
U1RBVFVTLCAmbGlua2VkKTsKKyAgICBpZiAoIWxpbmtlZCkgeworICAgICAgICAvLyBGSVhNRTog
SW52YWxpZCB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVyIGNvbWJpbmF0aW9uLiBUaHJvdyBzb21lIGVy
cm9ycyBoZXJlLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzQ0MTYKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX3Bvc2l0aW9u
QXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwg
ImFfcG9zaXRpb24iKTsKKyAgICBtX3RleEF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRB
dHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3RleENvb3JkIik7CisgICAgbV9tZXNoQXR0cmli
TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfbWVz
aENvb3JkIik7CisgICAgbV90cmlhbmdsZUF0dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRB
dHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3RyaWFuZ2xlQ29vcmQiKTsKKyAgICBtX21lc2hC
b3hMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVf
bWVzaEJveCIpOworICAgIG1fdGlsZVNpemVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfdGlsZVNpemUiKTsKKyAgICBtX21lc2hTaXplTG9jYXRp
b24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X21lc2hTaXpl
Iik7CisgICAgbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3Byb2plY3Rpb25NYXRyaXgiKTsKKyAgICBtX3NhbXBs
ZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInNf
dGV4dHVyZSIpOworICAgIG1fc2FtcGxlclNpemVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInNfdGV4dHVyZVNpemUiKTsKKyAgICBtX2NvbnRlbnRT
YW1wbGVyTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0s
ICJzX2NvbnRlbnRUZXh0dXJlIik7CisgICAgCisgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsK
K30KKyAgICAKK0N1c3RvbUZpbHRlclNoYWRlcjo6fkN1c3RvbUZpbHRlclNoYWRlcigpCit7Cisg
ICAgaWYgKG1fcHJvZ3JhbSkKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fcHJv
Z3JhbSk7Cit9CisKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFC
TEUoV0VCR0wpCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWYxZmNjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgKQEAgLTAs
MCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKA
nEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJF
CisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21G
aWx0ZXJTaGFkZXJfaAorI2RlZmluZSBDdXN0b21GaWx0ZXJTaGFkZXJfaAorCisjaWYgRU5BQkxF
KENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVz
M0QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOworCitjbGFzcyBDdXN0b21GaWx0ZXJTaGFkZXI6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3Rv
bUZpbHRlclNoYWRlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZp
bHRlclNoYWRlcj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyU2hhZGVyKGNvbnRleHQsIHZl
cnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIpKTsKKyAgICB9CisgICAgCisgICAgfkN1c3RvbUZp
bHRlclNoYWRlcigpOworICAgIAorICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFZlcnRleFNoYWRl
clN0cmluZygpOworICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5n
KCk7ICAgIAorICAgIAorICAgIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3ZlcnRleFNoYWRlclN0cmluZzsgfQorICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7IH0KKyAgICAKKyAg
ICBpbnQgcG9zaXRpb25BdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb25B
dHRyaWJMb2NhdGlvbjsgfQorICAgIGludCB0ZXhBdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4QXR0cmliTG9jYXRpb247IH0KKyAgICBpbnQgbWVzaEF0dHJpYkxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9tZXNoQXR0cmliTG9jYXRpb247IH0KKyAgICBpbnQgdHJpYW5nbGVB
dHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJpYW5nbGVBdHRyaWJMb2NhdGlvbjsg
fQorICAgIGludCBtZXNoQm94TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lc2hCb3hMb2Nh
dGlvbjsgfQorICAgIGludCBwcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3Byb2plY3Rpb25NYXRyaXhMb2NhdGlvbjsgfQorICAgIGludCB0aWxlU2l6ZUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90aWxlU2l6ZUxvY2F0aW9uOyB9CisgICAgaW50IG1lc2hTaXpl
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lc2hTaXplTG9jYXRpb247IH0KKyAgICBpbnQg
c2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb247IH0KKyAg
ICBpbnQgY29udGVudFNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNh
bXBsZXJMb2NhdGlvbjsgfQorICAgIGludCBzYW1wbGVyU2l6ZUxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zYW1wbGVyU2l6ZUxvY2F0aW9uOyB9CisgICAgCisgICAgYm9vbCBpc0luaXRpYWxp
emVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemVkOyB9CisgICAgCisgICAgUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtOyB9CisKK3ByaXZh
dGU6CisgICAgQ3VzdG9tRmlsdGVyU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgU3Ry
aW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpOworICAgIAor
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIAorICAgIFN0cmlu
ZyBtX3ZlcnRleFNoYWRlclN0cmluZzsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmlu
ZzsKKworICAgIFBsYXRmb3JtM0RPYmplY3QgbV9wcm9ncmFtOworICAgIAorICAgIGludCBtX3Bv
c2l0aW9uQXR0cmliTG9jYXRpb247CisgICAgaW50IG1fdGV4QXR0cmliTG9jYXRpb247CisgICAg
aW50IG1fbWVzaEF0dHJpYkxvY2F0aW9uOworICAgIGludCBtX3RyaWFuZ2xlQXR0cmliTG9jYXRp
b247CisgICAgaW50IG1fbWVzaEJveExvY2F0aW9uOworICAgIGludCBtX3Byb2plY3Rpb25NYXRy
aXhMb2NhdGlvbjsKKyAgICBpbnQgbV90aWxlU2l6ZUxvY2F0aW9uOworICAgIGludCBtX21lc2hT
aXplTG9jYXRpb247CisgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOworICAgIGludCBtX3NhbXBs
ZXJTaXplTG9jYXRpb247CisgICAgaW50IG1fY29udGVudFNhbXBsZXJMb2NhdGlvbjsKKyAgICAK
KyAgICBib29sIG1faXNJbml0aWFsaXplZDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShD
U1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJiOGFkZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0
b21GaWx0ZXIuY3BwCkBAIC0wLDAgKzEsMjEyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRv
YmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAg
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5B
QkxFKFdFQkdMKQorI2luY2x1ZGUgIkZFQ3VzdG9tRmlsdGVyLmgiCisKKyNpbmNsdWRlICJDYWNo
ZWRTaGFkZXIuaCIKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJNZXNoLmgiCisjaW5jbHVkZSAiQ3Vz
dG9tRmlsdGVyU2hhZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEcmF3
aW5nQnVmZmVyLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVl
QXNUZXh0LmgiCisjaW5jbHVkZSAiU3R5bGVDYWNoZWRTaGFkZXIuaCIKKyNpbmNsdWRlICJUZXh0
U3RyZWFtLmgiCisjaW5jbHVkZSAiVGV4dHVyZS5oIgorI2luY2x1ZGUgIlRpbGluZ0RhdGEuaCIK
KyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCisjaW5jbHVkZSA8d3RmL0J5dGVB
cnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBvcnRob01hdHJpeChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBm
bG9hdCB0b3ApCit7CisgICAgZmxvYXQgZGVsdGFYID0gcmlnaHQgLSBsZWZ0OworICAgIGZsb2F0
IGRlbHRhWSA9IHRvcCAtIGJvdHRvbTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRobzsK
KyAgICBpZiAoIWRlbHRhWCB8fCAhZGVsdGFZKQorICAgICAgICByZXR1cm4gb3J0aG87CisgICAg
b3J0aG8uc2V0TTExKDIuMGYgLyBkZWx0YVgpOworICAgIG9ydGhvLnNldE00MSgtKHJpZ2h0ICsg
bGVmdCkgLyBkZWx0YVgpOworICAgIG9ydGhvLnNldE0yMigyLjBmIC8gZGVsdGFZKTsKKyAgICBv
cnRoby5zZXRNNDIoLSh0b3AgKyBib3R0b20pIC8gZGVsdGFZKTsKKworICAgIC8vIFVzZSBiaWcg
ZW5vdWdoIG5lYXIvZmFyIHZhbHVlcywgc28gdGhhdCBzaW1wbGUgcm90YXRpb25zIG9mIHJhdGhl
ciBsYXJnZSBvYmplY3RzIHdpbGwgbm90CisgICAgLy8gZ2V0IGNsaXBwZWQuIDEwMDAwIHNob3Vs
ZCBjb3ZlciBtb3N0IG9mIHRoZSBzY3JlZW4gcmVzb2x1dGlvbnMuCisgICAgY29uc3QgZmxvYXQg
ZmFyVmFsdWUgPSAxMDAwMDsKKyAgICBjb25zdCBmbG9hdCBuZWFyVmFsdWUgPSAtMTAwMDA7Cisg
ICAgb3J0aG8uc2V0TTMzKC0yLjBmIC8gKGZhclZhbHVlIC0gbmVhclZhbHVlKSk7CisgICAgb3J0
aG8uc2V0TTQzKC0gKGZhclZhbHVlICsgbmVhclZhbHVlKSAvIChmYXJWYWx1ZSAtIG5lYXJWYWx1
ZSkpOworICAgIG9ydGhvLnNldE00NCgxLjBmKTsKKworICAgIHJldHVybiBvcnRobzsKK30KKwor
RkVDdXN0b21GaWx0ZXI6OkZFQ3VzdG9tRmlsdGVyKEZpbHRlciogZmlsdGVyLCBEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdt
ZW50U2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hS
b3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94
VHlwZSBtZXNoQm94VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21G
aWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQorICAgIDogRmlsdGVyRWZmZWN0KGZp
bHRlcikKKyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX3ZlcnRleFNoYWRlcih2
ZXJ0ZXhTaGFkZXIpCisgICAgLCBtX2ZyYWdtZW50U2hhZGVyKGZyYWdtZW50U2hhZGVyKQorICAg
ICwgbV9tZXNoUm93cyhtZXNoUm93cykKKyAgICAsIG1fbWVzaENvbHVtbnMobWVzaENvbHVtbnMp
CisgICAgLCBtX21lc2hCb3hUeXBlKG1lc2hCb3hUeXBlKQorICAgICwgbV9tZXNoVHlwZShtZXNo
VHlwZSkKKworeworfQorCitQYXNzUmVmUHRyPEZFQ3VzdG9tRmlsdGVyPiBGRUN1c3RvbUZpbHRl
cjo6Y3JlYXRlKEZpbHRlciogZmlsdGVyLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNp
Z25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSBtZXNo
Qm94VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0
b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRkVDdXN0b21GaWx0ZXIoZmlsdGVyLCBkb2N1bWVudCwgdmVydGV4U2hhZGVyLCBm
cmFnbWVudFNoYWRlciwgbWVzaFJvd3MsIG1lc2hDb2x1bW5zLCBtZXNoQm94VHlwZSwgbWVzaFR5
cGUpKTsKK30KKwordm9pZCBGRUN1c3RvbUZpbHRlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkK
K3sKKyAgICBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1h
Z2VSZXN1bHQoKTsKKyAgICBpZiAoIWRzdFBpeGVsQXJyYXkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKKyAgICBJbnRSZWN0IGVmZmVj
dEFEcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpOworICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBp
bi0+YXNQcmVtdWx0aXBsaWVkSW1hZ2UoZWZmZWN0QURyYXdpbmdSZWN0KTsKKyAgICAKKyAgICBJ
bnRTaXplIG5ld0NvbnRleHRTaXplKGVmZmVjdEFEcmF3aW5nUmVjdC53aWR0aCgpLCBlZmZlY3RB
RHJhd2luZ1JlY3QuaGVpZ2h0KCkpOworICAgIGJvb2wgaGFkQ29udGV4dCA9IG1fY29udGV4dDsK
KyAgICBpZiAoIW1fY29udGV4dCkgeworICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmli
dXRlcyBhdHRyaWJ1dGVzOworICAgICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZl
ciA9IHRydWU7CisgICAgICAgIGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhID0gZmFsc2U7
CisgICAgICAgIAorICAgICAgICBtX2NvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
KGF0dHJpYnV0ZXMsIG1fZG9jdW1lbnQtPnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCksIEdy
YXBoaWNzQ29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pOworICAgICAgICBtX2RyYXdpbmdCdWZm
ZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBuZXdDb250ZXh0U2l6
ZSwgIWF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICAgICAgCisgICAgICAg
IG1fc2hhZGVyID0gQ3VzdG9tRmlsdGVyU2hhZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBt
X3ZlcnRleFNoYWRlciwgbV9mcmFnbWVudFNoYWRlcik7CisgICAgICAgIG1fbWVzaCA9IEN1c3Rv
bUZpbHRlck1lc2g6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIG1fbWVzaENvbHVtbnMsIG1fbWVz
aFJvd3MsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRS
ZWN0KDAsIDAsIDEsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9tZXNoVHlwZSk7CisgICAgfQorICAgIAorICAgIGlmICghaGFkQ29udGV4dCB8fCBtX2Nv
bnRleHRTaXplICE9IG5ld0NvbnRleHRTaXplKSB7CisgICAgICAgIG1faW5wdXRUZXh0dXJlID0g
MDsKKyAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5yZXNldChuZXdDb250ZXh0U2l6ZSk7CisgICAg
ICAgIG1fY29udGV4dC0+cmVzaGFwZShuZXdDb250ZXh0U2l6ZS53aWR0aCgpLCBuZXdDb250ZXh0
U2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgbmV3Q29u
dGV4dFNpemUud2lkdGgoKSwgbmV3Q29udGV4dFNpemUuaGVpZ2h0KCkpOworICAgICAgICBtX2lu
cHV0VGV4dHVyZSA9IFRleHR1cmU6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIFRleHR1cmU6OlJH
QkE4LCBuZXdDb250ZXh0U2l6ZS53aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5oZWlnaHQoKSk7Cisg
ICAgICAgIG1fY29udGV4dFNpemUgPSBuZXdDb250ZXh0U2l6ZTsKKyAgICB9CisgICAgCisgICAg
aWYgKG1faW5wdXRUZXh0dXJlLT50aWxlcygpLm51bVRpbGVzKCkgIT0gMSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICBt
X2NvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUIHwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQpOworICAgIAorICAgIG1fY29udGV4dC0+
dXNlUHJvZ3JhbShtX3NoYWRlci0+cHJvZ3JhbSgpKTsKKyAgICAKKyAgICBpZiAobV9zaGFkZXIt
PnNhbXBsZXJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIG1fY29udGV4dC0+YWN0aXZlVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOworICAgICAgICBtX2NvbnRleHQtPnVu
aWZvcm0xaShtX3NoYWRlci0+c2FtcGxlckxvY2F0aW9uKCksIDApOworICAgICAgICBtX2lucHV0
VGV4dHVyZS0+bG9hZChzcmNQaXhlbEFycmF5LT5kYXRhKCkpOworICAgICAgICBtX2lucHV0VGV4
dHVyZS0+YmluZFRpbGUoMCk7CisgICAgfQorICAgIAorICAgIGlmIChtX3NoYWRlci0+cHJvamVj
dGlvbk1hdHJpeExvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggcHJvamVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KC0wLjUsIDAuNSwgLTAuNSwgMC41KTsK
KyAgICAgICAgZmxvYXQgZ2xQcm9qZWN0aW9uTWF0cml4WzE2XTsKKyAgICAgICAgcHJvamVjdGlv
bk1hdHJpeC50b0NvbHVtbk1ham9yRmxvYXRBcnJheShnbFByb2plY3Rpb25NYXRyaXgpOworICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobV9zaGFkZXItPnByb2plY3Rpb25NYXRy
aXhMb2NhdGlvbigpLCBmYWxzZSwgJmdsUHJvamVjdGlvbk1hdHJpeFswXSwgMSk7CisgICAgfQor
ICAgIAorICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlf
QlVGRkVSLCBtX21lc2gtPnZlcnRpY2VzQnVmZmVyT2JqZWN0KCkpOworICAgIG1fY29udGV4dC0+
YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1fbWVz
aC0+ZWxlbWVudHNCdWZmZXJPYmplY3QoKSk7CisKKyAgICB1bnNpZ25lZCB2ZXJ0ZXhTaXplID0g
bV9tZXNoLT5ieXRlc1BlclZlcnRleCgpOworICAgIAorICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7
CisgICAgCisgICAgaWYgKG1fc2hhZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCkgIT0gLTEp
IHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVyLT5wb3Np
dGlvbkF0dHJpYkxvY2F0aW9uKCksIDQsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2Us
IHZlcnRleFNpemUsIG9mZnNldCk7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0
cmliQXJyYXkobV9zaGFkZXItPnBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSk7CisgICAgfQorICAg
IG9mZnNldCArPSA0ICogc2l6ZW9mKGZsb2F0KTsKKyAgICAKKyAgICBpZiAobV9zaGFkZXItPnRl
eEF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRy
aWJQb2ludGVyKG1fc2hhZGVyLT50ZXhBdHRyaWJMb2NhdGlvbigpLCAyLCBHcmFwaGljc0NvbnRl
eHQzRDo6RkxPQVQsIGZhbHNlLCB2ZXJ0ZXhTaXplLCBvZmZzZXQpOworICAgICAgICBtX2NvbnRl
eHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fc2hhZGVyLT50ZXhBdHRyaWJMb2NhdGlvbigp
KTsKKyAgICB9CisgICAgb2Zmc2V0ICs9IDIgKiBzaXplb2YoZmxvYXQpOworICAgIAorICAgIGlm
IChtX3NoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVyLT5tZXNoQXR0cmliTG9jYXRpb24oKSwg
MiwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwgdmVydGV4U2l6ZSwgb2Zmc2V0KTsK
KyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3NoYWRlci0+bWVz
aEF0dHJpYkxvY2F0aW9uKCkpOworICAgIH0KKyAgICBvZmZzZXQgKz0gMiAqIHNpemVvZihmbG9h
dCk7CisgICAgCisgICAgaWYgKG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpE
RVRBQ0hFRCAmJiBtX3NoYWRlci0+dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpICE9IC0xKSB7Cisg
ICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihtX3NoYWRlci0+dHJpYW5nbGVB
dHRyaWJMb2NhdGlvbigpLCAzLCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCB2ZXJ0
ZXhTaXplLCBvZmZzZXQpOworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KG1fc2hhZGVyLT50cmlhbmdsZUF0dHJpYkxvY2F0aW9uKCkpOworICAgIH0KKyAgICAKKyAg
ICBtX2NvbnRleHQtPmRyYXdFbGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCBt
X21lc2gtPmluZGljZXNDb3VudCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQs
IDApOworICAgIAorICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KCk7CisKKyAgICBSZWZQdHI8
SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
SW1hZ2VEYXRhKG1fZHJhd2luZ0J1ZmZlci5nZXQoKSk7CisgICAgQnl0ZUFycmF5KiBncHVSZXN1
bHQgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOworICAgIEFTU0VSVChncHVSZXN1bHQtPmxl
bmd0aCgpID09IGRzdFBpeGVsQXJyYXktPmxlbmd0aCgpKTsKKyAgICBtZW1jcHkoZHN0UGl4ZWxB
cnJheS0+ZGF0YSgpLCBncHVSZXN1bHQtPmRhdGEoKSwgZ3B1UmVzdWx0LT5sZW5ndGgoKSk7Cit9
CisKK3ZvaWQgRkVDdXN0b21GaWx0ZXI6OmR1bXAoKQoreworfQorCitUZXh0U3RyZWFtJiBGRUN1
c3RvbUZpbHRlcjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgaW50IGlu
ZGVudCkgY29uc3QKK3sKKyAgICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKKyAgICB0cyA8PCAi
W2ZlQ3VzdG9tRmlsdGVyIjsKKyAgICBGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRp
b24odHMpOworICAgIHRzIDw8ICJdXG4iOworICAgIGlucHV0RWZmZWN0KDApLT5leHRlcm5hbFJl
cHJlc2VudGF0aW9uKHRzLCBpbmRlbnQgKyAxKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5B
QkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjE4MjQ3OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmgKQEAgLTAsMCArMSw4OCBAQAorLyoK
KyAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwor
ICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAq
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
CisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZFQ3VzdG9tRmlsdGVyX2gKKyNkZWZp
bmUgRkVDdXN0b21GaWx0ZXJfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUo
V0VCR0wpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJG
aWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FjaGVkU2hhZGVyOworY2xhc3Mg
Q3VzdG9tRmlsdGVyTWVzaDsKK2NsYXNzIEN1c3RvbUZpbHRlclNoYWRlcjsKK2NsYXNzIERvY3Vt
ZW50OworY2xhc3MgRHJhd2luZ0J1ZmZlcjsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xh
c3MgVGV4dHVyZTsKKyAgICAKK2NsYXNzIEZFQ3VzdG9tRmlsdGVyIDogcHVibGljIEZpbHRlckVm
ZmVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVDdXN0b21GaWx0ZXI+IGNy
ZWF0ZShGaWx0ZXIqLCBEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25z
dCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1l
c2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNo
Qm94VHlwZSwgCisgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNo
VHlwZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CisgICAg
dmlydHVhbCB2b2lkIGR1bXAoKTsKKworICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgRkVDdXN0b21GaWx0ZXIoRmlsdGVyKiwgRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcm
IHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlciwKKyAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6TWVzaEJveFR5cGUsIAorICAgICAgICAgICAgICAgICAgIEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6TWVzaFR5cGUpOworICAgIAorICAgIERvY3VtZW50KiBtX2RvY3VtZW50
OworICAgIAorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIFJl
ZlB0cjxEcmF3aW5nQnVmZmVyPiBtX2RyYXdpbmdCdWZmZXI7CisgICAgUmVmUHRyPFRleHR1cmU+
IG1faW5wdXRUZXh0dXJlOworICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJTaGFkZXI+IG1fc2hhZGVy
OworICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJNZXNoPiBtX21lc2g7CisgICAgSW50U2l6ZSBtX2Nv
bnRleHRTaXplOworICAgIAorICAgIFN0cmluZyBtX3ZlcnRleFNoYWRlcjsKKyAgICBTdHJpbmcg
bV9mcmFnbWVudFNoYWRlcjsKKworICAgIHVuc2lnbmVkIG1fbWVzaFJvd3M7CisgICAgdW5zaWdu
ZWQgbV9tZXNoQ29sdW1uczsKKyAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hCb3hUeXBl
IG1fbWVzaEJveFR5cGU7CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtX21l
c2hUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNlbmRpZiAvLyBGRUN1c3RvbUZpbHRl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4
dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5j
cHAKaW5kZXggM2NmZDIzMC4uNWZmN2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpIHx8IEVOQUJMRShDU1NfU0hBREVSUykKIAogI2lu
Y2x1ZGUgIlRleHR1cmUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNw
cAppbmRleCBlMGQ0Zjc4Li5jMjFmNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9u
TWF0cml4LmNwcApAQCAtMTE5OCw1ICsxMTk4LDI0IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRy
YW5zZm9ybWF0aW9uTWF0cml4Ojp0bzJkVHJhbnNmb3JtKCkgY29uc3QKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9tYXRyaXhbM11bMF0sIG1fbWF0cml4WzNdWzFdLCAwLCBtX21h
dHJpeFszXVszXSk7CiB9CiAKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvQ29sdW1uTWFq
b3JGbG9hdEFycmF5KEZsb2F0TWF0cml4NCYgcmVzdWx0KSBjb25zdAoreworICAgIHJlc3VsdFsw
XSA9IG0xMSgpOworICAgIHJlc3VsdFsxXSA9IG0xMigpOworICAgIHJlc3VsdFsyXSA9IG0xMygp
OworICAgIHJlc3VsdFszXSA9IG0xNCgpOworICAgIHJlc3VsdFs0XSA9IG0yMSgpOworICAgIHJl
c3VsdFs1XSA9IG0yMigpOworICAgIHJlc3VsdFs2XSA9IG0yMygpOworICAgIHJlc3VsdFs3XSA9
IG0yNCgpOworICAgIHJlc3VsdFs4XSA9IG0zMSgpOworICAgIHJlc3VsdFs5XSA9IG0zMigpOwor
ICAgIHJlc3VsdFsxMF0gPSBtMzMoKTsKKyAgICByZXN1bHRbMTFdID0gbTM0KCk7CisgICAgcmVz
dWx0WzEyXSA9IG00MSgpOworICAgIHJlc3VsdFsxM10gPSBtNDIoKTsKKyAgICByZXN1bHRbMTRd
ID0gbTQzKCk7CisgICAgcmVzdWx0WzE1XSA9IG00NCgpOworfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9u
TWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggMDQ1MGFkNy4uYTk4ZDcwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMzUwLDYgKzM1MCw5IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIG1hdHJpeCB3aXRob3V0IDNEIGNvbXBvbmVu
dHMuCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdG8yZFRyYW5zZm9ybSgpIGNvbnN0OworICAg
IAorICAgIHR5cGVkZWYgZmxvYXQgRmxvYXRNYXRyaXg0WzE2XTsKKyAgICB2b2lkIHRvQ29sdW1u
TWFqb3JGbG9hdEFycmF5KEZsb2F0TWF0cml4NCYgcmVzdWx0KSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICAvLyBtdWx0aXBseSBwYXNzZWQgMkQgcG9pbnQgYnkgbWF0cml4IChhc3N1bWUgej0wKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdE9ic2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmM2MDYzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdE9ic2VydmVyLmgKQEAgLTAs
MCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCc
QVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUK
KyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZpbHRlckVm
ZmVjdE9ic2VydmVyX2gKKyNkZWZpbmUgRmlsdGVyRWZmZWN0T2JzZXJ2ZXJfaAorCisjaWYgRU5B
QkxFKENTU19GSUxURVJTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZpbHRlckVm
ZmVjdE9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5GaWx0ZXJFZmZlY3RPYnNlcnZl
cigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKSA9IDA7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CisKKyNlbmRpZiAvLyBGaWx0ZXJFZmZlY3RPYnNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBlNjZlZjVlLi5lMGRj
MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAKQEAgLTM0LDExICszNCwxOSBAQAogI2luY2x1ZGUgIkZFRHJvcFNoYWRvdy5oIgog
I2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCiAjaW5jbHVkZSAiRkVNZXJnZS5oIgorI2luY2x1
ZGUgIkZpbHRlckVmZmVjdE9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgi
CiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAor
I2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkNhY2hl
ZFNoYWRlci5oIgorI2luY2x1ZGUgIkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgorI2luY2x1ZGUg
IkZFQ3VzdG9tRmlsdGVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBlbmRNYXRyaXhSb3coVmVjdG9y
PGZsb2F0PiYgcGFyYW1ldGVycykKQEAgLTU1LDkgKzYzLDIwIEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBsYXN0TWF0cml4Um93KFZlY3RvcjxmbG9hdD4mIHBhcmFtZXRlcnMpCiAgICAgcGFyYW1ldGVy
cy5hcHBlbmQoMSk7CiAgICAgcGFyYW1ldGVycy5hcHBlbmQoMCk7CiB9CisgICAgCisgICAgCisj
aWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCitzdGF0aWMgYm9vbCBpc1dl
YkdMRW5hYmxlZChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgLy8gV2Ugb25seSB3YW50IHRv
IGVuYWJsZSBzaGFkZXJzIGlmIFdlYkdMIGlzIGFsc28gZW5hYmxlZCBvbiB0aGlzIHBsYXRmb3Jt
LgorICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LT5zZXR0aW5ncygpOworICAgIHJl
dHVybiBzZXR0aW5ncyAmJiBzZXR0aW5ncy0+d2ViR0xFbmFibGVkKCk7Cit9CisjZW5kaWYKIAot
RmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcmVyKCkKLSAgICA6IG1fZ3Jh
cGhpY3NCdWZmZXJBdHRhY2hlZChmYWxzZSkKK0ZpbHRlckVmZmVjdFJlbmRlcmVyOjpGaWx0ZXJF
ZmZlY3RSZW5kZXJlcihGaWx0ZXJFZmZlY3RPYnNlcnZlciogb2JzZXJ2ZXIpCisgICAgOiBtX29i
c2VydmVyKG9ic2VydmVyKQorICAgICwgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKGZhbHNlKQog
ewogICAgIHNldEZpbHRlclJlc29sdXRpb24oRmxvYXRTaXplKDEsIDEpKTsKICAgICBtX3NvdXJj
ZUdyYXBoaWMgPSBTb3VyY2VHcmFwaGljOjpjcmVhdGUodGhpcyk7CkBAIC03Miw4ICs5MSwxNCBA
QCBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRlcmVyOjppbnB1dENvbnRleHQoKQog
ICAgIHJldHVybiBzb3VyY2VJbWFnZSgpLT5jb250ZXh0KCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZm
ZWN0UmVuZGVyZXI6OmJ1aWxkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMsIGNv
bnN0IExheW91dFJlY3QmIGJvcmRlckJveCkKK3ZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1
aWxkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9u
cywgY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyQm94KQogeworI2lmICFFTkFCTEUoQ1NTX1NIQURF
UlMpIHx8ICFFTkFCTEUoV0VCR0wpCisgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKKyNlbHNl
CisgICAgQ2FjaGVkU2hhZGVyTGlzdCBjYWNoZWRTaGFkZXJzOworI2VuZGlmCisKICAgICBtX2Vm
ZmVjdHMuY2xlYXIoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdDsKQEAgLTIx
NCw3ICsyMzksNDEgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3QgTGF5b3UKICAgICAgICAgfQogI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTTog
ewotICAgICAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIGluIHRoZSBzb2Z0d2FyZSBwYXRoLgor
I2lmIEVOQUJMRShXRUJHTCkKKyAgICAgICAgICAgIGlmICghaXNXZWJHTEVuYWJsZWQoZG9jdW1l
bnQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBDdXN0b21GaWx0ZXJPcGVyYXRpb24qIGN1c3RvbUZpbHRlck9wZXJhdGlvbiA9IHN0YXRpY19j
YXN0PEN1c3RvbUZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGZpbHRlcnMgYXJlIGFscmVhZHkgbG9h
ZGVkLiBJZiBub3QganVzdCBza2lwIHRoZW0gaGVyZS4KKyAgICAgICAgICAgIFN0cmluZyB2ZXJ0
ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyOworICAgICAgICAgICAgYm9vbCBzaGFkZXJzTG9hZGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChjdXN0b21GaWx0ZXJPcGVyYXRpb24tPnZlcnRleFNo
YWRlcigpKSB7CisgICAgICAgICAgICAgICAgQ2FjaGVkU2hhZGVyKiBjYWNoZWRTaGFkZXIgPSBj
dXN0b21GaWx0ZXJPcGVyYXRpb24tPnZlcnRleFNoYWRlcigpLT5jYWNoZWRTaGFkZXIoKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkU2hhZGVyKTsKKyAgICAgICAgICAgICAgICBjYWNo
ZWRTaGFkZXJzLmFwcGVuZChjYWNoZWRTaGFkZXIpOworICAgICAgICAgICAgICAgIGNhY2hlZFNo
YWRlci0+YWRkQ2xpZW50KHRoaXMpOworICAgICAgICAgICAgICAgIGlmIChjYWNoZWRTaGFkZXIt
PmlzTG9hZGVkKCkpCisgICAgICAgICAgICAgICAgICAgIHZlcnRleFNoYWRlciA9IGNhY2hlZFNo
YWRlci0+c2hhZGVyU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBzaGFkZXJzTG9hZGVkID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoY3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5mcmFnbWVudFNoYWRlcigpKSB7CisgICAgICAg
ICAgICAgICAgQ2FjaGVkU2hhZGVyKiBjYWNoZWRTaGFkZXIgPSBjdXN0b21GaWx0ZXJPcGVyYXRp
b24tPmZyYWdtZW50U2hhZGVyKCktPmNhY2hlZFNoYWRlcigpOworICAgICAgICAgICAgICAgIEFT
U0VSVChjYWNoZWRTaGFkZXIpOworICAgICAgICAgICAgICAgIGNhY2hlZFNoYWRlcnMuYXBwZW5k
KGNhY2hlZFNoYWRlcik7CisgICAgICAgICAgICAgICAgY2FjaGVkU2hhZGVyLT5hZGRDbGllbnQo
dGhpcyk7CisgICAgICAgICAgICAgICAgaWYgKGNhY2hlZFNoYWRlci0+aXNMb2FkZWQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIgPSBjYWNoZWRTaGFkZXItPnNoYWRlclN0
cmluZygpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc2hhZGVy
c0xvYWRlZCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNoYWRlcnNM
b2FkZWQpIHsKKyAgICAgICAgICAgICAgICBlZmZlY3QgPSBGRUN1c3RvbUZpbHRlcjo6Y3JlYXRl
KHRoaXMsIGRvY3VtZW50LCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmlsdGVyT3BlcmF0
aW9uLT5tZXNoUm93cygpLCBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPm1lc2hDb2x1bW5zKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWx0
ZXJPcGVyYXRpb24tPm1lc2hCb3hUeXBlKCksIGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+bWVzaFR5
cGUoKSk7CisgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAjZW5kaWYKQEAgLTIzOSw2ICsyOTgsMTcgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6YnVpbGQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3QgTGF5b3UK
IAogICAgIG1fZWZmZWN0cy5maXJzdCgpLT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQobV9zb3VyY2VH
cmFwaGljKTsKICAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdSZWdpb24pOwor
ICAgIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorICAgIGZvciAo
Q2FjaGVkU2hhZGVyTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fY2FjaGVkU2hhZGVycy5iZWdpbigp
LCBlbmQgPSBtX2NhY2hlZFNoYWRlcnMuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAg
ICAgIGl0ZXItPmdldCgpLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgbV9jYWNoZWRTaGFkZXJz
LnN3YXAoY2FjaGVkU2hhZGVycyk7CisjZW5kaWYKK30KKwordm9pZCBGaWx0ZXJFZmZlY3RSZW5k
ZXJlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIG1fb2JzZXJ2ZXIt
PmZpbHRlck5lZWRzUmVwYWludCgpOwogfQogCiB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpw
cmVwYXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmgKaW5kZXggMWQ2ODRkMy4uMjFjMmEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKIAorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNp
bmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCkBA
IC00NCwxMiArNDYsMTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPEZpbHRlckVmZmVjdD4gPiBGaWx0ZXJFZmZlY3RMaXN0OworY2xhc3MgRG9jdW1lbnQ7
CitjbGFzcyBGaWx0ZXJFZmZlY3RPYnNlcnZlcjsKK2NsYXNzIENhY2hlZFNoYWRlcjsKIAotY2xh
c3MgRmlsdGVyRWZmZWN0UmVuZGVyZXIgOiBwdWJsaWMgRmlsdGVyIHsKK2NsYXNzIEZpbHRlckVm
ZmVjdFJlbmRlcmVyIDogcHVibGljIEZpbHRlciwgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gY3JlYXRlKEZpbHRlckVmZmVjdE9ic2VydmVyKiBv
YnNlcnZlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsdGVyRWZmZWN0
UmVuZGVyZXIoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsdGVyRWZmZWN0UmVu
ZGVyZXIob2JzZXJ2ZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U291cmNlSW1h
Z2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KQpAQCAtNjcsMTEgKzczLDEz
IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQqIGlucHV0Q29udGV4dCgpOwogICAgIElt
YWdlQnVmZmVyKiBvdXRwdXQoKSBjb25zdCB7IHJldHVybiBsYXN0RWZmZWN0KCktPmFzSW1hZ2VC
dWZmZXIoKTsgfQogCi0gICAgdm9pZCBidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgY29u
c3QgTGF5b3V0UmVjdCYpOworICAgIHZvaWQgYnVpbGQoRG9jdW1lbnQqLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJiwgY29uc3QgTGF5b3V0UmVjdCYpOwogICAgIHZvaWQgcHJlcGFyZSgpOwogICAg
IHZvaWQgYXBwbHkoKTsKICAgICAKICAgICBJbnRSZWN0IG91dHB1dFJlY3QoKSBjb25zdCB7IHJl
dHVybiBsYXN0RWZmZWN0KCktPmhhc1Jlc3VsdCgpID8gbGFzdEVmZmVjdCgpLT5yZXF1ZXN0ZWRS
ZWdpb25PZklucHV0SW1hZ2VEYXRhKEludFJlY3QobV9maWx0ZXJSZWdpb24pKSA6IEludFJlY3Qo
KTsgfQorCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7
CiAgICAgCiBwcml2YXRlOgogCkBAIC04OSw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAotICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKCk7CisgICAgRmlsdGVy
RWZmZWN0UmVuZGVyZXIoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqKTsKICAgICB2aXJ0dWFsIH5GaWx0
ZXJFZmZlY3RSZW5kZXJlcigpOwogICAgIAogICAgIEZsb2F0UmVjdCBtX3NvdXJjZURyYXdpbmdS
ZWdpb247CkBAIC05Nyw2ICsxMDUsMTIgQEAgcHJpdmF0ZToKICAgICAKICAgICBGaWx0ZXJFZmZl
Y3RMaXN0IG1fZWZmZWN0czsKICAgICBSZWZQdHI8U291cmNlR3JhcGhpYz4gbV9zb3VyY2VHcmFw
aGljOworICAgIEZpbHRlckVmZmVjdE9ic2VydmVyKiBtX29ic2VydmVyOyAvLyBObyBuZWVkIGZv
ciBhIHN0cm9uZyByZWZlcmVuY2VzIGhlcmUuIEl0IG93bnMgdXMuCisgICAgCisjaWYgRU5BQkxF
KENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisgICAgdHlwZWRlZiBWZWN0b3I8Q2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2hhZGVyPiA+IENhY2hlZFNoYWRlckxpc3Q7CisgICAgQ2Fj
aGVkU2hhZGVyTGlzdCBtX2NhY2hlZFNoYWRlcnM7CisjZW5kaWYKICAgICAKICAgICBib29sIG1f
Z3JhcGhpY3NCdWZmZXJBdHRhY2hlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAppbmRleCA1MTdiMzBmLi43OGYwNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQ0NDQsMTIgKzQ0NDQsMTIgQEAgdm9pZCBSZW5kZXJM
YXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3QoKQogewogICAgIGlmIChoYXNGaWx0ZXIo
KSkgewogICAgICAgICBpZiAoIW1fZmlsdGVyKSB7Ci0gICAgICAgICAgICBtX2ZpbHRlciA9IEZp
bHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fZmlsdGVyID0gRmls
dGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSh0aGlzKTsKICAgICAgICAgICAgIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyKCktPmZyYW1lKCktPnBhZ2UoKS0+c2V0dGluZ3Mo
KS0+YWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJh
dGVkOwogICAgICAgICAgICAgbV9maWx0ZXItPnNldFJlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9k
ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2ZpbHRlci0+YnVpbGQocmVuZGVyZXIoKS0+c3R5
bGUoKS0+ZmlsdGVyKCksIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCkp
OworICAgICAgICBtX2ZpbHRlci0+YnVpbGQocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSwgcmVuZGVy
ZXIoKS0+c3R5bGUoKS0+ZmlsdGVyKCksIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5ib3JkZXJC
b3hSZWN0KCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZmlsdGVyID0gMDsKICAgICB9CkBA
IC00NDY2LDYgKzQ0NjYsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRmlsdGVyQmFja2lu
Z1N0b3JlKCkKICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVyTGF5ZXI6OmZpbHRlck5lZWRzUmVwYWlu
dCgpCit7CisgICAgcmVuZGVyZXIoKS0+bm9kZSgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRo
ZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICByZW5kZXJlcigpLT5yZXBhaW50KCk7Cit9CiAjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAppbmRleCAyMzAwYWQ0Li5hNGI0MGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaApAQCAtNDQsNiArNDQsOSBAQAogI2lmbmRlZiBSZW5kZXJMYXllcl9oCiAjZGVm
aW5lIFJlbmRlckxheWVyX2gKIAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNpbmNsdWRlICJG
aWx0ZXJFZmZlY3RPYnNlcnZlci5oIgorI2VuZGlmCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiU2Nyb2xsQmVoYXZpb3IuaCIKQEAgLTIw
OCw3ICsyMTEsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZml4ZWQgOiAxOwogfTsKIAotY2xh
c3MgUmVuZGVyTGF5ZXIgOiBwdWJsaWMgU2Nyb2xsYWJsZUFyZWEgeworY2xhc3MgUmVuZGVyTGF5
ZXIgOiBwdWJsaWMgU2Nyb2xsYWJsZUFyZWEKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAg
LCBwdWJsaWMgRmlsdGVyRWZmZWN0T2JzZXJ2ZXIKKyNlbmRpZgorewogcHVibGljOgogICAgIGZy
aWVuZCBjbGFzcyBSZW5kZXJSZXBsaWNhOwogCkBAIC01MTYsNiArNTIzLDcgQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGJvb2wgaGFzRmlsdGVyKCkgY29uc3QgeyBy
ZXR1cm4gcmVuZGVyZXIoKS0+aGFzRmlsdGVyKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZmlsdGVy
TmVlZHNSZXBhaW50KCk7CiAjZW5kaWYKIAogICAgIC8vIE92ZXJsb2FkZWQgbmV3IG9wZXJhdG9y
LiBEZXJpdmVkIGNsYXNzZXMgbXVzdCBvdmVycmlkZSBvcGVyYXRvciBuZXcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmgKaW5kZXggODhi
ZmM4MS4uMjY5MjI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ2FjaGVkU2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ2FjaGVkU2hhZGVyLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogICAgIAogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdDsKICAgICAKKyAg
ICB2aXJ0dWFsIENhY2hlZFNoYWRlciogY2FjaGVkU2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9z
aGFkZXIuZ2V0KCk7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgU3R5bGVDYWNoZWRTaGFkZXIoQ2Fj
aGVkU2hhZGVyKik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVNoYWRlci5oCmluZGV4IDliMzY2NzcuLmZmNWQyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNoYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVNoYWRlci5oCkBAIC0zNiw4ICszNiw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVkU2hhZGVyOwogY2xhc3MgQ1NTVmFsdWU7Ci0gICAg
CisKIGNsYXNzIFN0eWxlU2hhZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVTaGFkZXI+IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdHlsZVNoYWRlcigpIHsgfQpAQCAtNDcsNiArNDgsOCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1
ZSgpIGNvbnN0ID0gMDsKICAgICAKKyAgICB2aXJ0dWFsIENhY2hlZFNoYWRlciogY2FjaGVkU2hh
ZGVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIAogcHJvdGVjdGVkOgogICAgIFN0eWxlU2hh
ZGVyKCkKICAgICAgICAgOiBtX2lzQ2FjaGVkU2hhZGVyKGZhbHNlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119672</attachid>
            <date>2011-12-16 14:34:01 -0800</date>
            <delta_ts>2011-12-17 10:11:09 -0800</delta_ts>
            <desc>Patch V4</desc>
            <filename>bug73317_6.patch</filename>
            <type>text/plain</type>
            <size>83602</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNjFkZTRjLi41MmIwOGU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTIt
MTYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gQWRkIEZFQ3VzdG9tRmlsdGVyIHRoYXQgcmVuZGVycyBjdXN0b20gZmlsdGVy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTcK
KworICAgICAgICBXZWJLaXQyIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgV2ViR0wgZmxhZyBpbiBsYXlv
dXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UuCisgICAgICAgIFNraXBwaW5nIHRo
ZSB0ZXN0IGxpa2UgYWxsIHRoZSBvdGhlciBXZWJHTCB0ZXN0cyBkby4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvZmlsdGVycy9lZmZlY3Qt
Y3VzdG9tLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0ZXJzL2VmZmVj
dC1jdXN0b20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvZWZm
ZWN0LWN1c3RvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3VyY2Vz
L2NvbG9yLW9mZnNldC5mczogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0ZXJzL3Jlc291cmNl
cy92ZXJ0ZXgtZXhwbG9kZS1kZXRhY2hlZC52czogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0
ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93azIvU2tpcHBlZDogU2tpcHBpbmcgdGhlIHRlc3QgdW50aWwgV2ViR0wgY2FuIGJlIGVuYWJs
ZWQgZnJvbSBsYXlvdXRUZXN0Q29udHJvbGxlci4KKwogMjAxMS0xMi0xNiAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAgQXVkaW8gZmlsZSBpbiB2aWRlbyBl
bGVtZW50IGhhcyBhIHNpemUgb2YgMHgwIC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9lZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9lZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDhiZjQxZDkxZTA1
ZTE0OWE0YTM1Y2I1N2I5YTBlYjdhNTliZTRkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNDg5
NQp6Y21lSE9kcHkoYWAkckR0VHNpZVBtZ3BjdTxhfTVwc1lFQnFYLT1nY2hwQ01ANG9ONUYmYEZV
fmlsO302NmZxa3IKemJZaTR6blFpMi1pT3AjPCU7eCopZENLPHNlKmdLc1VjY30yYHUqfHEqWDtK
Vz9fSm1YZFNCUHx6T1FsQj9VMGo8Cno8WnFIZkxQOWRtYH1RMFc1P1pBdEJxWlhvU3t6dShpTWtM
MHlsakl6ZGNYdEVvQyp3cU1UUTkocFdmeH5aKVJyZAp6P3s5MnF2ZVZxZUZ3bEhneiVLTENNZ2Y3
UjAqd3QjNj5tSCQxNVZMNj4pX3ojP0JKbH5iez1+QVowSVE9cD1qYU0KelcwYTY/SHc5a3JzbDNY
OEd8UyslWWkhU0NnJEVzbEozT2NmSVpAeTRgUTVhMzxHJFJJRno9ayEmMihnPyNNZDthCnpXZVp8
VCFnZ0xsYGZDYV8/eHN3dWc4JHNwRTFNM15abVExREhGNFE7Ylg2VDJPX15ze1lAclZNN1M1bVo+
e2MrNAp6USNnTHF3ZEt7fm47YHx0dzZMJDVnV2xwOW0kWFl0YCpvZWJhXjI1akNhUHktSENqWEEz
QER8SDd4KlJUamBaM3wKekg3KUd6VTJpckdvR2QpK3tUYVQjenZ0PmlwMyR5WD9GVjVWckpgI3pn
VXo5ViRwaERLWHh9fDt2SjBIRT05TlQ/Cnp6MiQrSVZEbyF0YCk2YmI5bXh0cVRYZGg/MWZeTSpJ
VVg/PjRzdmBaSnYqcmhPUFBqTHsmOU9XeDExX31CUD9nYgp6cHwxRkFXS0R+TmkwZE9sVXorVjhE
d3kzYl5DQ1A8MmE5KGg/YnxuM3RrdU8oOFN1MEI9JTtlQlBpfFlNcXFleXIKejs4PXhtPS1DbWVS
YWJMSHk2SEB9bzBTRDdqVjh0P1g5bnFSY1NPZ0dUM0U5T19BPWArY3cqS3FpTlJnQXJRM1FFCnoh
OHtDYGJeaDlMJSsxTk09TmRQQEZ1aVZDeClYXio/SXFmOy15amEjdD1lYVFBemR3S1lrIXUjdzB9
PEVuP0w2Ywp6RHM5LWJ8SXckakBNQUkwJXpMYzEtbnZVeWJCY1prayR2Zl8jUFdMZmE8LXE3UHR3
N3NIej1tSSlEe3lDKF9iV3kKeik8MFhIcW5hNCR8Rn00T3pecmFLUzJlNm1ZVn4yPndjKUNMek5n
OzFVTzBAOEcjJHgybiFPayloMSs/WHAlYjt2CnpMJVJPeXIwP0FKUClYTlI8eVlCX3BXaytuJWgh
SExJPTkyTkVkT1lHPiR1TFJnUCtFTlVOJkIxKnwpMDlYQnMocAp6PTN6SXhKaCl+dC1SbVpgTUkz
UXFZfi03XzBiVXs+e24yTSZwPkIwSz0pODlORGBsMnJ7S2lTRkcxZUFSMyUlbEIKek8ybD50alRJ
WXRqLWs3PT5LfDZjLXAoTHluWUJzKGJOejtBUm9FKHxgKWEtQzQrRFNTVWshSF5UQlE/cUQwQGNp
CnoqMkxQMlF0PytSXnNpPT0xKVJ1cSlzdXdZbS1mdztjMUc+ezNhWWZxcHMlVnErVCR+Rjc2UC1G
KiZaPmYlNiZacwp6R0NNQnJ5UD5ISTIydzZHanZRSzM4U2xHZU9wJk4qb25NPWpXa24xdXcrWnZG
UHFURnxCZj4jbThwM0Z+dk0mWD0KektmalF1THkxeisjZiMha3Y/WTY5Nit3MGkzMjZ5QUA3YUFV
VDl7Njl5YEMyd1gqV3JZUmtNbisqMnVeTUpLUzhDCnpzPUx8b21HRX1RVmAxSCgtVXxDdm5yXyp9
Q31DQjVWdnZMNGk3KiQhP1lrbSQoNTd3Y0R6OXlLT2NnOE5eWk1DMAp6U05rJHU5bEQ2KkhzPVIj
clY9eFB0QEZTXmF0THhBP0RTJHNwOUt9VWN2Sl9NTjUhJXE7MUkzJTRlKWwyREpfcDcKej9GSiZF
dEwzJThOa1lRRjUyNDlUPkg1KCEyRHxAJGBgM0RNZiNnOyN0VVVpQWRCUlIldjdpcnNWQn4qbmBN
Rm99CnozUUZMZVh3NTtlQFlrS2M4fD5qOWxxQiprZyNTKGBTJTFBN3hhTkFWKVlATWtGMFdNeT50
Mih0TDFKZHBWdn0kQQp6JFZGTXRkYlMxbiRZSURWenFZX0dTZ0I8YGs+dilARiFwZ31NMn55X18/
MDhCSjxfSWJ1eGRXTnR6TkBaQzNiUV4Keit2JD08LTc3aFNvVn5LU1FpRH47aG9aNjxRQlNFYmxx
ZlkkWFJhUDR6QUFRQ0c9fDNoYTwhazhFYGY3d2dnbTVfCnp6USRXdyMxa0p+ZlZlakRYbzIpUkhj
My1+dkptTFg5a0ApS2Z5Nmg9cSpmeV9PQzROeD9QWk8pcj9BcFU4O3tBeAp6VEMrWnd0NXF+TFoh
Q2NEe2BDQFA9b1dwPjd6ZjcmRj4mfGx2b2xSJG0qcnxIM3IhTjFoLXN+NHRaMmlrUHVZKmcKem1a
MWlgRWxDbzJya2t+RDhBSCs0T3I2M2NycH5DUHp8enhnZy1LN0hoeUR1QiYmPiZJd3JWOWYqVUpo
MzlzPE5ECnpXU3p5JkYjZFFCMz14c3MyZjEwe3p7azhQTT9+XiUmS185LTgjPVItTUU9OTlyVmAy
O1pkTmB0TldEUUE5QDZDJQp6O3teU3hoRWFxfl9MUWJ8ZDRaanZTLTtzSnFTe2VjMylJYWlHajt1
V0hOP3NDJlhtQUM4U1EpN2xDaSRnK3ZlVlAKemQ2aFdmOUhIfVM0UHU7ODh0V20mMDlhdSFDVmFV
LU5nUk5edUM+Pl5oVz5ge3JmYDFgbk5hSjZTdFpPMytudTJ3CnpYc21qXyRHTVJWam1CXjFKZT9X
MXd1SGVAN2tYcVh5OFpQczY0QHNfSXBwJVBoSlo8MkBlaERtLURUczB7dnRNIwp6KEdyaUc0clh1
U2QrK3g9Tm5+ZWxUa3NtYnRGKiZsO25CNi1rQUQjc2ZMS01wRnpOZDIpSlo7ek1Qbjcqel9ELU8K
eitYUjtPTl5SOURQS2R3RGszaDE5bV9udzhrPFRAT3I3aSY0R254ZkRkPmFhI2d2SXtEdGlQY0J3
azQoM1VYSm9ECnpvQHQrTDdxPjdDYj5lfHlMI1NCaipNP1U4eTlWdVFCPCl5R3RSOW5BSzEybiVT
VDJ8bTJpPEFHQ3xQN3RVUGdrPwp6anY3TXdoaG5PeTYjMmJIYmErKXVfJklFS09TcTNNQj48ISE0
X1ppMnZ7QnxfQ0NMdzgtb1d+e3BofXdxQyFrPzMKenRnSkc0eHxFd1prb0NmVkRTSGtUaUZOTnF2
MT9me0p0bHkkUFhxTio0YGNqI1QlN2U+SWxIRE1JUS08UHlHWSlICnp5Nyh6dEJESSs2SnxFTG0t
ZjNgKUxuPkpsRWZMZ3gjXjtgWj47NkRCQE9hWkV6fWU2b2ZaMW9DZ0FOTEN1TSZ2Sgp6aiZGZWl6
PyEtTUhOd1BHUyhsSFFwOWZmWWdWTDBkMEpDIy0zekleQkUwPGMmRkI2NzQzWGBQTTxeKmtVMGc4
I34KempoPEEyZlU3OH0+O1EzcExzc0g0R0JqKnt0TTRuNnY4Ul53OTs1WWpENTJrUkRyKXJMNyF2
KF5YUHdPZTQxY2wwCnpqNUk1VGJHaDY+aFo8d0BiSGwyTyNAYT5NOV9PbUdeKSVgcE57RldyQEwj
ZTA0Yys9OVNPWGVURDttUzRnV25FLQp6Zng/ZTRnZnNsY0lESksoVjthOSMhU0ZSOTR0Ujhwa0Zx
NiMpTEI9JXFqZ3IhcipHcTVaV3xWZmtjSURlX0xzWFgKejxLbXxWQFclV3pNdDlsYzxUWitKVXxv
fnc1V2Q0SW1qVWMjQlQ+JSRaVDB7SSpUfDUyYEpsSU0xanlfXzNSJDt8CnooPipzSkYhbXw2cnU/
KGR0PV82Tj0qR19CWl9fO257IWYjdGheZiUjcHRMSTBXM31eeTg9YmBYaC16NHNZRWY7IQp6T290
Yjd7aE1DWjJIfU05eXxpKXsyfl9QO0t4b3NkPH1wV0hPU2xSKXBlNyVCNSZMYlMlcUMoeDRZfEdr
I0pEKX4KemZKS0ZBU0xmajBgdzNwVEc5JjZYaF5eNj5scXl0UDkkcC0hWT1pSV9rQ2VkazdWR01Z
Uk8wdmo/Y2BIUGxhPHooCnoqXklPeFZZVUtQa25pWGdOTVZtZ2ZONGwkK19LWUpWODBYcVF0PClu
OHYreiUwWGg4Nzl3eSVhbkc7ODAoQFNNTQp6I31CbX40WVAlUiQhbXQ4I2l7bXFCSShlQDQhVFU8
P190byVqdFJ+fj5WQE95T1E8bDM2aHcmfSpgdlYkWVIkSCUKejsxNU45ZF5UTSkrRnk1bkhjX3Zq
WnxXYEZ1d2UyPVg5fm93eChuN2tGRHM1eW1xYz5hQnotNjlgJmt0LWBSTVNMCnpnM0t6clFwPDt8
cE03fDsxVXpYcykqeWg2Uj5aSn45Kj5SRFlrWl4hUjZAVTxxVXBSQVNoRkp6cGdCTlFEYElMVgp6
dEVBVlApXzQyXipAJWJYa24hT1NeTTE2TEwzM3RDTXEoTGVHNmlvNWlBOHdQO15YSTwlUHZnM2d4
RDs7SWN8Jm4KenZ4UkttX29iY15pPjVRWWRjenYkKH5ublpCK2ZsNF5fOX58UHZBPTVQNEt5MUtk
Q2p4ZFpgX2FRVTdwJGFUcjFBCnpKYmp2ZEokQWtkJCp7fWs5ayFafVdtNnN6eDxIcHM2VzE9clVn
dEh7N3wqZXlrQnsqdmc+c21MOFh2Pz1RUmxlcQp6VEVaVi09MiVRSW9eMXtBO0lgc2l3T3luM2Iw
U3VXYktwdk1tfU5CUGVyRnYoSn59amU9P0tMRCEpPVpsPFRrMy0Kel5VUCV2bVl5VnJFaUtPQnRz
bzB2QjR2SlZHRFg3a3NofDJkKlBBVUQrMEM5e0pXaChBJHRfVXplSzlrKmRzNT1fCnpsakQtemxh
N2NRTGRINkRaXmJ9cTZ0ViZCUS1RMkRNaT9rJjYwTEF5bW45JilmZjsmWnt5ZFZwSFNSOUdFMmg2
KQp6ZzhlKlhaXkZWU1lEcFhxN0wrKX5nQU1mIVJGeytETV5BQXRIST1NfTwwJnBOK21yPm1nNU1f
fmJEZnRZRUE5QU0KenNTaC1yOGhQUll6N28wejJVN1BfcXNYYGBLam8hPmpyd245anxrK2g1MEpZ
fGxue3FzRGhUJDtndkxDQyplWjM0CnpvJXZRTDMoVkp8VmU/YWlaNE58N29GanhpXnpLIz4tWD47
S2xvTFphQHdfZV5ReXJZbWlAYExaV35oTnw/UiZYdAp6cSttYSFaSWxFakhNTCp+djhhaE9IeXBR
Mi12TWY2MWFZVDc3K2tJWjh2aSg8cyswQVE+S2lrQj1kYWZVKXxYQ30KenVUNCtGUXRINSNDRVFG
RUVGbHIlaChkZm5IcVFCZGokPCt4WDd6RjRYV2pSXnBNKEo0XmBGeVVjM3hOe1NGZHQoCnpBfU4k
SFM4KnN3RDRBe2BBSl9RIU1jTF5Udl5VbjNfOyQrPFFLKGl6XypicVI0bz1BcDlVMlFBLXJgQ2te
ZDdqMwp6aEQ7cmRwYlVQUHJESCRnRyFqQGoxZ254YmMxd3FnRTI0bXlmRGJeJmViITF5MVZzKGJN
ajF0aVY+I2p6ZFpuYFkKelVMSH41JGxSc2Q9YUhsMllyKmJ5OFUza2M/KDUoLT1TYHktT2ghZDhE
dGBQJGV9VVd5MiNMI0BPRWNTMWxrNHU9CnpxYihZJU5FbzU/Vmk/fjgwUWdsaHooRG9XVXIyZXEt
T1NMcCZUQ1NGZSMqPXFpa2szPXhsZD1sJkEyUTFzaj4wWQp6b3ZST3ImKD80eFA+THNSRDd8OCtL
MHYrbndqeXhyc29+KnQ/NDQzR2RLUDF3SkdMKWlhJD12aXg0VmtGQDk/enQKeiUjU0tMWSRpYCho
eXtmfFFGITN7SU8pMEgjXytoNXREO000WFVofndBRGtRSihPZVA9Sj0xalVtV0VhKjhhJGJpCnpP
QGBwYjFSQ0V4RmhDdj1odVdSWEFTYSYjNnl4QWNjRCg/MSt5TCUwYihaczZ3NFhPbkgodzU2Sz5U
Zk0wQWxKSQp6IXU5ejRRcHMqQVN1JD9PaCZRZTJ5JlBaJGcxV1lYQEM9KHpULSptNEpNTEJkQ0N5
Ulo5OTl7dnNmbERCRm5HZm8KelV9aUwhRVBpQlVYaiY7WmtoNyNuJHx8d1VzYXRsNXJCZysma2NH
KSZUbm9kU2NTcDFKITMxfXo8cDVyVG1BZlV0Cno0NlllQEhMQ3pVVGFpX09XeGl7aXVPJjM8JjFk
Vis+TjdgfChrJjlFaGRzIU50ZHMtQT41SmBsKjIpfTtpdFArMAp6RTR6O1E/czdwIUpHKldANj1X
MHE4T21kaDY3WTI4TXApRzZRPWtPS2RSIXxPeVRsdE0jTEhuS01uNTVjM1M7SkcKemRDdXNnUWYx
ZiVmbGowQXI4UjN1SWFISEgyWEt1QDZ7KDZWIXFwSjt2cl4wfiF7ZWVwcmpGIT9YWER6UnlDNzl9
Cnpuc2p9PzkzRzBRZU89RGNBSHQ7RW81NG9Ldnk/cSU/fXYhRC1BI0REMEE8U3JBZzwqNDQpXihf
bUB6c0w/QyVEaAp6R3I8ODlmaTxSUXN0Xl5XcDV1OUtQbnc1TylyYS07OF82OT9hYzBRUkVZbGVu
eF8zVXgjZm1oKT91MCVFYGB2blMKekJuMiZBZyRQMnRBbUdgSS1RI3loPEhTamJ7U0UkWTF8WExh
VXQwMGJuTDBnWEgqaUg/cnl8ZSs0M0I4ZDR2d210CnpDOGN4b0klelZFVylhJVY4cE5vP0I3SEhX
ZyE+MlB1fSF4e3p+QHRAYkwqcC1lYS16Vys0NTxHWSZkVUp1ODx3Ywp6Y3kxeHIlRyp5JVNGJG93
K180PylJZ2F1TUVsdElzbGB9flBiT0ktfml2PlhxOCkkVjImOFRXeC1UbVZnaChnVE4KemlBOyp9
MUcxNWI+VXhqaWpNcTFPSzJ7NiVBO2JORXU2c05QPE1WR2RiMzFVPWN8WkNpcE1Fdig+KzlVV2Rx
P05nCnptSSl7PGYmdU98bkRnfjIwIXppQjNZbXYzWkptfVlWLWdyOGxGUCRRK0QzRW5fTngtUDxy
TFhHRktiT3M9fEZnXwp6TmZnRWtecm5LSHMpUXl4MWU0ZUk0eXFvZCRtQ2dKSUc3P0J7VjQ4STJQ
dC17cXE3ZEBZTkt3K3U5fDtjMWYhZkIKekVAKVJuUFA9LUJWaDU7PmNEKE9zNE19ekd3MGZldFdv
PzlJNnZvU3JIYD5XVWF6M1VNIVFgRzM7K05wIzg0aF5QCnpIIXwqRzJQUyV+OzlgZSoxRk5oRWhS
RVg7Y2gqcX5jKk1AU00ybEg0dHVIWEdLcUBhVGlaQHNVbGxAdWomazBXPwp6eSh4ZE5uWGlIU0NC
O20rPlh+e0VhTlBqO0QjT0lgNkhJNDIyRVNHWko2TF5lWiglNmRtP0ApUykyVUtiV0JOTkQKekdA
NE5LWXh8LWAqfkJSYCZCZ3ZMeSN1Y2B6cEk3JFo+KlZVWCg4MHJ6X1o4UnFTUjllR1A1Tm1eKGFK
cGV5eVlMCno+Ml9sfFl4eV97IS1Zc0FHaTcyMyhzc242UTY2MTMtKlNxMkkje2x9aiVfYTJ6IyZh
USV9QWZRSG42RkhrSS17UQp6QmNDb0g5JXpuVkE+QnV8Nj48KS1RJXIzUjlZTlZfMWQ3SCooSiZW
ZyhGTnN+Kyp1OzBAZWpScGgzR2JgQERTKT8KejBZcCNpXnkkOz93ek1vNE1SUGM8ZXp0WEstWjgw
WkwzQn5eREojWjt1WTs0QzZhaV5eQjhtRCRmRGNieSFOTW1DCnp2YnpQQXlweGtlJldsQ29AOD9H
IUk4N24qZXt6XiM8eDZIcmc2cHspekF6TDlfJk8+M3d6YmJYamxZO0kxREspOwp6bz4zNGUyJk8t
N0FzXmNYTmxpIzw+ZXk4UFc3MlkqT2I0NlpeKmNoT141WmE2U21fMFA4c25VOUd6TWw8a1NwYTIK
endUJXduNyE2dWpueGVoVShyKHRYLTIyUCklLXcqKi1FZF41X0E8R1hIdnhDe0VVanw+XyhkeHZO
I3kyNjliPisjCnotQDIoVk5ueT5XLX1zPkgxa0MtMWp0TD9FSDMtPEZqIyg5ek14TTM7RX5TSWJa
IVhqeGdqbGFfQE1ZY3w/U2NpVAp6cHlJR3Aqa0hZNFk9bGhQYXgkTV45V0FsaD19LXh1Kmx6WTw7
Y2FWK2IoU0FsSnRYZjJLMGckK3BPM1ErNVh5QiUKem8pP3liMGhTZE9gLWhKNFlxdShiRUN4LXco
KzBkQUlGU3hYJGZifEUpOTY3RlNlaXhgdGpudiYzOTRoSy0xaSFvCnpZYENRX09TOXxwMEFFKEM2
JGxJKTNMKEhuQUw0cEtvMWVwZTdsOWpfTkx3bDJTOSNoQVZFJXlie3Z4b1heNWU/Wgp6RyRsQX1T
TzZ9NjNvUTY5Snx2PWhmJChaYSMwdzRea2JvM0srVn18R2FNbDhPYDByKlZAMHokc1I/NHtLZCMr
UXcKejJ6RTRWSjNLdHRFQUZgJj15fU5La3xVQkhlIT9tSmd+MDhYWWZ0T3JuUmJ1V2VLbDNCQ20p
USs9eGtBMl9WYjx4CnpQXmtgdkdMXlAweUlJS3NLQ353eyZYSTVKZGNESGBeTXxVNEh6WTxwdWFq
MHwrU3xlfWwxRVoqPClyfnsjR24hNgp6eVd5IUNvRUhlQUN7VUModiFeNWxQZlJxTHQoTzJZSGF8
QlY2R3x5ZlhDfn4lRjklWWs0M01qPj88WlJMPmd3UUsKekFoSVc4aTJRTC1sTHJ1dXNfRDNNZD16
ZDBXNHdkejxRbCYySCpeT3krMCNZZTJnfVRFM0lhNlF0dmpgMHtJam5nCnoyZkN6UXFjUl8xITs9
OFFMQm5CUXtJZGZBaFd4dXA7N1IwUU5VXmwlY245JWw3P1BmKnBHVmtXVF5rWXNgWjN8eQp6TCtj
fVZLSXhlaXBJRjJpI0RZQTtmQDV0RmhTOStiRyNPRyN7RnBmKTk+JHVeLX5NUz5DMCo9LVR9TD5f
TSo4UFAKens2fXtOaXZVQDtkKjVEeFdPZjcjS2VfcUhoUl4yQktyKmtwN19eNlA+MlY7THc+JFR5
RVc3KylKMGBqTCtiMHk9CnpvTypTQWx+dU47OW4jdGEkQEZHTXk1P0pOaCRTNUBKKFN2IVg5M2ZO
R3NlR0c3czA1dzA9Y34wKyszLT0rPTJ7Sgp6R3QlRkdCT0Y3XkNTXz9lRV4zSEdVaW9RVzx7cUZM
Sjczci1Gb31AX3MmVDNVZVZPbEl0KmJ5YS1uPSFDVXljOUoKekRvaUBJdVM9RitqYyk/IWBWU3By
aDQ9aUhne3o0QzdGQDk4SHJfZitlQDdWWiNXKTMrb2t7JW1mKj57I1hCNVJhCnpVPzZRVFZLO3Eq
PGBGbVVKc0lsK3goSiReZHE+RD93T2pCVz8tKyo2YCt1QSNZZUo7ayo/WXo+RzNhKUlXMCFvcAp6
SH50RCp2TmJURmRVeHhOR29PQD8wOCNuTD5DQUdFNSpDUjg7JWFeSnt4OE09Xm9SeE1rI0pHem15
Vk95JTUoeiUKelFeJERCOUhQbmpGMV9meTJ9dkJRYilZS1k4ViVyIzV+bn5zZGVEQTY3SUxPKSVt
ek1VUSM2az9WZ1VvVlpadCpKCno1XnV7MnJTKzk3UGV8dSs3QygwdiE4Q0wyKUdYT352aj1IP0tW
KTd7eilZJnxYRmR1aDAxRDNRQDlnSElGYSk0NQp6OWVpZmhGUTl9KSZIXlp5OU5yKiswdW4kV0Bz
ZzxrM1ZYci0pRzxGc285YFBoJD8pP317O2dLT2RaelRZYCZzO2EKelRNSU8lZVZJSzE3VlFTJmw2
aTlqLSFYLT9aczJSOFhKejx+WjIlbHdJcHpvN1NGcXRyKWZMfFNVRTt3aklyWGROCnp0UTNsMGg0
cF8/RDlHY0tFK0hZTXY+JCY5dXVfKStFd1BlY0VCVXEzWSp3MWhpWW9tfWw0cV9jX01jYWltQ21w
ewp6V0xReU57e2BpPnFQQUFsKjI+c0pZbyk+YjhmfnNMbjNWPnpxUEFBbCoyK05xP34xdDY4Q0Uq
TyVDfCRtejg/UG4KZShpIUZ3azFhfUB1R3VfUTJtQS05a2g5flZKcih3VDd5Ym5wWXVAWXQKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVy
cy9lZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9l
ZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xNjNiNGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJz
L2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKyAgICAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtY3VzdG9tLmh0bWwgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmZiMTRlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
c3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxpbWcgc3R5bGU9Ii13ZWJr
aXQtZmlsdGVyOiBjdXN0b20odXJsKCdyZXNvdXJjZXMvdmVydGV4LW9mZnNldC52cycpIHVybCgn
cmVzb3VyY2VzL2NvbG9yLW9mZnNldC5mcycpKSIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBu
ZyI+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgncmVzb3VyY2VzL3Zl
cnRleC1vZmZzZXQudnMnKSwgNSAxMCkiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgor
PGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJ3Jlc291cmNlcy92ZXJ0ZXgt
ZXhwbG9kZS1kZXRhY2hlZC52cycpLCAyIDIgZGV0YWNoZWQpIiBzcmM9InJlc291cmNlcy9yZWZl
cmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCdyZXNv
dXJjZXMvdmVydGV4LWV4cGxvZGUtZGV0YWNoZWQudnMnKSB1cmwoJ3Jlc291cmNlcy9jb2xvci1v
ZmZzZXQuZnMnKSwgMiAyIGRldGFjaGVkKSIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+
Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogY3VzdG9tKG5vbmUgdXJsKCdyZXNvdXJjZXMv
Y29sb3Itb2Zmc2V0LmZzJykpIiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY29sb3Itb2Zmc2V0LmZz
IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9jb2xvci1vZmZzZXQuZnMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJkMDczNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY29sb3Itb2Zmc2V0LmZzCkBA
IC0wLDAgKzEsNyBAQAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2YXJ5aW5nIHZlYzIgdl90
ZXhDb29yZDsKK3VuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKK3ZvaWQgbWFpbigpCit7Cisg
ICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCkgKyAwLjM7
Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtZXhwbG9kZS1kZXRhY2hlZC52cyBiL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4LWV4cGxvZGUtZGV0YWNoZWQudnMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc2OGEzYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4LWV4cGxvZGUt
ZGV0YWNoZWQudnMKQEAgLTAsMCArMSwxNCBAQAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
K2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247CithdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOwor
YXR0cmlidXRlIHZlYzMgYV90cmlhbmdsZUNvb3JkOworCit1bmlmb3JtIG1hdDQgdV9wcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7Cisg
ICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiAoYV9wb3NpdGlvbiArIHZlYzQo
YV90cmlhbmdsZUNvb3JkLnggLyA0LjAsIGFfdHJpYW5nbGVDb29yZC55IC8gNC4wLCAwLjAsIDAu
MCkpOworICAgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzIGIvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZDhjNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3ZlcnRleC1vZmZzZXQudnMKQEAgLTAsMCArMSwx
MyBAQAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRp
b247CithdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworCit1bmlmb3JtIG1hdDQgdV9wcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7Cisg
ICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiAoYV9wb3NpdGlvbiArIHZlYzQo
MC4xLCAwLjAsIDAuMCwgMC4wKSk7CisgICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IDFjMWY3MjcuLmViYjYzZGMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9Ta2lwcGVkCkBAIC0xODksNiArMTg5LDcgQEAgY29tcG9zaXRpbmcvdmlkZW8tcGFn
ZS12aXNpYmlsaXR5Lmh0bWwKIAogIyBXZWJLaXQyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVy
Lm92ZXJyaWRlUHJlZmVyZW5jZQogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyMTk3PgorY3NzMy9maWx0ZXJzL2N1c3RvbS1maWx0ZXIuaHRtbAogZmFzdC9jYW52
YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbAogZmFzdC9jYW52YXMv
d2ViZ2wvZ2wtdmVydGV4LWF0dHJpYi16ZXJvLWlzc3Vlcy5odG1sCiBmYXN0L2V2ZW50cy9wYWdl
aGlkZS10aW1lb3V0Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdkM2M1OC4uNWYyNGZm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMTEsMTIgKzExMTEsMTUgQEAgU0VUKFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKIAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclNoYWRlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rp
c3RhbnRMaWdodFNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxl
bmQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RHJvcFNoYWRvdy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNTIzMGIxLi5kYTdiNmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsOTUgQEAKKzIwMTEtMTItMTYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hp
Y3VAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hhZGVyc10gQWRkIEZFQ3VzdG9tRmlsdGVy
IHRoYXQgcmVuZGVycyBjdXN0b20gZmlsdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTcKKworICAgICAgICBVc2luZyBhIEdyYXBoaWNzQ29u
dGV4dDNEIHRvIHJlbmRlciB0aGUgc2hhZGVycyBpbiBHUFUsIHJlYWQgdGhlCisgICAgICAgIHJl
c3VsdCBiYWNrIGFuZCB1c2UgaXQgaW4gdGhlIHNvZnR3YXJlIGZpbHRlcnMgcGlwZWxpbmUuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY3Nz
My9maWx0ZXJzL2VmZmVjdC1jdXN0b20uaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRTaGFkZXI6OkNhY2hlZFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRT
aGFkZXI6OnNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTaGFkZXI6OmRh
dGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6Ok1lc2hHZW5lcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6dmVydGljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVz
aEdlbmVyYXRvcjo6aW5kaWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjpw
b2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6cG9pbnRzQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6dGlsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzaEdlbmVyYXRvcjo6dGlsZXNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2Vu
ZXJhdG9yOjppbmRpY2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6
ZmxvYXRzUGVyVmVydGV4KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6OnZlcnRl
eENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6OmFkZFRpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRNZXNoSW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6Z2VuZXJhdGVBdHRhY2hlZE1lc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNoVmVydGV4QW5kSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6Z2VuZXJhdGVEZXRhY2hlZE1l
c2gpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkUG9zaXRpb25BdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkVGV4Q29vcmRBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkTWVzaENvb3JkQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6OmFkZFRyaWFuZ2xlQ29vcmRB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRN
ZXNoVmVydGV4QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjph
ZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hH
ZW5lcmF0b3I6OmR1bXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1l
c2g6OkN1c3RvbUZpbHRlck1lc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVz
aDo6fkN1c3RvbUZpbHRlck1lc2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyTWVzaC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZp
bHRlck1lc2g6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjp2
ZXJ0aWNlc0J1ZmZlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNo
OjpieXRlc1BlclZlcnRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjpl
bGVtZW50c0J1ZmZlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNo
OjppbmRpY2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6bWVz
aEJveCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjptZXNoVHlwZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6ZGVmYXVsdFZl
cnRleFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJTaGFkZXI6
OmRlZmF1bHRGcmFnbWVudFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21G
aWx0ZXJTaGFkZXI6OkN1c3RvbUZpbHRlclNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0
b21GaWx0ZXJTaGFkZXI6On5DdXN0b21GaWx0ZXJTaGFkZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmg6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Om9ydGhvTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9t
RmlsdGVyOjpGRUN1c3RvbUZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmR1bXApOgor
ICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvQ29sdW1uTWFq
b3JGbG9hdEFycmF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdE9i
c2VydmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
aGFkZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0T2JzZXJ2ZXI6On5GaWx0
ZXJFZmZlY3RPYnNlcnZlcik6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzV2ViR0xFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0
ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmZpbHRlck5lZWRzUmVw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUNhY2hlZFNoYWRlcjo6Y2FjaGVkU2hhZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVTaGFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZGVyOjpjYWNoZWRTaGFk
ZXIpOgorCiAyMDExLTEyLTE2ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4K
IAogICAgICAgICBBdWRpbyBmaWxlIGluIHZpZGVvIGVsZW1lbnQgaGFzIGEgc2l6ZSBvZiAweDAg
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggODY2Y2Q2ZC4uODRjMDNkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNTM5LDYgKzI1MzksMTAgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9S
ZWZQdHJDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1JlZlB0ckNhaXJvLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clNoYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rp
c3RhbnRMaWdodFNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgXApAQCAtMjU1MSw2ICsyNTU1LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdo
dGluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlz
cGxhY2VtZW50TWFwLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAyOWMzMDg4Li5lMGE4OTM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKQEAgLTIwODAsMTEgKzIwODAsMTQgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
aCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCBcCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmggXAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvbmVudFRyYW5zZmVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0
cml4LmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmggXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmggXApAQCAtMzIzOCwxMiArMzI0
MSwxNSBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWFNMVD0xKSB7CiAKIGNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9GSUxURVJTPTEpIHsKICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCBcCisgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBcCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcCBcCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBcCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBcCisgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBcCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggMjliNjFiMS4uNGYyNzhlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzY2OCw2ICszNjY4
LDEwIEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlRWZsLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ludFBvaW50RWZsLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ludFJlY3RFZmwuY3BwJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2gu
aCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJT
aGFkZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclNoYWRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAnLApAQCAtMzY4MCw2ICszNjg0LDggQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVy
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZp
bHRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVz
ZUxpZ2h0aW5nLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpZmZ1c2VMaWdodGluZy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGJhZDUzNjQuLmMwZmVlMTIgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTYxNiw2ICsyOTYxNiwy
MiBAQAogCQkJCQlOYW1lPSJmaWx0ZXJzIgogCQkJCQk+CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcQ3VzdG9tRmlsdGVyTWVzaC5j
cHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJNZXNoLmgiCisJCQkJ
CQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIgorCQkJCQkJPgor
CQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXGZpbHRlcnNcQ3VzdG9tRmlsdGVyU2hhZGVyLmgiCisJCQkJCQk+CisJCQkJCTwv
RmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcZmlsdGVyc1xEaXN0YW50TGlnaHRTb3VyY2UuY3BwIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+
CkBAIC0yOTY3Miw2ICsyOTY4OCwxNCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxG
aWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcRkVD
dXN0b21GaWx0ZXIuY3BwIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcRkVDdXN0b21GaWx0
ZXIuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEZFRGlmZnVzZUxpZ2h0aW5nLmNwcCIK
IAkJCQkJCT4KIAkJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhmZDk0ZWYuLjdjMTBkMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzOTMs
NiArMTM5MywxMyBAQAogCQk1MDM4QkYyODE0NzUwRjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MDM4QkYyNDE0NzUwRjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTA4Q0NBNEYx
M0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBS
ZW5kZXJGbG93VGhyZWFkLmggKi87IH07CiAJCTUwOENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBS
ZW5kZXJGbG93VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUwOENDQTRFMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNw
cCAqLzsgfTsKKwkJNTBENDAzQzcxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwM0M1
MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5jcHAgKi87IH07CisJCTUwRDQwM0M4
MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDAzQzYxNDc2OEM5NDAwRDMwQkI1IC8qIEZF
Q3VzdG9tRmlsdGVyLmggKi87IH07CisJCTUwRDQwNUY5MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0
b21GaWx0ZXJNZXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwRDQwNUY3MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmNwcCAq
LzsgfTsKKwkJNTBENDA1RkExNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNUY4MTQ3
RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi87IH07CisJCTUwRDQwNjExMTQ3
RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8q
IEN1c3RvbUZpbHRlclNoYWRlci5jcHAgKi87IH07CisJCTUwRDQwNjEyMTQ3RDQ5REUwMEQzMEJC
NSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJT
aGFkZXIuaCAqLzsgfTsKKwkJNTBENDA2N0QxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVj
dE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MEU1NjZENjEz
OUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFCMTEzOTUxMTRCMDBGN0FDRUIgLyogQ1NT
V3JhcFNoYXBlcy5jcHAgKi87IH07CiAJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNo
ZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDE4NDZBMEIwODYwMkEwMDRBODI1
RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLzsg
fTsKQEAgLTg2MzMsNiArODY0MCwxMyBAQAogCQk1MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyog
UmVuZGVyRmxvd1RocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJGbG93VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwOENDQTRFMTND
RjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MEI0MjE1NzE0Njk3Njk2MDA4N0U2MDQgLyogV2ViS2l0Q1NTU2hhZGVy
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NTU2hhZGVy
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDAzQzUxNDc2OEM5NDAw
RDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEZFQ3VzdG9tRmlsdGVyLmNwcDsgcGF0aCA9IGZpbHRlcnMvRkVDdXN0b21GaWx0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0MDNDNjE0NzY4Qzk0MDBE
MzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gRkVDdXN0b21GaWx0ZXIuaDsgcGF0aCA9IGZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDA1RjcxNDdEMzFGMzAwRDMwQkI1IC8qIEN1
c3RvbUZpbHRlck1lc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
Q3VzdG9tRmlsdGVyTWVzaC5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0MDVGODE0N0QzMUYzMDBEMzBCQjUg
LyogQ3VzdG9tRmlsdGVyTWVzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBD
dXN0b21GaWx0ZXJNZXNoLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8qIEN1
c3RvbUZpbHRlclNoYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0MDYxMDE0N0Q0OURFMDBE
MzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEN1c3RvbUZpbHRlclNoYWRlci5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJT
aGFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDA2N0MxNDdFNDBEODAw
RDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZpbHRlckVmZmVjdE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1FcnJvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3NzI1LDYgKzE3NzM5LDEyIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0OUVDRUI1QzE0
OTk3OTBEMDBDREQzQTQgLyogYXJtICovLAogCQkJCTE5ODQxQkZBMTM2ODM2QTEwMDZFQkJCOSAv
KiBhcm0gKi8sCisJCQkJNTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNo
YWRlci5jcHAgKi8sCisJCQkJNTBENDA2MTAxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRl
clNoYWRlci5oICovLAorCQkJCTUwRDQwNUY3MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0
ZXJNZXNoLmNwcCAqLywKKwkJCQk1MEQ0MDVGODE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmls
dGVyTWVzaC5oICovLAorCQkJCTUwRDQwM0M1MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZp
bHRlci5jcHAgKi8sCisJCQkJNTBENDAzQzYxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmls
dGVyLmggKi8sCiAJCQkJQTFFMTE1NDMxMzAxNUMzRDAwNTRBQzhDIC8qIERpc3RhbnRMaWdodFNv
dXJjZS5jcHAgKi8sCiAJCQkJODQ3MzBENUExMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdo
dFNvdXJjZS5oICovLAogCQkJCUE3NUU4QjgwMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNw
cCAqLywKQEAgLTIwOTQyLDYgKzIwOTYyLDcgQEAKIAkJRjUyM0QyRjMwMkRFNDQzQjAxODYzNUNB
IC8qIHJlbmRlcmluZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNTBENDA2N0MxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmgg
Ki8sCiAJCQkJNDM5MDQ2QzIxMkRBMjVDRTAwQUY4MEEyIC8qIG1hdGhtbCAqLywKIAkJCQlCQzhD
OEZBQTBERENEMkYyMDBCNTkyRjQgLyogc3R5bGUgKi8sCiAJCQkJMDg4QzJGNzQxMjM5MDA4MDAw
M0Q2NUNFIC8qIHN2ZyAqLywKQEAgLTI0ODY2LDYgKzI0ODg3LDEwIEBACiAJCQkJQTEwREM3NkIx
NDc0N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
MkMwQzQxMTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxMjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MEQ0MDNDODE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21G
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUwRDQwNUZBMTQ3RDMxRjMwMEQzMEJCNSAvKiBD
dXN0b21GaWx0ZXJNZXNoLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEQ0MDYxMjE0N0Q0OURFMDBE
MzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEQ0MDY3
RDE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdBQTUxREQ2MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTAzOEJGMjgxNDc1MEYxOTAwOTVFMEQxIC8qIEN1c3RvbUZp
bHRlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkUzRkFEMzkxNDczM0Y0MDAwRTQy
MzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3
NTYsNiArMjc3ODEsOSBAQAogCQkJCTdBQTUxQjZGMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNwZWN0
b3JCYXNlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwREM3NkExNDc0N0JBQjAwNUUy
NDcxIC8qIFN0eWxlR3JpZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyOENBNjgxNDcz
MzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTBENDAzQzcxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUwRDQwNUY5MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJN
ZXNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUwRDQwNjExMTQ3RDQ5REUwMEQzMEJCNSAvKiBD
dXN0b21GaWx0ZXJTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBNTFERDUxNDg1MDZB
OTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTZFM0ZBRDM4MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTA3RTExNkIxMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRU
cmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNoYWRlci5jcHAKaW5kZXggMWQ4ZjU0MC4uMTNiZGExZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKQEAgLTMyLDExICszMiwxNCBA
QAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKIAogI2luY2x1ZGUgIkNhY2hlZFNoYWRlci5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYWNoZWRTaGFkZXI6OkNhY2hlZFNoYWRlcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKICAgICA6IENhY2hlZFJlc291
cmNlKHJlc291cmNlUmVxdWVzdCwgU2hhZGVyUmVzb3VyY2UpCisgICAgLCBtX2RlY29kZXIoVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi9zaGFkZXIiKSkKIHsKIH0KIApA
QCAtNDQsNiArNDcsMjQgQEAgQ2FjaGVkU2hhZGVyOjp+Q2FjaGVkU2hhZGVyKCkKIHsKIH0KIAor
Y29uc3QgU3RyaW5nJiBDYWNoZWRTaGFkZXI6OnNoYWRlclN0cmluZygpCit7CisgICAgaWYgKCFt
X3NoYWRlclN0cmluZyAmJiBtX2RhdGEpIHsKKyAgICAgICAgbV9zaGFkZXJTdHJpbmcgPSBtX2Rl
Y29kZXItPmRlY29kZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICBt
X3NoYWRlclN0cmluZyArPSBtX2RlY29kZXItPmZsdXNoKCk7CisgICAgfQorCisgICAgcmV0dXJu
IG1fc2hhZGVyU3RyaW5nOworfQorCit2b2lkIENhY2hlZFNoYWRlcjo6ZGF0YShQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKGFs
bERhdGFSZWNlaXZlZCkKKyAgICAgICAgbV9kYXRhID0gZGF0YTsKKworICAgIENhY2hlZFJlc291
cmNlOjpkYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaAppbmRleCA4ZGVhZDAxLi5jYzM4ZjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCkBAIC0zNiwxMCArMzYsMTkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwor
CiBjbGFzcyBDYWNoZWRTaGFkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogcHVibGljOgog
ICAgIENhY2hlZFNoYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIH5D
YWNoZWRTaGFkZXIoKTsKKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIHNoYWRlclN0cmluZygpOwor
ICAgIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKKyAgICAKK3ByaXZhdGU6CisgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1f
ZGVjb2RlcjsKKyAgICBTdHJpbmcgbV9zaGFkZXJTdHJpbmc7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1l
c2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJNZXNoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTQ2ZjA3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcApAQCAtMCwwICsxLDI0OSBAQAorLyoKKyAqIENvcHly
aWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkN1c3RvbUZpbHRlck1lc2guaCIK
KworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisKKyNkZWZpbmUgREVCVUdfQ1VTVE9N
X0ZJTFRFUl9NRVNIIDAKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXNoR2VuZXJh
dG9yIHsKK3B1YmxpYzoKKyAgICBNZXNoR2VuZXJhdG9yKHVuc2lnbmVkIGNvbHMsIHVuc2lnbmVk
IHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpN
ZXNoVHlwZSBtZXNoVHlwZSkKKyAgICAgICAgOiBtX21lc2hUeXBlKG1lc2hUeXBlKQorICAgICAg
ICAsIG1fcG9pbnRzKGNvbHMgKyAyLCByb3dzICsgMikKKyAgICAgICAgLCBtX3RpbGVzKGNvbHMg
KyAxLCByb3dzICsgMSkKKyAgICAgICAgLCBtX3RpbGVTaXplSW5QaXhlbHMobWVzaEJveC53aWR0
aCgpIC8gbV90aWxlcy53aWR0aCgpLCBtZXNoQm94LmhlaWdodCgpIC8gbV90aWxlcy5oZWlnaHQo
KSkKKyAgICAgICAgLCBtX3RpbGVTaXplSW5EZXZpY2VTcGFjZSgxLjBmIC8gbV90aWxlcy53aWR0
aCgpLCAxLjBmIC8gbV90aWxlcy5oZWlnaHQoKSkKKyAgICAgICAgLCBtX21lc2hCb3gobWVzaEJv
eCkKKyAgICB7CisgICAgICAgIG1fdmVydGljZXMucmVzZXJ2ZUNhcGFjaXR5KHZlcnRleENvdW50
KCkgKiBmbG9hdHNQZXJWZXJ0ZXgoKSk7CisgICAgICAgIG1faW5kaWNlcy5yZXNlcnZlQ2FwYWNp
dHkoaW5kaWNlc0NvdW50KCkpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fbWVzaFR5cGUgPT0g
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCkKKyAgICAgICAgICAgIGdlbmVyYXRlQXR0
YWNoZWRNZXNoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRlRGV0YWNoZWRN
ZXNoKCk7CisKKyNpZiBERUJVR19DVVNUT01fRklMVEVSX01FU0gKKyAgICAgICAgZHVtcEJ1ZmZl
cnMoKTsKKyNlbmRpZgorICAgIH0KKworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2Vz
KCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNlczsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50MTZf
dD4mIGluZGljZXMoKSBjb25zdCB7IHJldHVybiBtX2luZGljZXM7IH0KKworICAgIGNvbnN0IElu
dFNpemUmIHBvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzOyB9CisgICAgdW5zaWduZWQg
cG9pbnRzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BvaW50cy53aWR0aCgpICogbV9wb2ludHMu
aGVpZ2h0KCk7IH0KKyAgICAKKyAgICBjb25zdCBJbnRTaXplJiB0aWxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fdGlsZXM7IH0KKyAgICB1bnNpZ25lZCB0aWxlc0NvdW50KCkgY29uc3QgeyByZXR1cm4g
bV90aWxlcy53aWR0aCgpICogbV90aWxlcy5oZWlnaHQoKTsgfQorICAgIAorICAgIHVuc2lnbmVk
IGluZGljZXNDb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdCB1bnNpZ25lZCB0cmlh
bmdsZXNQZXJUaWxlID0gMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW5kaWNlc1BlclRyaWFu
Z2xlID0gMzsKKyAgICAgICAgcmV0dXJuIHRpbGVzQ291bnQoKSAqIHRyaWFuZ2xlc1BlclRpbGUg
KiBpbmRpY2VzUGVyVHJpYW5nbGU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGZsb2F0c1Bl
clZlcnRleCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9tZXNoVHlwZSA9PSBDdXN0
b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEID8gQXR0YWNoZWRNZXNoVmVydGV4U2l6ZSA6IERl
dGFjaGVkTWVzaFZlcnRleFNpemU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIHZlcnRleENv
dW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX21lc2hUeXBlID09IEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6QVRUQUNIRUQgPyBwb2ludHNDb3VudCgpIDogaW5kaWNlc0NvdW50KCk7
CisgICAgfQorCitwcml2YXRlOgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEF0dGFjaGVk
TWVzaFZlcnRleFNpemUgPSA0ICsgLy8gdmVjNCBhX3Bvc2l0aW9uCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICsgLy8gdmVjMiBhX3RleENvb3Jk
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOyAv
LyB2ZWMyIGFfbWVzaENvb3JkCisgICAgCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERldGFj
aGVkTWVzaFZlcnRleFNpemUgPSBBdHRhY2hlZE1lc2hWZXJ0ZXhTaXplICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM7IC8vIHZlYzMgYV90cmlh
bmdsZUNvb3JkCisgICAgCisgICAgdHlwZWRlZiB2b2lkIChNZXNoR2VuZXJhdG9yOjoqQWRkVHJp
YW5nbGVWZXJ0ZXhGdW5jdGlvbikoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgs
IGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSk7CisgICAgCisgICAgdGVtcGxhdGUgPEFkZFRy
aWFuZ2xlVmVydGV4RnVuY3Rpb24gYWRkVHJpYW5nbGVWZXJ0ZXg+CisgICAgdm9pZCBhZGRUaWxl
KGludCBxdWFkWCwgaW50IHF1YWRZKQorICAgIHsKKyAgICAgICAgKCgqdGhpcykuKihhZGRUcmlh
bmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMCwgMCwgMSk7CisgICAgICAgICgoKnRoaXMpLioo
YWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDEsIDAsIDIpOworICAgICAgICAoKCp0
aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAxLCAxLCAzKTsKKyAgICAg
ICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMCwgMCwgNCk7
CisgICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDEs
IDEsIDUpOworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1
YWRZLCAwLCAxLCA2KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhZGRBdHRhY2hlZE1lc2hJbmRl
eChpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50
IHRyaWFuZ2xlKQorICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHRyaWFuZ2xlKTsKKyAgICAg
ICAgbV9pbmRpY2VzLmFwcGVuZCgocXVhZFkgKyB0cmlhbmdsZVkpICogbV9wb2ludHMud2lkdGgo
KSArIChxdWFkWCArIHRyaWFuZ2xlWCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGdlbmVyYXRl
QXR0YWNoZWRNZXNoKCkKKyAgICB7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV9wb2lu
dHMuaGVpZ2h0KCk7ICsraikgCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fcG9p
bnRzLndpZHRoKCk7ICsraSkKKyAgICAgICAgICAgICAgICBhZGRBdHRhY2hlZE1lc2hWZXJ0ZXhB
dHRyaWJ1dGVzKGksIGopOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBt
X3RpbGVzLmhlaWdodCgpOyArK2opCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1f
dGlsZXMud2lkdGgoKTsgKytpKQorICAgICAgICAgICAgICAgIGFkZFRpbGU8Jk1lc2hHZW5lcmF0
b3I6OmFkZEF0dGFjaGVkTWVzaEluZGV4PihpLCBqKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
ZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleChpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRy
aWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKQorICAgIHsKKyAgICAgICAgYWRk
RGV0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhxdWFkWCwgcXVhZFksIHRyaWFuZ2xlWCwgdHJp
YW5nbGVZLCB0cmlhbmdsZSk7CisgICAgICAgIG1faW5kaWNlcy5hcHBlbmQobV9pbmRpY2VzLnNp
emUoKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgZ2VuZXJhdGVEZXRhY2hlZE1lc2goKQorICAg
IHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtX3RpbGVzLmhlaWdodCgpOyArK2opCisg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdGlsZXMud2lkdGgoKTsgKytpKQorICAg
ICAgICAgICAgICAgIGFkZFRpbGU8Jk1lc2hHZW5lcmF0b3I6OmFkZERldGFjaGVkTWVzaFZlcnRl
eEFuZEluZGV4PihpLCBqKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhZGRQb3NpdGlvbkF0dHJp
YnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSkKKyAgICB7CisgICAgICAgIC8vIHZlYzQgYV9wb3Np
dGlvbgorICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMud2lkdGgo
KSAqIHF1YWRYIC0gMC41ZiArIG1fbWVzaEJveC54KCkpOworICAgICAgICBtX3ZlcnRpY2VzLmFw
cGVuZChtX3RpbGVTaXplSW5QaXhlbHMuaGVpZ2h0KCkgKiBxdWFkWSAtIDAuNWYgKyBtX21lc2hC
b3gueSgpKTsKKyAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQoMC4wZik7IC8vIHoKKyAgICAgICAg
bV92ZXJ0aWNlcy5hcHBlbmQoMS4wZik7CisgICAgfQorCisgICAgdm9pZCBhZGRUZXhDb29yZEF0
dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSkKKyAgICB7CisgICAgICAgIC8vIHZlYzIgYV90
ZXhDb29yZAorICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMud2lk
dGgoKSAqIHF1YWRYICsgbV9tZXNoQm94LngoKSk7CisgICAgICAgIG1fdmVydGljZXMuYXBwZW5k
KG1fdGlsZVNpemVJblBpeGVscy5oZWlnaHQoKSAqIHF1YWRZICsgbV9tZXNoQm94LnkoKSk7Cisg
ICAgfQorCisgICAgdm9pZCBhZGRNZXNoQ29vcmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVh
ZFkpCisgICAgeworICAgICAgICAvLyB2ZWMyIGFfbWVzaENvb3JkCisgICAgICAgIG1fdmVydGlj
ZXMuYXBwZW5kKG1fdGlsZVNpemVJbkRldmljZVNwYWNlLndpZHRoKCkgKiBxdWFkWCk7CisgICAg
ICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJbkRldmljZVNwYWNlLmhlaWdodCgpICog
cXVhZFkpOworICAgIH0KKworICAgIHZvaWQgYWRkVHJpYW5nbGVDb29yZEF0dHJpYnV0ZShpbnQg
cXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlKQorICAgIHsKKyAgICAgICAgLy8gdmVjMyBh
X3RyaWFuZ2xlQ29vcmQKKyAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQocXVhZFgpOworICAgICAg
ICBtX3ZlcnRpY2VzLmFwcGVuZChxdWFkWSk7CisgICAgICAgIG1fdmVydGljZXMuYXBwZW5kKHRy
aWFuZ2xlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0
ZXMoaW50IHF1YWRYLCBpbnQgcXVhZFkpCisgICAgeworICAgICAgICBhZGRQb3NpdGlvbkF0dHJp
YnV0ZShxdWFkWCwgcXVhZFkpOworICAgICAgICBhZGRUZXhDb29yZEF0dHJpYnV0ZShxdWFkWCwg
cXVhZFkpOworICAgICAgICBhZGRNZXNoQ29vcmRBdHRyaWJ1dGUocXVhZFgsIHF1YWRZKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZERldGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMoaW50IHF1YWRY
LCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSkK
KyAgICB7CisgICAgICAgIGFkZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMocXVhZFggKyB0
cmlhbmdsZVgsIHF1YWRZICsgdHJpYW5nbGVZKTsKKyAgICAgICAgYWRkVHJpYW5nbGVDb29yZEF0
dHJpYnV0ZShxdWFkWCwgcXVhZFksIHRyaWFuZ2xlKTsKKyAgICB9CisgICAgCisjaWZkZWYgREVC
VUdfQ1VTVE9NX0ZJTFRFUl9NRVNICisgICAgdm9pZCBkdW1wQnVmZmVycygpIGNvbnN0CisgICAg
eworICAgICAgICBwcmludGYoIk1lc2ggYnVmZmVyczogUG9pbnRzLndpZHRoKCk6ICVkLCBQb2lu
dHMuaGVpZ2h0KCk6ICVkIG1lc2hCb3g6ICVmLCAlZiwgJWYsICVmLCB0eXBlOiAlc1xuIiwgCisg
ICAgICAgICAgICAgICBtX3BvaW50cy53aWR0aCgpLCBtX3BvaW50cy5oZWlnaHQoKSwgbV9tZXNo
Qm94LngoKSwgbV9tZXNoQm94LnkoKSwgbV9tZXNoQm94LndpZHRoKCksIG1fbWVzaEJveC5oZWln
aHQoKSwgCisgICAgICAgICAgICAgICAobV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRp
b246OkFUVEFDSEVEKSA/ICJBdHRhY2hlZCIgOiAiRGV0YWNoZWQiKTsKKyAgICAgICAgcHJpbnRm
KCItLS1WZXJ0ZXg6XG5cdCIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92
ZXJ0aWNlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgcHJpbnRmKCIlZiAiLCBtX3ZlcnRp
Y2VzLmF0KGkpKTsKKyAgICAgICAgICAgIGlmICghKChpICsgMSkgJSBmbG9hdHNQZXJWZXJ0ZXgo
KSkpCisgICAgICAgICAgICAgICAgcHJpbnRmKCJcblx0Iik7CisgICAgICAgIH0KKyAgICAgICAg
cHJpbnRmKCJcbi0tLUluZGljZXM6ICIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9pbmRpY2VzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgcHJpbnRmKCIlZCAiLCBtX2lu
ZGljZXMuYXQoaSkpOworICAgICAgICBwcmludGYoIlxuIik7CisgICAgfQorI2VuZGlmCisKKyAg
ICAKK3ByaXZhdGU6CisgICAgVmVjdG9yPGZsb2F0PiBtX3ZlcnRpY2VzOworICAgIFZlY3Rvcjx1
aW50MTZfdD4gbV9pbmRpY2VzOworICAgIAorICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVz
aFR5cGUgbV9tZXNoVHlwZTsKKyAgICBJbnRTaXplIG1fcG9pbnRzOworICAgIEludFNpemUgbV90
aWxlczsKKyAgICBGbG9hdFNpemUgbV90aWxlU2l6ZUluUGl4ZWxzOworICAgIEZsb2F0U2l6ZSBt
X3RpbGVTaXplSW5EZXZpY2VTcGFjZTsKKyAgICBGbG9hdFJlY3QgbV9tZXNoQm94OworfTsKKwor
Q3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9tRmlsdGVyTWVzaChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgdW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAg
ICwgbV92ZXJ0aWNlc0J1ZmZlck9iamVjdCgwKQorICAgICwgbV9lbGVtZW50c0J1ZmZlck9iamVj
dCgwKQorICAgICwgbV9tZXNoQm94KG1lc2hCb3gpCisgICAgLCBtX21lc2hUeXBlKG1lc2hUeXBl
KQoreworICAgIE1lc2hHZW5lcmF0b3IgZ2VuZXJhdG9yKGNvbHMsIHJvd3MsIG1lc2hCb3gsIG1l
c2hUeXBlKTsKKyAgICBtX2luZGljZXNDb3VudCA9IGdlbmVyYXRvci5pbmRpY2VzQ291bnQoKTsK
KyAgICBtX2J5dGVzUGVyVmVydGV4ID0gZ2VuZXJhdG9yLmZsb2F0c1BlclZlcnRleCgpICogc2l6
ZW9mKGZsb2F0KTsgICAgCisKKyAgICBtX3ZlcnRpY2VzQnVmZmVyT2JqZWN0ID0gbV9jb250ZXh0
LT5jcmVhdGVCdWZmZXIoKTsKKyAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV92ZXJ0aWNlc0J1ZmZlck9iamVjdCk7CisgICAgbV9jb250
ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIGdlbmVyYXRv
ci52ZXJ0aWNlcygpLnNpemUoKSAqIHNpemVvZihmbG9hdCksIGdlbmVyYXRvci52ZXJ0aWNlcygp
LmRhdGEoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKTsKKyAgICAKKyAgICBtX2Vs
ZW1lbnRzQnVmZmVyT2JqZWN0ID0gbV9jb250ZXh0LT5jcmVhdGVCdWZmZXIoKTsKKyAgICBtX2Nv
bnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVS
LCBtX2VsZW1lbnRzQnVmZmVyT2JqZWN0KTsKKyAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3Jh
cGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBnZW5lcmF0b3IuaW5kaWNlcygp
LnNpemUoKSAqIHNpemVvZih1aW50MTZfdCksIGdlbmVyYXRvci5pbmRpY2VzKCkuZGF0YSgpLCBH
cmFwaGljc0NvbnRleHQzRDo6U1RBVElDX0RSQVcpOworfQorCitDdXN0b21GaWx0ZXJNZXNoOjp+
Q3VzdG9tRmlsdGVyTWVzaCgpCit7CisgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV92ZXJ0
aWNlc0J1ZmZlck9iamVjdCk7CisgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV9lbGVtZW50
c0J1ZmZlck9iamVjdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVz
aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlODAxZmEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck1lc2guaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRv
YmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAg
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQ3VzdG9tRmlsdGVyTWVzaF9oCisjZGVmaW5lIEN1c3RvbUZpbHRlck1lc2hf
aAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRl
ICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNs
dWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworCitjbGFzcyBD
dXN0b21GaWx0ZXJNZXNoIDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyTWVzaD4gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck1lc2g+IGNyZWF0ZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywg
Y29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlw
ZSkgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlck1lc2goY29udGV4
dCwgY29scywgcm93cywgbWVzaEJveCwgbWVzaFR5cGUpKTsKKyAgICB9CisgICAgfkN1c3RvbUZp
bHRlck1lc2goKTsKKworICAgIFBsYXRmb3JtM0RPYmplY3QgdmVydGljZXNCdWZmZXJPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2VzQnVmZmVyT2JqZWN0OyB9CisgICAgdW5zaWduZWQg
Ynl0ZXNQZXJWZXJ0ZXgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVzUGVyVmVydGV4OyB9CisgICAg
CisgICAgUGxhdGZvcm0zRE9iamVjdCBlbGVtZW50c0J1ZmZlck9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fZWxlbWVudHNCdWZmZXJPYmplY3Q7IH0KKyAgICB1bnNpZ25lZCBpbmRpY2VzQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX2luZGljZXNDb3VudDsgfQorICAgIAorICAgIGNvbnN0IEZsb2F0
UmVjdCYgbWVzaEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaEJveDsgfQorICAgIEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUoKSBjb25zdCB7IHJldHVybiBtX21lc2hU
eXBlOyB9CisKK3ByaXZhdGU6CisgICAgQ3VzdG9tRmlsdGVyTWVzaChHcmFwaGljc0NvbnRleHQz
RCosIHVuc2lnbmVkIGNvbHMsIHVuc2lnbmVkIHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJv
eCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSk7CisgICAgCisgICAgR3JhcGhpY3ND
b250ZXh0M0QqIG1fY29udGV4dDsKKyAgICAKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdmVydGlj
ZXNCdWZmZXJPYmplY3Q7CisgICAgdW5zaWduZWQgbV9ieXRlc1BlclZlcnRleDsKKyAgICAKKyAg
ICBQbGF0Zm9ybTNET2JqZWN0IG1fZWxlbWVudHNCdWZmZXJPYmplY3Q7CisgICAgdW5zaWduZWQg
bV9pbmRpY2VzQ291bnQ7CisgICAgCisgICAgRmxvYXRSZWN0IG1fbWVzaEJveDsKKyAgICBDdXN0
b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1fbWVzaFR5cGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShX
RUJHTCkKKworI2VuZGlmIC8vIEN1c3RvbUZpbHRlck1lc2hfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJT
aGFkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyM2Q4NjgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclNoYWRlci5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19TSEFE
RVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNkZWZpbmUgU0hBREVSMChTcmMpICNTcmMKKyNkZWZp
bmUgU0hBREVSKFNyYykgU0hBREVSMChTcmMpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJTaGFk
ZXIuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworU3RyaW5nIEN1c3RvbUZpbHRlclNoYWRlcjo6ZGVmYXVsdFZlcnRleFNoYWRlclN0
cmluZygpCit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247CisgICAgICAgIGF0dHJp
YnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7CisgICAgICAgIHVuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb25N
YXRyaXg7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworICAgICAgICB2b2lkIG1h
aW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbk1h
dHJpeCAqIGFfcG9zaXRpb247CisgICAgICAgICAgICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsK
KyAgICAgICAgfQorICAgICk7Cit9CisKK1N0cmluZyBDdXN0b21GaWx0ZXJTaGFkZXI6OmRlZmF1
bHRGcmFnbWVudFNoYWRlclN0cmluZygpCit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3Jk
OworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHZvaWQgbWFp
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRChzX3Rl
eHR1cmUsIHZfdGV4Q29vcmQpOworICAgICAgICB9CisgICAgKTsKK30KKworQ3VzdG9tRmlsdGVy
U2hhZGVyOjpDdXN0b21GaWx0ZXJTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hh
ZGVyU3RyaW5nKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3ZlcnRleFNoYWRl
clN0cmluZyghdmVydGV4U2hhZGVyU3RyaW5nLmlzTnVsbCgpID8gdmVydGV4U2hhZGVyU3RyaW5n
IDogZGVmYXVsdFZlcnRleFNoYWRlclN0cmluZygpKQorICAgICwgbV9mcmFnbWVudFNoYWRlclN0
cmluZyghZnJhZ21lbnRTaGFkZXJTdHJpbmcuaXNOdWxsKCkgPyBmcmFnbWVudFNoYWRlclN0cmlu
ZyA6IGRlZmF1bHRGcmFnbWVudFNoYWRlclN0cmluZygpKQorICAgICwgbV9wcm9ncmFtKDApCisg
ICAgLCBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24oLTEpCisgICAgLCBtX3RleEF0dHJpYkxvY2F0
aW9uKC0xKQorICAgICwgbV9tZXNoQXR0cmliTG9jYXRpb24oLTEpCisgICAgLCBtX3RyaWFuZ2xl
QXR0cmliTG9jYXRpb24oLTEpCisgICAgLCBtX21lc2hCb3hMb2NhdGlvbigtMSkKKyAgICAsIG1f
cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKC0xKQorICAgICwgbV90aWxlU2l6ZUxvY2F0aW9uKC0x
KQorICAgICwgbV9tZXNoU2l6ZUxvY2F0aW9uKC0xKQorICAgICwgbV9zYW1wbGVyTG9jYXRpb24o
LTEpCisgICAgLCBtX3NhbXBsZXJTaXplTG9jYXRpb24oLTEpCisgICAgLCBtX2NvbnRlbnRTYW1w
bGVyTG9jYXRpb24oLTEpCisgICAgLCBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCit7CisgICAgUGxh
dGZvcm0zRE9iamVjdCB2ZXJ0ZXhTaGFkZXIgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihHcmFw
aGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUik7CisgICAgUGxhdGZvcm0zRE9iamVjdCBmcmFn
bWVudFNoYWRlciA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFHTUVOVF9TSEFERVIpOworCisgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UodmVydGV4U2hh
ZGVyLCBtX3ZlcnRleFNoYWRlclN0cmluZyk7CisgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVy
KHZlcnRleFNoYWRlcik7CisgICAgCisgICAgaW50IGNvbXBpbGVkID0gMDsKKyAgICBtX2NvbnRl
eHQtPmdldFNoYWRlcml2KHZlcnRleFNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVf
U1RBVFVTLCAmY29tcGlsZWQpOworICAgIGlmICghY29tcGlsZWQpIHsKKyAgICAgICAgLy8gRklY
TUU6IFRoaXMgaXMgYW4gaW52YWxpZCBzaGFkZXIuIFRocm93IHNvbWUgZXJyb3JzLgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MTYKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShmcmFn
bWVudFNoYWRlciwgbV9mcmFnbWVudFNoYWRlclN0cmluZyk7CisgICAgbV9jb250ZXh0LT5jb21w
aWxlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKKyAgICAKKyAgICBtX2NvbnRleHQtPmdldFNoYWRl
cml2KGZyYWdtZW50U2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6Q09NUElMRV9TVEFUVVMsICZj
b21waWxlZCk7CisgICAgaWYgKCFjb21waWxlZCkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyBhbiBpbnZhbGlkIHNoYWRlci4gVGhyb3cgc29tZSBlcnJvcnMuCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQxNgorICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIG1fcHJvZ3JhbSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgp
OworICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1fcHJvZ3JhbSwgdmVydGV4U2hhZGVyKTsK
KyAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3Byb2dyYW0sIGZyYWdtZW50U2hhZGVyKTsK
KyAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKG1fcHJvZ3JhbSk7CisgICAgCisgICAgbV9jb250
ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKKyAgICBtX2NvbnRleHQtPmRlbGV0ZVNo
YWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgCisgICAgaW50IGxpbmtlZCA9IDA7CisgICAgbV9j
b250ZXh0LT5nZXRQcm9ncmFtaXYobV9wcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6TElOS19T
VEFUVVMsICZsaW5rZWQpOworICAgIGlmICghbGlua2VkKSB7CisgICAgICAgIC8vIEZJWE1FOiBJ
bnZhbGlkIHZlcnRleC9mcmFnbWVudCBzaGFkZXIgY29tYmluYXRpb24uIFRocm93IHNvbWUgZXJy
b3JzIGhlcmUuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NDQxNgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG1fcG9zaXRpb25B
dHRyaWJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24obV9wcm9ncmFtLCAi
YV9wb3NpdGlvbiIpOworICAgIG1fdGV4QXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0
dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfdGV4Q29vcmQiKTsKKyAgICBtX21lc2hBdHRyaWJM
b2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24obV9wcm9ncmFtLCAiYV9tZXNo
Q29vcmQiKTsKKyAgICBtX3RyaWFuZ2xlQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0
dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfdHJpYW5nbGVDb29yZCIpOworICAgIG1fbWVzaEJv
eExvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAidV9t
ZXNoQm94Iik7CisgICAgbV90aWxlU2l6ZUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24obV9wcm9ncmFtLCAidV90aWxlU2l6ZSIpOworICAgIG1fbWVzaFNpemVMb2NhdGlv
biA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfbWVzaFNpemUi
KTsKKyAgICBtX3Byb2plY3Rpb25NYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfcHJvamVjdGlvbk1hdHJpeCIpOworICAgIG1fc2FtcGxl
ckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAic190
ZXh0dXJlIik7CisgICAgbV9zYW1wbGVyU2l6ZUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24obV9wcm9ncmFtLCAic190ZXh0dXJlU2l6ZSIpOworICAgIG1fY29udGVudFNh
bXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwg
InNfY29udGVudFRleHR1cmUiKTsKKyAgICAKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwor
fQorICAgIAorQ3VzdG9tRmlsdGVyU2hhZGVyOjp+Q3VzdG9tRmlsdGVyU2hhZGVyKCkKK3sKKyAg
ICBpZiAobV9wcm9ncmFtKQorICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9wcm9n
cmFtKTsKK30KKworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJM
RShXRUJHTCkKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5hZjFmY2M5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaApAQCAtMCww
ICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCc
QVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUK
KyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEN1c3RvbUZp
bHRlclNoYWRlcl9oCisjZGVmaW5lIEN1c3RvbUZpbHRlclNoYWRlcl9oCisKKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMz
RC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7CisKK2NsYXNzIEN1c3RvbUZpbHRlclNoYWRlcjogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9t
RmlsdGVyU2hhZGVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRmls
dGVyU2hhZGVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJTaGFkZXIoY29udGV4dCwgdmVy
dGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcikpOworICAgIH0KKyAgICAKKyAgICB+Q3VzdG9tRmls
dGVyU2hhZGVyKCk7CisgICAgCisgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0VmVydGV4U2hhZGVy
U3RyaW5nKCk7CisgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmco
KTsgICAgCisgICAgCisgICAgU3RyaW5nIHZlcnRleFNoYWRlclN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5nOyB9CisgICAgU3RyaW5nIGZyYWdtZW50U2hhZGVyU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlclN0cmluZzsgfQorICAgIAorICAg
IGludCBwb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbkF0
dHJpYkxvY2F0aW9uOyB9CisgICAgaW50IHRleEF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV90ZXhBdHRyaWJMb2NhdGlvbjsgfQorICAgIGludCBtZXNoQXR0cmliTG9jYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX21lc2hBdHRyaWJMb2NhdGlvbjsgfQorICAgIGludCB0cmlhbmdsZUF0
dHJpYkxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90cmlhbmdsZUF0dHJpYkxvY2F0aW9uOyB9
CisgICAgaW50IG1lc2hCb3hMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaEJveExvY2F0
aW9uOyB9CisgICAgaW50IHByb2plY3Rpb25NYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvamVjdGlvbk1hdHJpeExvY2F0aW9uOyB9CisgICAgaW50IHRpbGVTaXplTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3RpbGVTaXplTG9jYXRpb247IH0KKyAgICBpbnQgbWVzaFNpemVM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaFNpemVMb2NhdGlvbjsgfQorICAgIGludCBz
YW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbjsgfQorICAg
IGludCBjb250ZW50U2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2Ft
cGxlckxvY2F0aW9uOyB9CisgICAgaW50IHNhbXBsZXJTaXplTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3NhbXBsZXJTaXplTG9jYXRpb247IH0KKyAgICAKKyAgICBib29sIGlzSW5pdGlhbGl6
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5pdGlhbGl6ZWQ7IH0KKyAgICAKKyAgICBQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW07IH0KKworcHJpdmF0
ZToKKyAgICBDdXN0b21GaWx0ZXJTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBTdHJp
bmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcik7CisgICAgCisg
ICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CisgICAgCisgICAgU3RyaW5n
IG1fdmVydGV4U2hhZGVyU3RyaW5nOworICAgIFN0cmluZyBtX2ZyYWdtZW50U2hhZGVyU3RyaW5n
OworCisgICAgUGxhdGZvcm0zRE9iamVjdCBtX3Byb2dyYW07CisgICAgCisgICAgaW50IG1fcG9z
aXRpb25BdHRyaWJMb2NhdGlvbjsKKyAgICBpbnQgbV90ZXhBdHRyaWJMb2NhdGlvbjsKKyAgICBp
bnQgbV9tZXNoQXR0cmliTG9jYXRpb247CisgICAgaW50IG1fdHJpYW5nbGVBdHRyaWJMb2NhdGlv
bjsKKyAgICBpbnQgbV9tZXNoQm94TG9jYXRpb247CisgICAgaW50IG1fcHJvamVjdGlvbk1hdHJp
eExvY2F0aW9uOworICAgIGludCBtX3RpbGVTaXplTG9jYXRpb247CisgICAgaW50IG1fbWVzaFNp
emVMb2NhdGlvbjsKKyAgICBpbnQgbV9zYW1wbGVyTG9jYXRpb247CisgICAgaW50IG1fc2FtcGxl
clNpemVMb2NhdGlvbjsKKyAgICBpbnQgbV9jb250ZW50U2FtcGxlckxvY2F0aW9uOworICAgIAor
ICAgIGJvb2wgbV9pc0luaXRpYWxpemVkOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKENT
U19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmI4YWRkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3Rv
bUZpbHRlci5jcHAKQEAgLTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9i
ZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFC
TEUoV0VCR0wpCisjaW5jbHVkZSAiRkVDdXN0b21GaWx0ZXIuaCIKKworI2luY2x1ZGUgIkNhY2hl
ZFNoYWRlci5oIgorI2luY2x1ZGUgIkN1c3RvbUZpbHRlck1lc2guaCIKKyNpbmNsdWRlICJDdXN0
b21GaWx0ZXJTaGFkZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRyYXdp
bmdCdWZmZXIuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIlJlbmRlclRyZWVB
c1RleHQuaCIKKyNpbmNsdWRlICJTdHlsZUNhY2hlZFNoYWRlci5oIgorI2luY2x1ZGUgIlRleHRT
dHJlYW0uaCIKKyNpbmNsdWRlICJUZXh0dXJlLmgiCisjaW5jbHVkZSAiVGlsaW5nRGF0YS5oIgor
I2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisKKyNpbmNsdWRlIDx3dGYvQnl0ZUFy
cmF5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG9ydGhvTWF0cml4KGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBmbG9hdCBib3R0b20sIGZs
b2F0IHRvcCkKK3sKKyAgICBmbG9hdCBkZWx0YVggPSByaWdodCAtIGxlZnQ7CisgICAgZmxvYXQg
ZGVsdGFZID0gdG9wIC0gYm90dG9tOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG9ydGhvOwor
ICAgIGlmICghZGVsdGFYIHx8ICFkZWx0YVkpCisgICAgICAgIHJldHVybiBvcnRobzsKKyAgICBv
cnRoby5zZXRNMTEoMi4wZiAvIGRlbHRhWCk7CisgICAgb3J0aG8uc2V0TTQxKC0ocmlnaHQgKyBs
ZWZ0KSAvIGRlbHRhWCk7CisgICAgb3J0aG8uc2V0TTIyKDIuMGYgLyBkZWx0YVkpOworICAgIG9y
dGhvLnNldE00MigtKHRvcCArIGJvdHRvbSkgLyBkZWx0YVkpOworCisgICAgLy8gVXNlIGJpZyBl
bm91Z2ggbmVhci9mYXIgdmFsdWVzLCBzbyB0aGF0IHNpbXBsZSByb3RhdGlvbnMgb2YgcmF0aGVy
IGxhcmdlIG9iamVjdHMgd2lsbCBub3QKKyAgICAvLyBnZXQgY2xpcHBlZC4gMTAwMDAgc2hvdWxk
IGNvdmVyIG1vc3Qgb2YgdGhlIHNjcmVlbiByZXNvbHV0aW9ucy4KKyAgICBjb25zdCBmbG9hdCBm
YXJWYWx1ZSA9IDEwMDAwOworICAgIGNvbnN0IGZsb2F0IG5lYXJWYWx1ZSA9IC0xMDAwMDsKKyAg
ICBvcnRoby5zZXRNMzMoLTIuMGYgLyAoZmFyVmFsdWUgLSBuZWFyVmFsdWUpKTsKKyAgICBvcnRo
by5zZXRNNDMoLSAoZmFyVmFsdWUgKyBuZWFyVmFsdWUpIC8gKGZhclZhbHVlIC0gbmVhclZhbHVl
KSk7CisgICAgb3J0aG8uc2V0TTQ0KDEuMGYpOworCisgICAgcmV0dXJuIG9ydGhvOworfQorCitG
RUN1c3RvbUZpbHRlcjo6RkVDdXN0b21GaWx0ZXIoRmlsdGVyKiBmaWx0ZXIsIERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21l
bnRTaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVzaFJv
d3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hCb3hU
eXBlIG1lc2hCb3hUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCisgICAgOiBGaWx0ZXJFZmZlY3QoZmls
dGVyKQorICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fdmVydGV4U2hhZGVyKHZl
cnRleFNoYWRlcikKKyAgICAsIG1fZnJhZ21lbnRTaGFkZXIoZnJhZ21lbnRTaGFkZXIpCisgICAg
LCBtX21lc2hSb3dzKG1lc2hSb3dzKQorICAgICwgbV9tZXNoQ29sdW1ucyhtZXNoQ29sdW1ucykK
KyAgICAsIG1fbWVzaEJveFR5cGUobWVzaEJveFR5cGUpCisgICAgLCBtX21lc2hUeXBlKG1lc2hU
eXBlKQorCit7Cit9CisKK1Bhc3NSZWZQdHI8RkVDdXN0b21GaWx0ZXI+IEZFQ3VzdG9tRmlsdGVy
OjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVzaFJvd3MsIHVuc2ln
bmVkIG1lc2hDb2x1bW5zLCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hCb3hUeXBlIG1lc2hC
b3hUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3Rv
bUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGRUN1c3RvbUZpbHRlcihmaWx0ZXIsIGRvY3VtZW50LCB2ZXJ0ZXhTaGFkZXIsIGZy
YWdtZW50U2hhZGVyLCBtZXNoUm93cywgbWVzaENvbHVtbnMsIG1lc2hCb3hUeXBlLCBtZXNoVHlw
ZSkpOworfQorCit2b2lkIEZFQ3VzdG9tRmlsdGVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQor
eworICAgIEJ5dGVBcnJheSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFn
ZVJlc3VsdCgpOworICAgIGlmICghZHN0UGl4ZWxBcnJheSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOworICAgIEludFJlY3QgZWZmZWN0
QURyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbi0+YWJzb2x1
dGVQYWludFJlY3QoKSk7CisgICAgUmVmUHRyPEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJheSA9IGlu
LT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3RBRHJhd2luZ1JlY3QpOworICAgIAorICAgIElu
dFNpemUgbmV3Q29udGV4dFNpemUoZWZmZWN0QURyYXdpbmdSZWN0LndpZHRoKCksIGVmZmVjdEFE
cmF3aW5nUmVjdC5oZWlnaHQoKSk7CisgICAgYm9vbCBoYWRDb250ZXh0ID0gbV9jb250ZXh0Owor
ICAgIGlmICghbV9jb250ZXh0KSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXM7CisgICAgICAgIGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVy
ID0gdHJ1ZTsKKyAgICAgICAgYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEgPSBmYWxzZTsK
KyAgICAgICAgCisgICAgICAgIG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUo
YXR0cmlidXRlcywgbV9kb2N1bWVudC0+dmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlck9mZnNjcmVlbik7CisgICAgICAgIG1fZHJhd2luZ0J1ZmZl
ciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIG5ld0NvbnRleHRTaXpl
LCAhYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpOworICAgICAgICAKKyAgICAgICAg
bV9zaGFkZXIgPSBDdXN0b21GaWx0ZXJTaGFkZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIG1f
dmVydGV4U2hhZGVyLCBtX2ZyYWdtZW50U2hhZGVyKTsKKyAgICAgICAgbV9tZXNoID0gQ3VzdG9t
RmlsdGVyTWVzaDo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgbV9tZXNoQ29sdW1ucywgbV9tZXNo
Um93cywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFJl
Y3QoMCwgMCwgMSwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX21lc2hUeXBlKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFoYWRDb250ZXh0IHx8IG1fY29u
dGV4dFNpemUgIT0gbmV3Q29udGV4dFNpemUpIHsKKyAgICAgICAgbV9pbnB1dFRleHR1cmUgPSAw
OworICAgICAgICBtX2RyYXdpbmdCdWZmZXItPnJlc2V0KG5ld0NvbnRleHRTaXplKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5yZXNoYXBlKG5ld0NvbnRleHRTaXplLndpZHRoKCksIG5ld0NvbnRleHRT
aXplLmhlaWdodCgpKTsKKyAgICAgICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBuZXdDb250
ZXh0U2l6ZS53aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIG1faW5w
dXRUZXh0dXJlID0gVGV4dHVyZTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgVGV4dHVyZTo6UkdC
QTgsIG5ld0NvbnRleHRTaXplLndpZHRoKCksIG5ld0NvbnRleHRTaXplLmhlaWdodCgpKTsKKyAg
ICAgICAgbV9jb250ZXh0U2l6ZSA9IG5ld0NvbnRleHRTaXplOworICAgIH0KKyAgICAKKyAgICBp
ZiAobV9pbnB1dFRleHR1cmUtPnRpbGVzKCkubnVtVGlsZXMoKSAhPSAxKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDAsIDApOworICAgIG1f
Y29udGV4dC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQgfCBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVCk7CisgICAgCisgICAgbV9jb250ZXh0LT51
c2VQcm9ncmFtKG1fc2hhZGVyLT5wcm9ncmFtKCkpOworICAgIAorICAgIGlmIChtX3NoYWRlci0+
c2FtcGxlckxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7CisgICAgICAgIG1fY29udGV4dC0+dW5p
Zm9ybTFpKG1fc2hhZGVyLT5zYW1wbGVyTG9jYXRpb24oKSwgMCk7CisgICAgICAgIG1faW5wdXRU
ZXh0dXJlLT5sb2FkKHNyY1BpeGVsQXJyYXktPmRhdGEoKSk7CisgICAgICAgIG1faW5wdXRUZXh0
dXJlLT5iaW5kVGlsZSgwKTsKKyAgICB9CisgICAgCisgICAgaWYgKG1fc2hhZGVyLT5wcm9qZWN0
aW9uTWF0cml4TG9jYXRpb24oKSAhPSAtMSkgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBwcm9qZWN0aW9uTWF0cml4ID0gb3J0aG9NYXRyaXgoLTAuNSwgMC41LCAtMC41LCAwLjUpOwor
ICAgICAgICBmbG9hdCBnbFByb2plY3Rpb25NYXRyaXhbMTZdOworICAgICAgICBwcm9qZWN0aW9u
TWF0cml4LnRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KGdsUHJvamVjdGlvbk1hdHJpeCk7CisgICAg
ICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihtX3NoYWRlci0+cHJvamVjdGlvbk1hdHJp
eExvY2F0aW9uKCksIGZhbHNlLCAmZ2xQcm9qZWN0aW9uTWF0cml4WzBdLCAxKTsKKyAgICB9Cisg
ICAgCisgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9C
VUZGRVIsIG1fbWVzaC0+dmVydGljZXNCdWZmZXJPYmplY3QoKSk7CisgICAgbV9jb250ZXh0LT5i
aW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiwgbV9tZXNo
LT5lbGVtZW50c0J1ZmZlck9iamVjdCgpKTsKKworICAgIHVuc2lnbmVkIHZlcnRleFNpemUgPSBt
X21lc2gtPmJ5dGVzUGVyVmVydGV4KCk7CisgICAgCisgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsK
KyAgICAKKyAgICBpZiAobV9zaGFkZXItPnBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSAhPSAtMSkg
eworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIobV9zaGFkZXItPnBvc2l0
aW9uQXR0cmliTG9jYXRpb24oKSwgNCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwg
dmVydGV4U2l6ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShtX3NoYWRlci0+cG9zaXRpb25BdHRyaWJMb2NhdGlvbigpKTsKKyAgICB9CisgICAg
b2Zmc2V0ICs9IDQgKiBzaXplb2YoZmxvYXQpOworICAgIAorICAgIGlmIChtX3NoYWRlci0+dGV4
QXR0cmliTG9jYXRpb24oKSAhPSAtMSkgeworICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
YlBvaW50ZXIobV9zaGFkZXItPnRleEF0dHJpYkxvY2F0aW9uKCksIDIsIEdyYXBoaWNzQ29udGV4
dDNEOjpGTE9BVCwgZmFsc2UsIHZlcnRleFNpemUsIG9mZnNldCk7CisgICAgICAgIG1fY29udGV4
dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9zaGFkZXItPnRleEF0dHJpYkxvY2F0aW9uKCkp
OworICAgIH0KKyAgICBvZmZzZXQgKz0gMiAqIHNpemVvZihmbG9hdCk7CisgICAgCisgICAgaWYg
KG1fc2hhZGVyLT5tZXNoQXR0cmliTG9jYXRpb24oKSAhPSAtMSkgeworICAgICAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYlBvaW50ZXIobV9zaGFkZXItPm1lc2hBdHRyaWJMb2NhdGlvbigpLCAy
LCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCB2ZXJ0ZXhTaXplLCBvZmZzZXQpOwor
ICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fc2hhZGVyLT5tZXNo
QXR0cmliTG9jYXRpb24oKSk7CisgICAgfQorICAgIG9mZnNldCArPSAyICogc2l6ZW9mKGZsb2F0
KTsKKyAgICAKKyAgICBpZiAobV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkRF
VEFDSEVEICYmIG1fc2hhZGVyLT50cmlhbmdsZUF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAg
ICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVyLT50cmlhbmdsZUF0
dHJpYkxvY2F0aW9uKCksIDMsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIHZlcnRl
eFNpemUsIG9mZnNldCk7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkobV9zaGFkZXItPnRyaWFuZ2xlQXR0cmliTG9jYXRpb24oKSk7CisgICAgfQorICAgIAorICAg
IG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRVMsIG1f
bWVzaC0+aW5kaWNlc0NvdW50KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVCwg
MCk7CisgICAgCisgICAgbV9kcmF3aW5nQnVmZmVyLT5jb21taXQoKTsKKworICAgIFJlZlB0cjxJ
bWFnZURhdGE+IGltYWdlRGF0YSA9IG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEobV9kcmF3aW5nQnVmZmVyLmdldCgpKTsKKyAgICBCeXRlQXJyYXkqIGdwdVJlc3Vs
dCA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCk7CisgICAgQVNTRVJUKGdwdVJlc3VsdC0+bGVu
Z3RoKCkgPT0gZHN0UGl4ZWxBcnJheS0+bGVuZ3RoKCkpOworICAgIG1lbWNweShkc3RQaXhlbEFy
cmF5LT5kYXRhKCksIGdwdVJlc3VsdC0+ZGF0YSgpLCBncHVSZXN1bHQtPmxlbmd0aCgpKTsKK30K
Kwordm9pZCBGRUN1c3RvbUZpbHRlcjo6ZHVtcCgpCit7Cit9CisKK1RleHRTdHJlYW0mIEZFQ3Vz
dG9tRmlsdGVyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5k
ZW50KSBjb25zdAoreworICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQpOworICAgIHRzIDw8ICJb
ZmVDdXN0b21GaWx0ZXIiOworICAgIEZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bih0cyk7CisgICAgdHMgPDwgIl1cbiI7CisgICAgaW5wdXRFZmZlY3QoMCktPmV4dGVybmFsUmVw
cmVzZW50YXRpb24odHMsIGluZGVudCArIDEpOworICAgIHJldHVybiB0czsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFC
TEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTgyNDc5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaApAQCAtMCwwICsxLDg4IEBACisvKgor
ICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisg
KiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICog
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YK
KyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRkVDdXN0b21GaWx0ZXJfaAorI2RlZmlu
ZSBGRUN1c3RvbUZpbHRlcl9oCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShX
RUJHTCkKKworI2luY2x1ZGUgIkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkZp
bHRlci5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRTaGFkZXI7CitjbGFzcyBD
dXN0b21GaWx0ZXJNZXNoOworY2xhc3MgQ3VzdG9tRmlsdGVyU2hhZGVyOworY2xhc3MgRG9jdW1l
bnQ7CitjbGFzcyBEcmF3aW5nQnVmZmVyOworY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CitjbGFz
cyBUZXh0dXJlOworICAgIAorY2xhc3MgRkVDdXN0b21GaWx0ZXIgOiBwdWJsaWMgRmlsdGVyRWZm
ZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRUN1c3RvbUZpbHRlcj4gY3Jl
YXRlKEZpbHRlciosIERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0
IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVz
aFJvd3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hC
b3hUeXBlLCAKKyAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hU
eXBlKTsKKworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZHVtcCgpOworCisgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJl
cHJlc2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBGRUN1c3RvbUZpbHRlcihGaWx0ZXIqLCBEb2N1bWVudCosIGNvbnN0IFN0cmluZyYg
dmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmls
dGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSwgCisgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmls
dGVyT3BlcmF0aW9uOjpNZXNoVHlwZSk7CisgICAgCisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7
CisgICAgCisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CisgICAgUmVm
UHRyPERyYXdpbmdCdWZmZXI+IG1fZHJhd2luZ0J1ZmZlcjsKKyAgICBSZWZQdHI8VGV4dHVyZT4g
bV9pbnB1dFRleHR1cmU7CisgICAgUmVmUHRyPEN1c3RvbUZpbHRlclNoYWRlcj4gbV9zaGFkZXI7
CisgICAgUmVmUHRyPEN1c3RvbUZpbHRlck1lc2g+IG1fbWVzaDsKKyAgICBJbnRTaXplIG1fY29u
dGV4dFNpemU7CisgICAgCisgICAgU3RyaW5nIG1fdmVydGV4U2hhZGVyOworICAgIFN0cmluZyBt
X2ZyYWdtZW50U2hhZGVyOworCisgICAgdW5zaWduZWQgbV9tZXNoUm93czsKKyAgICB1bnNpZ25l
ZCBtX21lc2hDb2x1bW5zOworICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaEJveFR5cGUg
bV9tZXNoQm94VHlwZTsKKyAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1fbWVz
aFR5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
Q1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKKworI2VuZGlmIC8vIEZFQ3VzdG9tRmlsdGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNw
cAppbmRleCAzY2ZkMjMwLi41ZmY3ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgfHwgRU5BQkxFKENTU19TSEFERVJTKQogCiAjaW5j
bHVkZSAiVGV4dHVyZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3Bw
CmluZGV4IGUwZDRmNzguLmMyMWY2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguY3BwCkBAIC0xMTk4LDUgKzExOTgsMjQgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnRvMmRUcmFuc2Zvcm0oKSBjb25zdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX21hdHJpeFszXVswXSwgbV9tYXRyaXhbM11bMV0sIDAsIG1fbWF0
cml4WzNdWzNdKTsKIH0KIAordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dG9Db2x1bW5NYWpv
ckZsb2F0QXJyYXkoRmxvYXRNYXRyaXg0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmVzdWx0WzBd
ID0gbTExKCk7CisgICAgcmVzdWx0WzFdID0gbTEyKCk7CisgICAgcmVzdWx0WzJdID0gbTEzKCk7
CisgICAgcmVzdWx0WzNdID0gbTE0KCk7CisgICAgcmVzdWx0WzRdID0gbTIxKCk7CisgICAgcmVz
dWx0WzVdID0gbTIyKCk7CisgICAgcmVzdWx0WzZdID0gbTIzKCk7CisgICAgcmVzdWx0WzddID0g
bTI0KCk7CisgICAgcmVzdWx0WzhdID0gbTMxKCk7CisgICAgcmVzdWx0WzldID0gbTMyKCk7Cisg
ICAgcmVzdWx0WzEwXSA9IG0zMygpOworICAgIHJlc3VsdFsxMV0gPSBtMzQoKTsKKyAgICByZXN1
bHRbMTJdID0gbTQxKCk7CisgICAgcmVzdWx0WzEzXSA9IG00MigpOworICAgIHJlc3VsdFsxNF0g
PSBtNDMoKTsKKyAgICByZXN1bHRbMTVdID0gbTQ0KCk7Cit9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtYXRpb25NYXRyaXguaAppbmRleCAwNDUwYWQ3Li5hOThkNzBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9u
TWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCkBAIC0zNTAsNiArMzUwLDkgQEAgcHVibGljOgogCiAg
ICAgLy8gVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgbWF0cml4IHdpdGhvdXQgM0QgY29tcG9uZW50
cy4KICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0bzJkVHJhbnNmb3JtKCkgY29uc3Q7CisgICAg
CisgICAgdHlwZWRlZiBmbG9hdCBGbG9hdE1hdHJpeDRbMTZdOworICAgIHZvaWQgdG9Db2x1bW5N
YWpvckZsb2F0QXJyYXkoRmxvYXRNYXRyaXg0JiByZXN1bHQpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIC8vIG11bHRpcGx5IHBhc3NlZCAyRCBwb2ludCBieSBtYXRyaXggKGFzc3VtZSB6PTApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RPYnNlcnZlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYzYwNjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaApAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0
ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxB
UyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQor
ICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRmlsdGVyRWZm
ZWN0T2JzZXJ2ZXJfaAorI2RlZmluZSBGaWx0ZXJFZmZlY3RPYnNlcnZlcl9oCisKKyNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmlsdGVyRWZm
ZWN0T2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdE9ic2VydmVy
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGZpbHRlck5lZWRzUmVwYWludCgpID0gMDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykK
KworI2VuZGlmIC8vIEZpbHRlckVmZmVjdE9ic2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IGU2NmVmNWUuLmUwZGMx
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcApAQCAtMzQsMTEgKzM0LDE5IEBACiAjaW5jbHVkZSAiRkVEcm9wU2hhZG93LmgiCiAj
aW5jbHVkZSAiRkVHYXVzc2lhbkJsdXIuaCIKICNpbmNsdWRlICJGRU1lcmdlLmgiCisjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIK
IAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCisj
aWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisjaW5jbHVkZSAiQ2FjaGVk
U2hhZGVyLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAi
RkVDdXN0b21GaWx0ZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSB2b2lkIGVuZE1hdHJpeFJvdyhWZWN0b3I8
ZmxvYXQ+JiBwYXJhbWV0ZXJzKQpAQCAtNTUsOSArNjMsMjAgQEAgc3RhdGljIGlubGluZSB2b2lk
IGxhc3RNYXRyaXhSb3coVmVjdG9yPGZsb2F0PiYgcGFyYW1ldGVycykKICAgICBwYXJhbWV0ZXJz
LmFwcGVuZCgxKTsKICAgICBwYXJhbWV0ZXJzLmFwcGVuZCgwKTsKIH0KKyAgICAKKyAgICAKKyNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKK3N0YXRpYyBib29sIGlzV2Vi
R0xFbmFibGVkKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICAvLyBXZSBvbmx5IHdhbnQgdG8g
ZW5hYmxlIHNoYWRlcnMgaWYgV2ViR0wgaXMgYWxzbyBlbmFibGVkIG9uIHRoaXMgcGxhdGZvcm0u
CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgcmV0
dXJuIHNldHRpbmdzICYmIHNldHRpbmdzLT53ZWJHTEVuYWJsZWQoKTsKK30KKyNlbmRpZgogCi1G
aWx0ZXJFZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQotICAgIDogbV9ncmFw
aGljc0J1ZmZlckF0dGFjaGVkKGZhbHNlKQorRmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVm
ZmVjdFJlbmRlcmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKiBvYnNlcnZlcikKKyAgICA6IG1fb2Jz
ZXJ2ZXIob2JzZXJ2ZXIpCisgICAgLCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQoZmFsc2UpCiB7
CiAgICAgc2V0RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUoMSwgMSkpOwogICAgIG1fc291cmNl
R3JhcGhpYyA9IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSh0aGlzKTsKQEAgLTcyLDggKzkxLDE0IEBA
IEdyYXBoaWNzQ29udGV4dCogRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCgpCiAg
ICAgcmV0dXJuIHNvdXJjZUltYWdlKCktPmNvbnRleHQoKTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZl
Y3RSZW5kZXJlcjo6YnVpbGQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29u
c3QgTGF5b3V0UmVjdCYgYm9yZGVyQm94KQordm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVp
bGQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25z
LCBjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJCb3gpCiB7CisjaWYgIUVOQUJMRShDU1NfU0hBREVS
UykgfHwgIUVOQUJMRShXRUJHTCkKKyAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOworI2Vsc2UK
KyAgICBDYWNoZWRTaGFkZXJMaXN0IGNhY2hlZFNoYWRlcnM7CisjZW5kaWYKKwogICAgIG1fZWZm
ZWN0cy5jbGVhcigpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwpAQCAtMjE0
LDcgKzIzOSw0MSBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBMYXlvdQogICAgICAgICB9CiAjaWYgRU5B
QkxFKENTU19TSEFERVJTKQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOiB7
Ci0gICAgICAgICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgaW4gdGhlIHNvZnR3YXJlIHBhdGguCisj
aWYgRU5BQkxFKFdFQkdMKQorICAgICAgICAgICAgaWYgKCFpc1dlYkdMRW5hYmxlZChkb2N1bWVu
dCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tRmlsdGVyT3BlcmF0aW9uID0gc3RhdGljX2Nh
c3Q8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgZmlsdGVycyBhcmUgYWxyZWFkeSBsb2Fk
ZWQuIElmIG5vdCBqdXN0IHNraXAgdGhlbSBoZXJlLgorICAgICAgICAgICAgU3RyaW5nIHZlcnRl
eFNoYWRlciwgZnJhZ21lbnRTaGFkZXI7CisgICAgICAgICAgICBib29sIHNoYWRlcnNMb2FkZWQg
PSB0cnVlOworICAgICAgICAgICAgaWYgKGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+dmVydGV4U2hh
ZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlciA9IGN1
c3RvbUZpbHRlck9wZXJhdGlvbi0+dmVydGV4U2hhZGVyKCktPmNhY2hlZFNoYWRlcigpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRTaGFkZXIpOworICAgICAgICAgICAgICAgIGNhY2hl
ZFNoYWRlcnMuYXBwZW5kKGNhY2hlZFNoYWRlcik7CisgICAgICAgICAgICAgICAgY2FjaGVkU2hh
ZGVyLT5hZGRDbGllbnQodGhpcyk7CisgICAgICAgICAgICAgICAgaWYgKGNhY2hlZFNoYWRlci0+
aXNMb2FkZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyID0gY2FjaGVkU2hh
ZGVyLT5zaGFkZXJTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHNoYWRlcnNMb2FkZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChjdXN0b21GaWx0ZXJPcGVyYXRpb24tPmZyYWdtZW50U2hhZGVyKCkpIHsKKyAgICAgICAg
ICAgICAgICBDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlciA9IGN1c3RvbUZpbHRlck9wZXJhdGlv
bi0+ZnJhZ21lbnRTaGFkZXIoKS0+Y2FjaGVkU2hhZGVyKCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGNhY2hlZFNoYWRlcik7CisgICAgICAgICAgICAgICAgY2FjaGVkU2hhZGVycy5hcHBlbmQo
Y2FjaGVkU2hhZGVyKTsKKyAgICAgICAgICAgICAgICBjYWNoZWRTaGFkZXItPmFkZENsaWVudCh0
aGlzKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FjaGVkU2hhZGVyLT5pc0xvYWRlZCgpKQorICAg
ICAgICAgICAgICAgICAgICBmcmFnbWVudFNoYWRlciA9IGNhY2hlZFNoYWRlci0+c2hhZGVyU3Ry
aW5nKCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzaGFkZXJz
TG9hZGVkID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2hhZGVyc0xv
YWRlZCkgeworICAgICAgICAgICAgICAgIGVmZmVjdCA9IEZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUo
dGhpcywgZG9jdW1lbnQsIHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWx0ZXJPcGVyYXRp
b24tPm1lc2hSb3dzKCksIGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+bWVzaENvbHVtbnMoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUZpbHRl
ck9wZXJhdGlvbi0+bWVzaEJveFR5cGUoKSwgY3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5tZXNoVHlw
ZSgpKTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICNlbmRpZgpAQCAtMjM5LDYgKzI5OCwxNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVy
OjpidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBMYXlvdQog
CiAgICAgbV9lZmZlY3RzLmZpcnN0KCktPmlucHV0RWZmZWN0cygpLmFwcGVuZChtX3NvdXJjZUdy
YXBoaWMpOwogICAgIHNldE1heEVmZmVjdFJlY3RzKG1fc291cmNlRHJhd2luZ1JlZ2lvbik7Cisg
ICAgCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisgICAgZm9yIChD
YWNoZWRTaGFkZXJMaXN0OjppdGVyYXRvciBpdGVyID0gbV9jYWNoZWRTaGFkZXJzLmJlZ2luKCks
IGVuZCA9IG1fY2FjaGVkU2hhZGVycy5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAg
ICAgaXRlci0+Z2V0KCktPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBtX2NhY2hlZFNoYWRlcnMu
c3dhcChjYWNoZWRTaGFkZXJzKTsKKyNlbmRpZgorfQorCit2b2lkIEZpbHRlckVmZmVjdFJlbmRl
cmVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCit7CisgICAgbV9vYnNlcnZlci0+
ZmlsdGVyTmVlZHNSZXBhaW50KCk7CiB9CiAKIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OnBy
ZXBhcmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuaAppbmRleCAxZDY4NGQzLi4yMWMyYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5B
QkxFKENTU19GSUxURVJTKQogCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2lu
Y2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKQEAg
LTQ0LDEyICs0NiwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8RmlsdGVyRWZmZWN0PiA+IEZpbHRlckVmZmVjdExpc3Q7CitjbGFzcyBEb2N1bWVudDsK
K2NsYXNzIEZpbHRlckVmZmVjdE9ic2VydmVyOworY2xhc3MgQ2FjaGVkU2hhZGVyOwogCi1jbGFz
cyBGaWx0ZXJFZmZlY3RSZW5kZXJlciA6IHB1YmxpYyBGaWx0ZXIgeworY2xhc3MgRmlsdGVyRWZm
ZWN0UmVuZGVyZXIgOiBwdWJsaWMgRmlsdGVyLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiBjcmVhdGUoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWx0ZXJFZmZlY3RS
ZW5kZXJlcigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWx0ZXJFZmZlY3RSZW5k
ZXJlcihvYnNlcnZlcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTb3VyY2VJbWFn
ZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCkBAIC02NywxMSArNzMsMTMg
QEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCogaW5wdXRDb250ZXh0KCk7CiAgICAgSW1h
Z2VCdWZmZXIqIG91dHB1dCgpIGNvbnN0IHsgcmV0dXJuIGxhc3RFZmZlY3QoKS0+YXNJbWFnZUJ1
ZmZlcigpOyB9CiAKLSAgICB2b2lkIGJ1aWxkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBjb25z
dCBMYXlvdXRSZWN0Jik7CisgICAgdm9pZCBidWlsZChEb2N1bWVudCosIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAgdm9pZCBwcmVwYXJlKCk7CiAgICAg
dm9pZCBhcHBseSgpOwogICAgIAogICAgIEludFJlY3Qgb3V0cHV0UmVjdCgpIGNvbnN0IHsgcmV0
dXJuIGxhc3RFZmZlY3QoKS0+aGFzUmVzdWx0KCkgPyBsYXN0RWZmZWN0KCktPnJlcXVlc3RlZFJl
Z2lvbk9mSW5wdXRJbWFnZURhdGEoSW50UmVjdChtX2ZpbHRlclJlZ2lvbikpIDogSW50UmVjdCgp
OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsK
ICAgICAKIHByaXZhdGU6CiAKQEAgLTg5LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCi0gICAgRmlsdGVyRWZmZWN0UmVuZGVyZXIoKTsKKyAgICBGaWx0ZXJF
ZmZlY3RSZW5kZXJlcihGaWx0ZXJFZmZlY3RPYnNlcnZlciopOwogICAgIHZpcnR1YWwgfkZpbHRl
ckVmZmVjdFJlbmRlcmVyKCk7CiAgICAgCiAgICAgRmxvYXRSZWN0IG1fc291cmNlRHJhd2luZ1Jl
Z2lvbjsKQEAgLTk3LDYgKzEwNSwxMiBAQCBwcml2YXRlOgogICAgIAogICAgIEZpbHRlckVmZmVj
dExpc3QgbV9lZmZlY3RzOwogICAgIFJlZlB0cjxTb3VyY2VHcmFwaGljPiBtX3NvdXJjZUdyYXBo
aWM7CisgICAgRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqIG1fb2JzZXJ2ZXI7IC8vIE5vIG5lZWQgZm9y
IGEgc3Ryb25nIHJlZmVyZW5jZXMgaGVyZS4gSXQgb3ducyB1cy4KKyAgICAKKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKKyAgICB0eXBlZGVmIFZlY3RvcjxDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRTaGFkZXI+ID4gQ2FjaGVkU2hhZGVyTGlzdDsKKyAgICBDYWNo
ZWRTaGFkZXJMaXN0IG1fY2FjaGVkU2hhZGVyczsKKyNlbmRpZgogICAgIAogICAgIGJvb2wgbV9n
cmFwaGljc0J1ZmZlckF0dGFjaGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCmluZGV4IDUxN2IzMGYuLjc4ZjA1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDQ0NCwxMiArNDQ0NCwxMiBAQCB2b2lkIFJlbmRlckxh
eWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCgpCiB7CiAgICAgaWYgKGhhc0ZpbHRlcigp
KSB7CiAgICAgICAgIGlmICghbV9maWx0ZXIpIHsKLSAgICAgICAgICAgIG1fZmlsdGVyID0gRmls
dGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9maWx0ZXIgPSBGaWx0
ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKHRoaXMpOwogICAgICAgICAgICAgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlID0gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+cGFnZSgpLT5zZXR0aW5ncygp
LT5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0
ZWQ7CiAgICAgICAgICAgICBtX2ZpbHRlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2Rl
KTsKICAgICAgICAgfQogCi0gICAgICAgIG1fZmlsdGVyLT5idWlsZChyZW5kZXJlcigpLT5zdHls
ZSgpLT5maWx0ZXIoKSwgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKSk7
CisgICAgICAgIG1fZmlsdGVyLT5idWlsZChyZW5kZXJlcigpLT5kb2N1bWVudCgpLCByZW5kZXJl
cigpLT5zdHlsZSgpLT5maWx0ZXIoKSwgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSktPmJvcmRlckJv
eFJlY3QoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9maWx0ZXIgPSAwOwogICAgIH0KQEAg
LTQ0NjYsNiArNDQ2NiwxMSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVGaWx0ZXJCYWNraW5n
U3RvcmUoKQogICAgIH0KIH0KIAordm9pZCBSZW5kZXJMYXllcjo6ZmlsdGVyTmVlZHNSZXBhaW50
KCkKK3sKKyAgICByZW5kZXJlcigpLT5ub2RlKCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhl
dGljU3R5bGVDaGFuZ2UpOworICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKK30KICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCmluZGV4IDIzMDBhZDQuLmE0YjQwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCkBAIC00NCw2ICs0NCw5IEBACiAjaWZuZGVmIFJlbmRlckxheWVyX2gKICNkZWZp
bmUgUmVuZGVyTGF5ZXJfaAogCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorI2luY2x1ZGUgIkZp
bHRlckVmZmVjdE9ic2VydmVyLmgiCisjZW5kaWYKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNp
bmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJTY3JvbGxCZWhhdmlvci5oIgpAQCAtMjA4
LDcgKzIxMSwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9maXhlZCA6IDE7CiB9OwogCi1jbGFz
cyBSZW5kZXJMYXllciA6IHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CitjbGFzcyBSZW5kZXJMYXll
ciA6IHB1YmxpYyBTY3JvbGxhYmxlQXJlYQorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICAs
IHB1YmxpYyBGaWx0ZXJFZmZlY3RPYnNlcnZlcgorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgZnJp
ZW5kIGNsYXNzIFJlbmRlclJlcGxpY2E7CiAKQEAgLTUxNiw2ICs1MjMsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgYm9vbCBoYXNGaWx0ZXIoKSBjb25zdCB7IHJl
dHVybiByZW5kZXJlcigpLT5oYXNGaWx0ZXIoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBmaWx0ZXJO
ZWVkc1JlcGFpbnQoKTsKICNlbmRpZgogCiAgICAgLy8gT3ZlcmxvYWRlZCBuZXcgb3BlcmF0b3Iu
IERlcml2ZWQgY2xhc3NlcyBtdXN0IG92ZXJyaWRlIG9wZXJhdG9yIG5ldwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaAppbmRleCA4OGJm
YzgxLi4yNjkyMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDYWNoZWRTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDYWNoZWRTaGFkZXIuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0OwogICAgIAorICAg
IHZpcnR1YWwgQ2FjaGVkU2hhZGVyKiBjYWNoZWRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX3No
YWRlci5nZXQoKTsgfQorICAgIAogcHJpdmF0ZToKICAgICBTdHlsZUNhY2hlZFNoYWRlcihDYWNo
ZWRTaGFkZXIqKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVNoYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
U2hhZGVyLmgKaW5kZXggOWIzNjY3Ny4uZmY1ZDJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlU2hhZGVyLmgKQEAgLTM2LDggKzM2LDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRTaGFkZXI7CiBjbGFzcyBDU1NWYWx1ZTsKLSAgICAK
KwogY2xhc3MgU3R5bGVTaGFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVNoYWRlcj4gewog
cHVibGljOgogICAgIHZpcnR1YWwgflN0eWxlU2hhZGVyKCkgeyB9CkBAIC00Nyw2ICs0OCw4IEBA
IHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVl
KCkgY29uc3QgPSAwOwogICAgIAorICAgIHZpcnR1YWwgQ2FjaGVkU2hhZGVyKiBjYWNoZWRTaGFk
ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAgU3R5bGVTaGFk
ZXIoKQogICAgICAgICA6IG1faXNDYWNoZWRTaGFkZXIoZmFsc2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119729</attachid>
            <date>2011-12-17 10:11:09 -0800</date>
            <delta_ts>2011-12-17 10:50:15 -0800</delta_ts>
            <desc>Patch V5</desc>
            <filename>bug73317_7.patch</filename>
            <type>text/plain</type>
            <size>83612</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNjFkZTRjLi41MmIwOGU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTIt
MTYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gQWRkIEZFQ3VzdG9tRmlsdGVyIHRoYXQgcmVuZGVycyBjdXN0b20gZmlsdGVy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTcK
KworICAgICAgICBXZWJLaXQyIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgV2ViR0wgZmxhZyBpbiBsYXlv
dXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UuCisgICAgICAgIFNraXBwaW5nIHRo
ZSB0ZXN0IGxpa2UgYWxsIHRoZSBvdGhlciBXZWJHTCB0ZXN0cyBkby4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvZmlsdGVycy9lZmZlY3Qt
Y3VzdG9tLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0ZXJzL2VmZmVj
dC1jdXN0b20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvZWZm
ZWN0LWN1c3RvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3VyY2Vz
L2NvbG9yLW9mZnNldC5mczogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0ZXJzL3Jlc291cmNl
cy92ZXJ0ZXgtZXhwbG9kZS1kZXRhY2hlZC52czogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0
ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93azIvU2tpcHBlZDogU2tpcHBpbmcgdGhlIHRlc3QgdW50aWwgV2ViR0wgY2FuIGJlIGVuYWJs
ZWQgZnJvbSBsYXlvdXRUZXN0Q29udHJvbGxlci4KKwogMjAxMS0xMi0xNiAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAgQXVkaW8gZmlsZSBpbiB2aWRlbyBl
bGVtZW50IGhhcyBhIHNpemUgb2YgMHgwIC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9lZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9lZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDhiZjQxZDkxZTA1
ZTE0OWE0YTM1Y2I1N2I5YTBlYjdhNTliZTRkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNDg5
NQp6Y21lSE9kcHkoYWAkckR0VHNpZVBtZ3BjdTxhfTVwc1lFQnFYLT1nY2hwQ01ANG9ONUYmYEZV
fmlsO302NmZxa3IKemJZaTR6blFpMi1pT3AjPCU7eCopZENLPHNlKmdLc1VjY30yYHUqfHEqWDtK
Vz9fSm1YZFNCUHx6T1FsQj9VMGo8Cno8WnFIZkxQOWRtYH1RMFc1P1pBdEJxWlhvU3t6dShpTWtM
MHlsakl6ZGNYdEVvQyp3cU1UUTkocFdmeH5aKVJyZAp6P3s5MnF2ZVZxZUZ3bEhneiVLTENNZ2Y3
UjAqd3QjNj5tSCQxNVZMNj4pX3ojP0JKbH5iez1+QVowSVE9cD1qYU0KelcwYTY/SHc5a3JzbDNY
OEd8UyslWWkhU0NnJEVzbEozT2NmSVpAeTRgUTVhMzxHJFJJRno9ayEmMihnPyNNZDthCnpXZVp8
VCFnZ0xsYGZDYV8/eHN3dWc4JHNwRTFNM15abVExREhGNFE7Ylg2VDJPX15ze1lAclZNN1M1bVo+
e2MrNAp6USNnTHF3ZEt7fm47YHx0dzZMJDVnV2xwOW0kWFl0YCpvZWJhXjI1akNhUHktSENqWEEz
QER8SDd4KlJUamBaM3wKekg3KUd6VTJpckdvR2QpK3tUYVQjenZ0PmlwMyR5WD9GVjVWckpgI3pn
VXo5ViRwaERLWHh9fDt2SjBIRT05TlQ/Cnp6MiQrSVZEbyF0YCk2YmI5bXh0cVRYZGg/MWZeTSpJ
VVg/PjRzdmBaSnYqcmhPUFBqTHsmOU9XeDExX31CUD9nYgp6cHwxRkFXS0R+TmkwZE9sVXorVjhE
d3kzYl5DQ1A8MmE5KGg/YnxuM3RrdU8oOFN1MEI9JTtlQlBpfFlNcXFleXIKejs4PXhtPS1DbWVS
YWJMSHk2SEB9bzBTRDdqVjh0P1g5bnFSY1NPZ0dUM0U5T19BPWArY3cqS3FpTlJnQXJRM1FFCnoh
OHtDYGJeaDlMJSsxTk09TmRQQEZ1aVZDeClYXio/SXFmOy15amEjdD1lYVFBemR3S1lrIXUjdzB9
PEVuP0w2Ywp6RHM5LWJ8SXckakBNQUkwJXpMYzEtbnZVeWJCY1prayR2Zl8jUFdMZmE8LXE3UHR3
N3NIej1tSSlEe3lDKF9iV3kKeik8MFhIcW5hNCR8Rn00T3pecmFLUzJlNm1ZVn4yPndjKUNMek5n
OzFVTzBAOEcjJHgybiFPayloMSs/WHAlYjt2CnpMJVJPeXIwP0FKUClYTlI8eVlCX3BXaytuJWgh
SExJPTkyTkVkT1lHPiR1TFJnUCtFTlVOJkIxKnwpMDlYQnMocAp6PTN6SXhKaCl+dC1SbVpgTUkz
UXFZfi03XzBiVXs+e24yTSZwPkIwSz0pODlORGBsMnJ7S2lTRkcxZUFSMyUlbEIKek8ybD50alRJ
WXRqLWs3PT5LfDZjLXAoTHluWUJzKGJOejtBUm9FKHxgKWEtQzQrRFNTVWshSF5UQlE/cUQwQGNp
CnoqMkxQMlF0PytSXnNpPT0xKVJ1cSlzdXdZbS1mdztjMUc+ezNhWWZxcHMlVnErVCR+Rjc2UC1G
KiZaPmYlNiZacwp6R0NNQnJ5UD5ISTIydzZHanZRSzM4U2xHZU9wJk4qb25NPWpXa24xdXcrWnZG
UHFURnxCZj4jbThwM0Z+dk0mWD0KektmalF1THkxeisjZiMha3Y/WTY5Nit3MGkzMjZ5QUA3YUFV
VDl7Njl5YEMyd1gqV3JZUmtNbisqMnVeTUpLUzhDCnpzPUx8b21HRX1RVmAxSCgtVXxDdm5yXyp9
Q31DQjVWdnZMNGk3KiQhP1lrbSQoNTd3Y0R6OXlLT2NnOE5eWk1DMAp6U05rJHU5bEQ2KkhzPVIj
clY9eFB0QEZTXmF0THhBP0RTJHNwOUt9VWN2Sl9NTjUhJXE7MUkzJTRlKWwyREpfcDcKej9GSiZF
dEwzJThOa1lRRjUyNDlUPkg1KCEyRHxAJGBgM0RNZiNnOyN0VVVpQWRCUlIldjdpcnNWQn4qbmBN
Rm99CnozUUZMZVh3NTtlQFlrS2M4fD5qOWxxQiprZyNTKGBTJTFBN3hhTkFWKVlATWtGMFdNeT50
Mih0TDFKZHBWdn0kQQp6JFZGTXRkYlMxbiRZSURWenFZX0dTZ0I8YGs+dilARiFwZ31NMn55X18/
MDhCSjxfSWJ1eGRXTnR6TkBaQzNiUV4Keit2JD08LTc3aFNvVn5LU1FpRH47aG9aNjxRQlNFYmxx
ZlkkWFJhUDR6QUFRQ0c9fDNoYTwhazhFYGY3d2dnbTVfCnp6USRXdyMxa0p+ZlZlakRYbzIpUkhj
My1+dkptTFg5a0ApS2Z5Nmg9cSpmeV9PQzROeD9QWk8pcj9BcFU4O3tBeAp6VEMrWnd0NXF+TFoh
Q2NEe2BDQFA9b1dwPjd6ZjcmRj4mfGx2b2xSJG0qcnxIM3IhTjFoLXN+NHRaMmlrUHVZKmcKem1a
MWlgRWxDbzJya2t+RDhBSCs0T3I2M2NycH5DUHp8enhnZy1LN0hoeUR1QiYmPiZJd3JWOWYqVUpo
MzlzPE5ECnpXU3p5JkYjZFFCMz14c3MyZjEwe3p7azhQTT9+XiUmS185LTgjPVItTUU9OTlyVmAy
O1pkTmB0TldEUUE5QDZDJQp6O3teU3hoRWFxfl9MUWJ8ZDRaanZTLTtzSnFTe2VjMylJYWlHajt1
V0hOP3NDJlhtQUM4U1EpN2xDaSRnK3ZlVlAKemQ2aFdmOUhIfVM0UHU7ODh0V20mMDlhdSFDVmFV
LU5nUk5edUM+Pl5oVz5ge3JmYDFgbk5hSjZTdFpPMytudTJ3CnpYc21qXyRHTVJWam1CXjFKZT9X
MXd1SGVAN2tYcVh5OFpQczY0QHNfSXBwJVBoSlo8MkBlaERtLURUczB7dnRNIwp6KEdyaUc0clh1
U2QrK3g9Tm5+ZWxUa3NtYnRGKiZsO25CNi1rQUQjc2ZMS01wRnpOZDIpSlo7ek1Qbjcqel9ELU8K
eitYUjtPTl5SOURQS2R3RGszaDE5bV9udzhrPFRAT3I3aSY0R254ZkRkPmFhI2d2SXtEdGlQY0J3
azQoM1VYSm9ECnpvQHQrTDdxPjdDYj5lfHlMI1NCaipNP1U4eTlWdVFCPCl5R3RSOW5BSzEybiVT
VDJ8bTJpPEFHQ3xQN3RVUGdrPwp6anY3TXdoaG5PeTYjMmJIYmErKXVfJklFS09TcTNNQj48ISE0
X1ppMnZ7QnxfQ0NMdzgtb1d+e3BofXdxQyFrPzMKenRnSkc0eHxFd1prb0NmVkRTSGtUaUZOTnF2
MT9me0p0bHkkUFhxTio0YGNqI1QlN2U+SWxIRE1JUS08UHlHWSlICnp5Nyh6dEJESSs2SnxFTG0t
ZjNgKUxuPkpsRWZMZ3gjXjtgWj47NkRCQE9hWkV6fWU2b2ZaMW9DZ0FOTEN1TSZ2Sgp6aiZGZWl6
PyEtTUhOd1BHUyhsSFFwOWZmWWdWTDBkMEpDIy0zekleQkUwPGMmRkI2NzQzWGBQTTxeKmtVMGc4
I34KempoPEEyZlU3OH0+O1EzcExzc0g0R0JqKnt0TTRuNnY4Ul53OTs1WWpENTJrUkRyKXJMNyF2
KF5YUHdPZTQxY2wwCnpqNUk1VGJHaDY+aFo8d0BiSGwyTyNAYT5NOV9PbUdeKSVgcE57RldyQEwj
ZTA0Yys9OVNPWGVURDttUzRnV25FLQp6Zng/ZTRnZnNsY0lESksoVjthOSMhU0ZSOTR0Ujhwa0Zx
NiMpTEI9JXFqZ3IhcipHcTVaV3xWZmtjSURlX0xzWFgKejxLbXxWQFclV3pNdDlsYzxUWitKVXxv
fnc1V2Q0SW1qVWMjQlQ+JSRaVDB7SSpUfDUyYEpsSU0xanlfXzNSJDt8CnooPipzSkYhbXw2cnU/
KGR0PV82Tj0qR19CWl9fO257IWYjdGheZiUjcHRMSTBXM31eeTg9YmBYaC16NHNZRWY7IQp6T290
Yjd7aE1DWjJIfU05eXxpKXsyfl9QO0t4b3NkPH1wV0hPU2xSKXBlNyVCNSZMYlMlcUMoeDRZfEdr
I0pEKX4KemZKS0ZBU0xmajBgdzNwVEc5JjZYaF5eNj5scXl0UDkkcC0hWT1pSV9rQ2VkazdWR01Z
Uk8wdmo/Y2BIUGxhPHooCnoqXklPeFZZVUtQa25pWGdOTVZtZ2ZONGwkK19LWUpWODBYcVF0PClu
OHYreiUwWGg4Nzl3eSVhbkc7ODAoQFNNTQp6I31CbX40WVAlUiQhbXQ4I2l7bXFCSShlQDQhVFU8
P190byVqdFJ+fj5WQE95T1E8bDM2aHcmfSpgdlYkWVIkSCUKejsxNU45ZF5UTSkrRnk1bkhjX3Zq
WnxXYEZ1d2UyPVg5fm93eChuN2tGRHM1eW1xYz5hQnotNjlgJmt0LWBSTVNMCnpnM0t6clFwPDt8
cE03fDsxVXpYcykqeWg2Uj5aSn45Kj5SRFlrWl4hUjZAVTxxVXBSQVNoRkp6cGdCTlFEYElMVgp6
dEVBVlApXzQyXipAJWJYa24hT1NeTTE2TEwzM3RDTXEoTGVHNmlvNWlBOHdQO15YSTwlUHZnM2d4
RDs7SWN8Jm4KenZ4UkttX29iY15pPjVRWWRjenYkKH5ublpCK2ZsNF5fOX58UHZBPTVQNEt5MUtk
Q2p4ZFpgX2FRVTdwJGFUcjFBCnpKYmp2ZEokQWtkJCp7fWs5ayFafVdtNnN6eDxIcHM2VzE9clVn
dEh7N3wqZXlrQnsqdmc+c21MOFh2Pz1RUmxlcQp6VEVaVi09MiVRSW9eMXtBO0lgc2l3T3luM2Iw
U3VXYktwdk1tfU5CUGVyRnYoSn59amU9P0tMRCEpPVpsPFRrMy0Kel5VUCV2bVl5VnJFaUtPQnRz
bzB2QjR2SlZHRFg3a3NofDJkKlBBVUQrMEM5e0pXaChBJHRfVXplSzlrKmRzNT1fCnpsakQtemxh
N2NRTGRINkRaXmJ9cTZ0ViZCUS1RMkRNaT9rJjYwTEF5bW45JilmZjsmWnt5ZFZwSFNSOUdFMmg2
KQp6ZzhlKlhaXkZWU1lEcFhxN0wrKX5nQU1mIVJGeytETV5BQXRIST1NfTwwJnBOK21yPm1nNU1f
fmJEZnRZRUE5QU0KenNTaC1yOGhQUll6N28wejJVN1BfcXNYYGBLam8hPmpyd245anxrK2g1MEpZ
fGxue3FzRGhUJDtndkxDQyplWjM0CnpvJXZRTDMoVkp8VmU/YWlaNE58N29GanhpXnpLIz4tWD47
S2xvTFphQHdfZV5ReXJZbWlAYExaV35oTnw/UiZYdAp6cSttYSFaSWxFakhNTCp+djhhaE9IeXBR
Mi12TWY2MWFZVDc3K2tJWjh2aSg8cyswQVE+S2lrQj1kYWZVKXxYQ30KenVUNCtGUXRINSNDRVFG
RUVGbHIlaChkZm5IcVFCZGokPCt4WDd6RjRYV2pSXnBNKEo0XmBGeVVjM3hOe1NGZHQoCnpBfU4k
SFM4KnN3RDRBe2BBSl9RIU1jTF5Udl5VbjNfOyQrPFFLKGl6XypicVI0bz1BcDlVMlFBLXJgQ2te
ZDdqMwp6aEQ7cmRwYlVQUHJESCRnRyFqQGoxZ254YmMxd3FnRTI0bXlmRGJeJmViITF5MVZzKGJN
ajF0aVY+I2p6ZFpuYFkKelVMSH41JGxSc2Q9YUhsMllyKmJ5OFUza2M/KDUoLT1TYHktT2ghZDhE
dGBQJGV9VVd5MiNMI0BPRWNTMWxrNHU9CnpxYihZJU5FbzU/Vmk/fjgwUWdsaHooRG9XVXIyZXEt
T1NMcCZUQ1NGZSMqPXFpa2szPXhsZD1sJkEyUTFzaj4wWQp6b3ZST3ImKD80eFA+THNSRDd8OCtL
MHYrbndqeXhyc29+KnQ/NDQzR2RLUDF3SkdMKWlhJD12aXg0VmtGQDk/enQKeiUjU0tMWSRpYCho
eXtmfFFGITN7SU8pMEgjXytoNXREO000WFVofndBRGtRSihPZVA9Sj0xalVtV0VhKjhhJGJpCnpP
QGBwYjFSQ0V4RmhDdj1odVdSWEFTYSYjNnl4QWNjRCg/MSt5TCUwYihaczZ3NFhPbkgodzU2Sz5U
Zk0wQWxKSQp6IXU5ejRRcHMqQVN1JD9PaCZRZTJ5JlBaJGcxV1lYQEM9KHpULSptNEpNTEJkQ0N5
Ulo5OTl7dnNmbERCRm5HZm8KelV9aUwhRVBpQlVYaiY7WmtoNyNuJHx8d1VzYXRsNXJCZysma2NH
KSZUbm9kU2NTcDFKITMxfXo8cDVyVG1BZlV0Cno0NlllQEhMQ3pVVGFpX09XeGl7aXVPJjM8JjFk
Vis+TjdgfChrJjlFaGRzIU50ZHMtQT41SmBsKjIpfTtpdFArMAp6RTR6O1E/czdwIUpHKldANj1X
MHE4T21kaDY3WTI4TXApRzZRPWtPS2RSIXxPeVRsdE0jTEhuS01uNTVjM1M7SkcKemRDdXNnUWYx
ZiVmbGowQXI4UjN1SWFISEgyWEt1QDZ7KDZWIXFwSjt2cl4wfiF7ZWVwcmpGIT9YWER6UnlDNzl9
Cnpuc2p9PzkzRzBRZU89RGNBSHQ7RW81NG9Ldnk/cSU/fXYhRC1BI0REMEE8U3JBZzwqNDQpXihf
bUB6c0w/QyVEaAp6R3I8ODlmaTxSUXN0Xl5XcDV1OUtQbnc1TylyYS07OF82OT9hYzBRUkVZbGVu
eF8zVXgjZm1oKT91MCVFYGB2blMKekJuMiZBZyRQMnRBbUdgSS1RI3loPEhTamJ7U0UkWTF8WExh
VXQwMGJuTDBnWEgqaUg/cnl8ZSs0M0I4ZDR2d210CnpDOGN4b0klelZFVylhJVY4cE5vP0I3SEhX
ZyE+MlB1fSF4e3p+QHRAYkwqcC1lYS16Vys0NTxHWSZkVUp1ODx3Ywp6Y3kxeHIlRyp5JVNGJG93
K180PylJZ2F1TUVsdElzbGB9flBiT0ktfml2PlhxOCkkVjImOFRXeC1UbVZnaChnVE4KemlBOyp9
MUcxNWI+VXhqaWpNcTFPSzJ7NiVBO2JORXU2c05QPE1WR2RiMzFVPWN8WkNpcE1Fdig+KzlVV2Rx
P05nCnptSSl7PGYmdU98bkRnfjIwIXppQjNZbXYzWkptfVlWLWdyOGxGUCRRK0QzRW5fTngtUDxy
TFhHRktiT3M9fEZnXwp6TmZnRWtecm5LSHMpUXl4MWU0ZUk0eXFvZCRtQ2dKSUc3P0J7VjQ4STJQ
dC17cXE3ZEBZTkt3K3U5fDtjMWYhZkIKekVAKVJuUFA9LUJWaDU7PmNEKE9zNE19ekd3MGZldFdv
PzlJNnZvU3JIYD5XVWF6M1VNIVFgRzM7K05wIzg0aF5QCnpIIXwqRzJQUyV+OzlgZSoxRk5oRWhS
RVg7Y2gqcX5jKk1AU00ybEg0dHVIWEdLcUBhVGlaQHNVbGxAdWomazBXPwp6eSh4ZE5uWGlIU0NC
O20rPlh+e0VhTlBqO0QjT0lgNkhJNDIyRVNHWko2TF5lWiglNmRtP0ApUykyVUtiV0JOTkQKekdA
NE5LWXh8LWAqfkJSYCZCZ3ZMeSN1Y2B6cEk3JFo+KlZVWCg4MHJ6X1o4UnFTUjllR1A1Tm1eKGFK
cGV5eVlMCno+Ml9sfFl4eV97IS1Zc0FHaTcyMyhzc242UTY2MTMtKlNxMkkje2x9aiVfYTJ6IyZh
USV9QWZRSG42RkhrSS17UQp6QmNDb0g5JXpuVkE+QnV8Nj48KS1RJXIzUjlZTlZfMWQ3SCooSiZW
ZyhGTnN+Kyp1OzBAZWpScGgzR2JgQERTKT8KejBZcCNpXnkkOz93ek1vNE1SUGM8ZXp0WEstWjgw
WkwzQn5eREojWjt1WTs0QzZhaV5eQjhtRCRmRGNieSFOTW1DCnp2YnpQQXlweGtlJldsQ29AOD9H
IUk4N24qZXt6XiM8eDZIcmc2cHspekF6TDlfJk8+M3d6YmJYamxZO0kxREspOwp6bz4zNGUyJk8t
N0FzXmNYTmxpIzw+ZXk4UFc3MlkqT2I0NlpeKmNoT141WmE2U21fMFA4c25VOUd6TWw8a1NwYTIK
endUJXduNyE2dWpueGVoVShyKHRYLTIyUCklLXcqKi1FZF41X0E8R1hIdnhDe0VVanw+XyhkeHZO
I3kyNjliPisjCnotQDIoVk5ueT5XLX1zPkgxa0MtMWp0TD9FSDMtPEZqIyg5ek14TTM7RX5TSWJa
IVhqeGdqbGFfQE1ZY3w/U2NpVAp6cHlJR3Aqa0hZNFk9bGhQYXgkTV45V0FsaD19LXh1Kmx6WTw7
Y2FWK2IoU0FsSnRYZjJLMGckK3BPM1ErNVh5QiUKem8pP3liMGhTZE9gLWhKNFlxdShiRUN4LXco
KzBkQUlGU3hYJGZifEUpOTY3RlNlaXhgdGpudiYzOTRoSy0xaSFvCnpZYENRX09TOXxwMEFFKEM2
JGxJKTNMKEhuQUw0cEtvMWVwZTdsOWpfTkx3bDJTOSNoQVZFJXlie3Z4b1heNWU/Wgp6RyRsQX1T
TzZ9NjNvUTY5Snx2PWhmJChaYSMwdzRea2JvM0srVn18R2FNbDhPYDByKlZAMHokc1I/NHtLZCMr
UXcKejJ6RTRWSjNLdHRFQUZgJj15fU5La3xVQkhlIT9tSmd+MDhYWWZ0T3JuUmJ1V2VLbDNCQ20p
USs9eGtBMl9WYjx4CnpQXmtgdkdMXlAweUlJS3NLQ353eyZYSTVKZGNESGBeTXxVNEh6WTxwdWFq
MHwrU3xlfWwxRVoqPClyfnsjR24hNgp6eVd5IUNvRUhlQUN7VUModiFeNWxQZlJxTHQoTzJZSGF8
QlY2R3x5ZlhDfn4lRjklWWs0M01qPj88WlJMPmd3UUsKekFoSVc4aTJRTC1sTHJ1dXNfRDNNZD16
ZDBXNHdkejxRbCYySCpeT3krMCNZZTJnfVRFM0lhNlF0dmpgMHtJam5nCnoyZkN6UXFjUl8xITs9
OFFMQm5CUXtJZGZBaFd4dXA7N1IwUU5VXmwlY245JWw3P1BmKnBHVmtXVF5rWXNgWjN8eQp6TCtj
fVZLSXhlaXBJRjJpI0RZQTtmQDV0RmhTOStiRyNPRyN7RnBmKTk+JHVeLX5NUz5DMCo9LVR9TD5f
TSo4UFAKens2fXtOaXZVQDtkKjVEeFdPZjcjS2VfcUhoUl4yQktyKmtwN19eNlA+MlY7THc+JFR5
RVc3KylKMGBqTCtiMHk9CnpvTypTQWx+dU47OW4jdGEkQEZHTXk1P0pOaCRTNUBKKFN2IVg5M2ZO
R3NlR0c3czA1dzA9Y34wKyszLT0rPTJ7Sgp6R3QlRkdCT0Y3XkNTXz9lRV4zSEdVaW9RVzx7cUZM
Sjczci1Gb31AX3MmVDNVZVZPbEl0KmJ5YS1uPSFDVXljOUoKekRvaUBJdVM9RitqYyk/IWBWU3By
aDQ9aUhne3o0QzdGQDk4SHJfZitlQDdWWiNXKTMrb2t7JW1mKj57I1hCNVJhCnpVPzZRVFZLO3Eq
PGBGbVVKc0lsK3goSiReZHE+RD93T2pCVz8tKyo2YCt1QSNZZUo7ayo/WXo+RzNhKUlXMCFvcAp6
SH50RCp2TmJURmRVeHhOR29PQD8wOCNuTD5DQUdFNSpDUjg7JWFeSnt4OE09Xm9SeE1rI0pHem15
Vk95JTUoeiUKelFeJERCOUhQbmpGMV9meTJ9dkJRYilZS1k4ViVyIzV+bn5zZGVEQTY3SUxPKSVt
ek1VUSM2az9WZ1VvVlpadCpKCno1XnV7MnJTKzk3UGV8dSs3QygwdiE4Q0wyKUdYT352aj1IP0tW
KTd7eilZJnxYRmR1aDAxRDNRQDlnSElGYSk0NQp6OWVpZmhGUTl9KSZIXlp5OU5yKiswdW4kV0Bz
ZzxrM1ZYci0pRzxGc285YFBoJD8pP317O2dLT2RaelRZYCZzO2EKelRNSU8lZVZJSzE3VlFTJmw2
aTlqLSFYLT9aczJSOFhKejx+WjIlbHdJcHpvN1NGcXRyKWZMfFNVRTt3aklyWGROCnp0UTNsMGg0
cF8/RDlHY0tFK0hZTXY+JCY5dXVfKStFd1BlY0VCVXEzWSp3MWhpWW9tfWw0cV9jX01jYWltQ21w
ewp6V0xReU57e2BpPnFQQUFsKjI+c0pZbyk+YjhmfnNMbjNWPnpxUEFBbCoyK05xP34xdDY4Q0Uq
TyVDfCRtejg/UG4KZShpIUZ3azFhfUB1R3VfUTJtQS05a2g5flZKcih3VDd5Ym5wWXVAWXQKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVy
cy9lZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9l
ZmZlY3QtY3VzdG9tLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xNjNiNGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJz
L2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKyAgICAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtY3VzdG9tLmh0bWwgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmZiMTRlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
c3MzL2ZpbHRlcnMvZWZmZWN0LWN1c3RvbS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxpbWcgc3R5bGU9Ii13ZWJr
aXQtZmlsdGVyOiBjdXN0b20odXJsKCdyZXNvdXJjZXMvdmVydGV4LW9mZnNldC52cycpIHVybCgn
cmVzb3VyY2VzL2NvbG9yLW9mZnNldC5mcycpKSIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBu
ZyI+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgncmVzb3VyY2VzL3Zl
cnRleC1vZmZzZXQudnMnKSwgNSAxMCkiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgor
PGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJ3Jlc291cmNlcy92ZXJ0ZXgt
ZXhwbG9kZS1kZXRhY2hlZC52cycpLCAyIDIgZGV0YWNoZWQpIiBzcmM9InJlc291cmNlcy9yZWZl
cmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCdyZXNv
dXJjZXMvdmVydGV4LWV4cGxvZGUtZGV0YWNoZWQudnMnKSB1cmwoJ3Jlc291cmNlcy9jb2xvci1v
ZmZzZXQuZnMnKSwgMiAyIGRldGFjaGVkKSIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+
Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogY3VzdG9tKG5vbmUgdXJsKCdyZXNvdXJjZXMv
Y29sb3Itb2Zmc2V0LmZzJykpIiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY29sb3Itb2Zmc2V0LmZz
IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9jb2xvci1vZmZzZXQuZnMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJkMDczNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY29sb3Itb2Zmc2V0LmZzCkBA
IC0wLDAgKzEsNyBAQAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2YXJ5aW5nIHZlYzIgdl90
ZXhDb29yZDsKK3VuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKK3ZvaWQgbWFpbigpCit7Cisg
ICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCkgKyAwLjM7
Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtZXhwbG9kZS1kZXRhY2hlZC52cyBiL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4LWV4cGxvZGUtZGV0YWNoZWQudnMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc2OGEzYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4LWV4cGxvZGUt
ZGV0YWNoZWQudnMKQEAgLTAsMCArMSwxNCBAQAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisK
K2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247CithdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOwor
YXR0cmlidXRlIHZlYzMgYV90cmlhbmdsZUNvb3JkOworCit1bmlmb3JtIG1hdDQgdV9wcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7Cisg
ICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiAoYV9wb3NpdGlvbiArIHZlYzQo
YV90cmlhbmdsZUNvb3JkLnggLyA0LjAsIGFfdHJpYW5nbGVDb29yZC55IC8gNC4wLCAwLjAsIDAu
MCkpOworICAgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzIGIvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZDhjNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3ZlcnRleC1vZmZzZXQudnMKQEAgLTAsMCArMSwx
MyBAQAorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRp
b247CithdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworCit1bmlmb3JtIG1hdDQgdV9wcm9qZWN0
aW9uTWF0cml4OwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisKK3ZvaWQgbWFpbigpCit7Cisg
ICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiAoYV9wb3NpdGlvbiArIHZlYzQo
MC4xLCAwLjAsIDAuMCwgMC4wKSk7CisgICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IDFjMWY3MjcuLmViYjYzZGMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9Ta2lwcGVkCkBAIC0xODksNiArMTg5LDcgQEAgY29tcG9zaXRpbmcvdmlkZW8tcGFn
ZS12aXNpYmlsaXR5Lmh0bWwKIAogIyBXZWJLaXQyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVy
Lm92ZXJyaWRlUHJlZmVyZW5jZQogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyMTk3PgorY3NzMy9maWx0ZXJzL2N1c3RvbS1maWx0ZXIuaHRtbAogZmFzdC9jYW52
YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbAogZmFzdC9jYW52YXMv
d2ViZ2wvZ2wtdmVydGV4LWF0dHJpYi16ZXJvLWlzc3Vlcy5odG1sCiBmYXN0L2V2ZW50cy9wYWdl
aGlkZS10aW1lb3V0Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdkM2M1OC4uNWYyNGZm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMTEsMTIgKzExMTEsMTUgQEAgU0VUKFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKIAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclNoYWRlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rp
c3RhbnRMaWdodFNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxl
bmQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RHJvcFNoYWRvdy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNTIzMGIxLi5kYTdiNmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsOTUgQEAKKzIwMTEtMTItMTYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hp
Y3VAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hhZGVyc10gQWRkIEZFQ3VzdG9tRmlsdGVy
IHRoYXQgcmVuZGVycyBjdXN0b20gZmlsdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTcKKworICAgICAgICBVc2luZyBhIEdyYXBoaWNzQ29u
dGV4dDNEIHRvIHJlbmRlciB0aGUgc2hhZGVycyBpbiBHUFUsIHJlYWQgdGhlCisgICAgICAgIHJl
c3VsdCBiYWNrIGFuZCB1c2UgaXQgaW4gdGhlIHNvZnR3YXJlIGZpbHRlcnMgcGlwZWxpbmUuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY3Nz
My9maWx0ZXJzL2VmZmVjdC1jdXN0b20uaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRTaGFkZXI6OkNhY2hlZFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRT
aGFkZXI6OnNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTaGFkZXI6OmRh
dGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6Ok1lc2hHZW5lcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6dmVydGljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVz
aEdlbmVyYXRvcjo6aW5kaWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjpw
b2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6cG9pbnRzQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6dGlsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzaEdlbmVyYXRvcjo6dGlsZXNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2Vu
ZXJhdG9yOjppbmRpY2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6
ZmxvYXRzUGVyVmVydGV4KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6OnZlcnRl
eENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6OmFkZFRpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRNZXNoSW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6Z2VuZXJhdGVBdHRhY2hlZE1lc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNoVmVydGV4QW5kSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6Z2VuZXJhdGVEZXRhY2hlZE1l
c2gpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkUG9zaXRpb25BdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkVGV4Q29vcmRBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkTWVzaENvb3JkQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6OmFkZFRyaWFuZ2xlQ29vcmRB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRN
ZXNoVmVydGV4QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjph
ZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hH
ZW5lcmF0b3I6OmR1bXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1l
c2g6OkN1c3RvbUZpbHRlck1lc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVz
aDo6fkN1c3RvbUZpbHRlck1lc2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyTWVzaC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZp
bHRlck1lc2g6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjp2
ZXJ0aWNlc0J1ZmZlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNo
OjpieXRlc1BlclZlcnRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjpl
bGVtZW50c0J1ZmZlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNo
OjppbmRpY2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6bWVz
aEJveCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjptZXNoVHlwZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6ZGVmYXVsdFZl
cnRleFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJTaGFkZXI6
OmRlZmF1bHRGcmFnbWVudFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21G
aWx0ZXJTaGFkZXI6OkN1c3RvbUZpbHRlclNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0
b21GaWx0ZXJTaGFkZXI6On5DdXN0b21GaWx0ZXJTaGFkZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmg6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Om9ydGhvTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9t
RmlsdGVyOjpGRUN1c3RvbUZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmR1bXApOgor
ICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvQ29sdW1uTWFq
b3JGbG9hdEFycmF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdE9i
c2VydmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
aGFkZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0T2JzZXJ2ZXI6On5GaWx0
ZXJFZmZlY3RPYnNlcnZlcik6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzV2ViR0xFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0
ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmZpbHRlck5lZWRzUmVw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUNhY2hlZFNoYWRlcjo6Y2FjaGVkU2hhZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVTaGFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZGVyOjpjYWNoZWRTaGFk
ZXIpOgorCiAyMDExLTEyLTE2ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4K
IAogICAgICAgICBBdWRpbyBmaWxlIGluIHZpZGVvIGVsZW1lbnQgaGFzIGEgc2l6ZSBvZiAweDAg
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggODY2Y2Q2ZC4uODRjMDNkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNTM5LDYgKzI1MzksMTAgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9S
ZWZQdHJDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1JlZlB0ckNhaXJvLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clNoYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rp
c3RhbnRMaWdodFNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgXApAQCAtMjU1MSw2ICsyNTU1LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdo
dGluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlz
cGxhY2VtZW50TWFwLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAyOWMzMDg4Li5lMGE4OTM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKQEAgLTIwODAsMTEgKzIwODAsMTQgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
aCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCBcCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmggXAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvbmVudFRyYW5zZmVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0
cml4LmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmggXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmggXApAQCAtMzIzOCwxMiArMzI0
MSwxNSBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWFNMVD0xKSB7CiAKIGNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9GSUxURVJTPTEpIHsKICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCBcCisgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBcCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcCBcCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBcCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBcCisgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBcCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggMjliNjFiMS4uNGYyNzhlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzY2OCw2ICszNjY4
LDEwIEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlRWZsLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ludFBvaW50RWZsLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ludFJlY3RFZmwuY3BwJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2gu
aCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJT
aGFkZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclNoYWRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAnLApAQCAtMzY4MCw2ICszNjg0LDggQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVy
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZp
bHRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVz
ZUxpZ2h0aW5nLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpZmZ1c2VMaWdodGluZy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGJhZDUzNjQuLmMwZmVlMTIgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTYxNiw2ICsyOTYxNiwy
MiBAQAogCQkJCQlOYW1lPSJmaWx0ZXJzIgogCQkJCQk+CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcQ3VzdG9tRmlsdGVyTWVzaC5j
cHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJNZXNoLmgiCisJCQkJ
CQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIgorCQkJCQkJPgor
CQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXGZpbHRlcnNcQ3VzdG9tRmlsdGVyU2hhZGVyLmgiCisJCQkJCQk+CisJCQkJCTwv
RmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcZmlsdGVyc1xEaXN0YW50TGlnaHRTb3VyY2UuY3BwIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+
CkBAIC0yOTY3Miw2ICsyOTY4OCwxNCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxG
aWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcRkVD
dXN0b21GaWx0ZXIuY3BwIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcRkVDdXN0b21GaWx0
ZXIuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEZFRGlmZnVzZUxpZ2h0aW5nLmNwcCIK
IAkJCQkJCT4KIAkJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhmZDk0ZWYuLjdjMTBkMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzOTMs
NiArMTM5MywxMyBAQAogCQk1MDM4QkYyODE0NzUwRjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MDM4QkYyNDE0NzUwRjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTA4Q0NBNEYx
M0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBS
ZW5kZXJGbG93VGhyZWFkLmggKi87IH07CiAJCTUwOENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBS
ZW5kZXJGbG93VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUwOENDQTRFMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNw
cCAqLzsgfTsKKwkJNTBENDAzQzcxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwM0M1
MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5jcHAgKi87IH07CisJCTUwRDQwM0M4
MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDAzQzYxNDc2OEM5NDAwRDMwQkI1IC8qIEZF
Q3VzdG9tRmlsdGVyLmggKi87IH07CisJCTUwRDQwNUY5MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0
b21GaWx0ZXJNZXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwRDQwNUY3MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmNwcCAq
LzsgfTsKKwkJNTBENDA1RkExNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNUY4MTQ3
RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi87IH07CisJCTUwRDQwNjExMTQ3
RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8q
IEN1c3RvbUZpbHRlclNoYWRlci5jcHAgKi87IH07CisJCTUwRDQwNjEyMTQ3RDQ5REUwMEQzMEJC
NSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJT
aGFkZXIuaCAqLzsgfTsKKwkJNTBENDA2N0QxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVj
dE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MEU1NjZENjEz
OUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFCMTEzOTUxMTRCMDBGN0FDRUIgLyogQ1NT
V3JhcFNoYXBlcy5jcHAgKi87IH07CiAJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNo
ZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDE4NDZBMEIwODYwMkEwMDRBODI1
RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLzsg
fTsKQEAgLTg2MzMsNiArODY0MCwxMyBAQAogCQk1MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyog
UmVuZGVyRmxvd1RocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJGbG93VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwOENDQTRFMTND
RjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MEI0MjE1NzE0Njk3Njk2MDA4N0U2MDQgLyogV2ViS2l0Q1NTU2hhZGVy
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NTU2hhZGVy
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDAzQzUxNDc2OEM5NDAw
RDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEZFQ3VzdG9tRmlsdGVyLmNwcDsgcGF0aCA9IGZpbHRlcnMvRkVDdXN0b21GaWx0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0MDNDNjE0NzY4Qzk0MDBE
MzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gRkVDdXN0b21GaWx0ZXIuaDsgcGF0aCA9IGZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDA1RjcxNDdEMzFGMzAwRDMwQkI1IC8qIEN1
c3RvbUZpbHRlck1lc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
Q3VzdG9tRmlsdGVyTWVzaC5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0MDVGODE0N0QzMUYzMDBEMzBCQjUg
LyogQ3VzdG9tRmlsdGVyTWVzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBD
dXN0b21GaWx0ZXJNZXNoLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8qIEN1
c3RvbUZpbHRlclNoYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEQ0MDYxMDE0N0Q0OURFMDBE
MzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEN1c3RvbUZpbHRlclNoYWRlci5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJT
aGFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDA2N0MxNDdFNDBEODAw
RDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZpbHRlckVmZmVjdE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1FcnJvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3NzI1LDYgKzE3NzM5LDEyIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0OUVDRUI1QzE0
OTk3OTBEMDBDREQzQTQgLyogYXJtICovLAogCQkJCTE5ODQxQkZBMTM2ODM2QTEwMDZFQkJCOSAv
KiBhcm0gKi8sCisJCQkJNTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNo
YWRlci5jcHAgKi8sCisJCQkJNTBENDA2MTAxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRl
clNoYWRlci5oICovLAorCQkJCTUwRDQwNUY3MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0
ZXJNZXNoLmNwcCAqLywKKwkJCQk1MEQ0MDVGODE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmls
dGVyTWVzaC5oICovLAorCQkJCTUwRDQwM0M1MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZp
bHRlci5jcHAgKi8sCisJCQkJNTBENDAzQzYxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmls
dGVyLmggKi8sCiAJCQkJQTFFMTE1NDMxMzAxNUMzRDAwNTRBQzhDIC8qIERpc3RhbnRMaWdodFNv
dXJjZS5jcHAgKi8sCiAJCQkJODQ3MzBENUExMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdo
dFNvdXJjZS5oICovLAogCQkJCUE3NUU4QjgwMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNw
cCAqLywKQEAgLTIwOTQyLDYgKzIwOTYyLDcgQEAKIAkJRjUyM0QyRjMwMkRFNDQzQjAxODYzNUNB
IC8qIHJlbmRlcmluZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNTBENDA2N0MxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmgg
Ki8sCiAJCQkJNDM5MDQ2QzIxMkRBMjVDRTAwQUY4MEEyIC8qIG1hdGhtbCAqLywKIAkJCQlCQzhD
OEZBQTBERENEMkYyMDBCNTkyRjQgLyogc3R5bGUgKi8sCiAJCQkJMDg4QzJGNzQxMjM5MDA4MDAw
M0Q2NUNFIC8qIHN2ZyAqLywKQEAgLTI0ODY2LDYgKzI0ODg3LDEwIEBACiAJCQkJQTEwREM3NkIx
NDc0N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
MkMwQzQxMTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxMjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MEQ0MDNDODE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21G
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUwRDQwNUZBMTQ3RDMxRjMwMEQzMEJCNSAvKiBD
dXN0b21GaWx0ZXJNZXNoLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEQ0MDYxMjE0N0Q0OURFMDBE
MzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEQ0MDY3
RDE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdBQTUxREQ2MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTAzOEJGMjgxNDc1MEYxOTAwOTVFMEQxIC8qIEN1c3RvbUZp
bHRlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkUzRkFEMzkxNDczM0Y0MDAwRTQy
MzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3
NTYsNiArMjc3ODEsOSBAQAogCQkJCTdBQTUxQjZGMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNwZWN0
b3JCYXNlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwREM3NkExNDc0N0JBQjAwNUUy
NDcxIC8qIFN0eWxlR3JpZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyOENBNjgxNDcz
MzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTBENDAzQzcxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUwRDQwNUY5MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJN
ZXNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUwRDQwNjExMTQ3RDQ5REUwMEQzMEJCNSAvKiBD
dXN0b21GaWx0ZXJTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBNTFERDUxNDg1MDZB
OTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTZFM0ZBRDM4MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTA3RTExNkIxMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRU
cmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNoYWRlci5jcHAKaW5kZXggMWQ4ZjU0MC4uMTNiZGExZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKQEAgLTMyLDExICszMiwxNCBA
QAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKIAogI2luY2x1ZGUgIkNhY2hlZFNoYWRlci5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYWNoZWRTaGFkZXI6OkNhY2hlZFNoYWRlcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKICAgICA6IENhY2hlZFJlc291
cmNlKHJlc291cmNlUmVxdWVzdCwgU2hhZGVyUmVzb3VyY2UpCisgICAgLCBtX2RlY29kZXIoVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi9zaGFkZXIiKSkKIHsKIH0KIApA
QCAtNDQsNiArNDcsMjQgQEAgQ2FjaGVkU2hhZGVyOjp+Q2FjaGVkU2hhZGVyKCkKIHsKIH0KIAor
Y29uc3QgU3RyaW5nJiBDYWNoZWRTaGFkZXI6OnNoYWRlclN0cmluZygpCit7CisgICAgaWYgKCFt
X3NoYWRlclN0cmluZyAmJiBtX2RhdGEpIHsKKyAgICAgICAgbV9zaGFkZXJTdHJpbmcgPSBtX2Rl
Y29kZXItPmRlY29kZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICBt
X3NoYWRlclN0cmluZyArPSBtX2RlY29kZXItPmZsdXNoKCk7CisgICAgfQorCisgICAgcmV0dXJu
IG1fc2hhZGVyU3RyaW5nOworfQorCit2b2lkIENhY2hlZFNoYWRlcjo6ZGF0YShQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKGFs
bERhdGFSZWNlaXZlZCkKKyAgICAgICAgbV9kYXRhID0gZGF0YTsKKworICAgIENhY2hlZFJlc291
cmNlOjpkYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaAppbmRleCA4ZGVhZDAxLi5jYzM4ZjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCkBAIC0zNiwxMCArMzYsMTkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwor
CiBjbGFzcyBDYWNoZWRTaGFkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogcHVibGljOgog
ICAgIENhY2hlZFNoYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIH5D
YWNoZWRTaGFkZXIoKTsKKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIHNoYWRlclN0cmluZygpOwor
ICAgIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKKyAgICAKK3ByaXZhdGU6CisgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1f
ZGVjb2RlcjsKKyAgICBTdHJpbmcgbV9zaGFkZXJTdHJpbmc7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1l
c2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJNZXNoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTAwNWNl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcApAQCAtMCwwICsxLDI0OCBAQAorLyoKKyAqIENvcHly
aWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkN1c3RvbUZpbHRlck1lc2guaCIK
KworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisKKyNkZWZpbmUgREVCVUdfQ1VTVE9N
X0ZJTFRFUl9NRVNIIDAKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZXNoR2VuZXJh
dG9yIHsKK3B1YmxpYzoKKyAgICBNZXNoR2VuZXJhdG9yKHVuc2lnbmVkIGNvbHMsIHVuc2lnbmVk
IHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpN
ZXNoVHlwZSBtZXNoVHlwZSkKKyAgICAgICAgOiBtX21lc2hUeXBlKG1lc2hUeXBlKQorICAgICAg
ICAsIG1fcG9pbnRzKGNvbHMgKyAyLCByb3dzICsgMikKKyAgICAgICAgLCBtX3RpbGVzKGNvbHMg
KyAxLCByb3dzICsgMSkKKyAgICAgICAgLCBtX3RpbGVTaXplSW5QaXhlbHMobWVzaEJveC53aWR0
aCgpIC8gbV90aWxlcy53aWR0aCgpLCBtZXNoQm94LmhlaWdodCgpIC8gbV90aWxlcy5oZWlnaHQo
KSkKKyAgICAgICAgLCBtX3RpbGVTaXplSW5EZXZpY2VTcGFjZSgxLjBmIC8gbV90aWxlcy53aWR0
aCgpLCAxLjBmIC8gbV90aWxlcy5oZWlnaHQoKSkKKyAgICAgICAgLCBtX21lc2hCb3gobWVzaEJv
eCkKKyAgICB7CisgICAgICAgIG1fdmVydGljZXMucmVzZXJ2ZUNhcGFjaXR5KHZlcnRleENvdW50
KCkgKiBmbG9hdHNQZXJWZXJ0ZXgoKSk7CisgICAgICAgIG1faW5kaWNlcy5yZXNlcnZlQ2FwYWNp
dHkoaW5kaWNlc0NvdW50KCkpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fbWVzaFR5cGUgPT0g
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCkKKyAgICAgICAgICAgIGdlbmVyYXRlQXR0
YWNoZWRNZXNoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRlRGV0YWNoZWRN
ZXNoKCk7CisKKyNpZiBERUJVR19DVVNUT01fRklMVEVSX01FU0gKKyAgICAgICAgZHVtcEJ1ZmZl
cnMoKTsKKyNlbmRpZgorICAgIH0KKworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2Vz
KCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNlczsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50MTZf
dD4mIGluZGljZXMoKSBjb25zdCB7IHJldHVybiBtX2luZGljZXM7IH0KKworICAgIGNvbnN0IElu
dFNpemUmIHBvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzOyB9CisgICAgdW5zaWduZWQg
cG9pbnRzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BvaW50cy53aWR0aCgpICogbV9wb2ludHMu
aGVpZ2h0KCk7IH0KKyAgICAKKyAgICBjb25zdCBJbnRTaXplJiB0aWxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fdGlsZXM7IH0KKyAgICB1bnNpZ25lZCB0aWxlc0NvdW50KCkgY29uc3QgeyByZXR1cm4g
bV90aWxlcy53aWR0aCgpICogbV90aWxlcy5oZWlnaHQoKTsgfQorICAgIAorICAgIHVuc2lnbmVk
IGluZGljZXNDb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdCB1bnNpZ25lZCB0cmlh
bmdsZXNQZXJUaWxlID0gMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW5kaWNlc1BlclRyaWFu
Z2xlID0gMzsKKyAgICAgICAgcmV0dXJuIHRpbGVzQ291bnQoKSAqIHRyaWFuZ2xlc1BlclRpbGUg
KiBpbmRpY2VzUGVyVHJpYW5nbGU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGZsb2F0c1Bl
clZlcnRleCgpIGNvbnN0CisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQXR0
YWNoZWRNZXNoVmVydGV4U2l6ZSA9IDQgKyAvLyB2ZWM0IGFfcG9zaXRpb24KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICsgLy8gdmVjMiBh
X3RleENvb3JkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjsgLy8gdmVjMiBhX21lc2hDb29yZAorCisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBEZXRhY2hlZE1lc2hWZXJ0ZXhTaXplID0gQXR0YWNoZWRNZXNoVmVydGV4U2l6ZSAr
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzsgLy8gdmVjMyBhX3RyaWFuZ2xlQ29vcmQKKworICAgICAgICByZXR1cm4gbV9tZXNoVHlwZSA9
PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEID8gQXR0YWNoZWRNZXNoVmVydGV4U2l6
ZSA6IERldGFjaGVkTWVzaFZlcnRleFNpemU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIHZl
cnRleENvdW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX21lc2hUeXBlID09IEN1
c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQgPyBwb2ludHNDb3VudCgpIDogaW5kaWNlc0Nv
dW50KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVkZWYgdm9pZCAoTWVzaEdlbmVyYXRv
cjo6KkFkZFRyaWFuZ2xlVmVydGV4RnVuY3Rpb24pKGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQg
dHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOworICAgIAorICAgIHRlbXBs
YXRlIDxBZGRUcmlhbmdsZVZlcnRleEZ1bmN0aW9uIGFkZFRyaWFuZ2xlVmVydGV4PgorICAgIHZv
aWQgYWRkVGlsZShpbnQgcXVhZFgsIGludCBxdWFkWSkKKyAgICB7CisgICAgICAgICgoKnRoaXMp
LiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDAsIDAsIDEpOworICAgICAgICAo
KCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAxLCAwLCAyKTsKKyAg
ICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMSwgMSwg
Myk7CisgICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFks
IDAsIDAsIDQpOworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgs
IHF1YWRZLCAxLCAxLCA1KTsKKyAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkp
KHF1YWRYLCBxdWFkWSwgMCwgMSwgNik7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkQXR0YWNo
ZWRNZXNoSW5kZXgoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlh
bmdsZVksIGludCB0cmlhbmdsZSkKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSh0cmlhbmds
ZSk7CisgICAgICAgIG1faW5kaWNlcy5hcHBlbmQoKHF1YWRZICsgdHJpYW5nbGVZKSAqIG1fcG9p
bnRzLndpZHRoKCkgKyAocXVhZFggKyB0cmlhbmdsZVgpKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBnZW5lcmF0ZUF0dGFjaGVkTWVzaCgpCisgICAgeworICAgICAgICBmb3IgKGludCBqID0gMDsg
aiA8IG1fcG9pbnRzLmhlaWdodCgpOyArK2opIAorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtX3BvaW50cy53aWR0aCgpOyArK2kpCisgICAgICAgICAgICAgICAgYWRkQXR0YWNoZWRN
ZXNoVmVydGV4QXR0cmlidXRlcyhpLCBqKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGog
PSAwOyBqIDwgbV90aWxlcy5oZWlnaHQoKTsgKytqKQorICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBtX3RpbGVzLndpZHRoKCk7ICsraSkKKyAgICAgICAgICAgICAgICBhZGRUaWxlPCZN
ZXNoR2VuZXJhdG9yOjphZGRBdHRhY2hlZE1lc2hJbmRleD4oaSwgaik7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYWRkRGV0YWNoZWRNZXNoVmVydGV4QW5kSW5kZXgoaW50IHF1YWRYLCBpbnQgcXVh
ZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSkKKyAgICB7Cisg
ICAgICAgIGFkZERldGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMocXVhZFgsIHF1YWRZLCB0cmlh
bmdsZVgsIHRyaWFuZ2xlWSwgdHJpYW5nbGUpOworICAgICAgICBtX2luZGljZXMuYXBwZW5kKG1f
aW5kaWNlcy5zaXplKCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGdlbmVyYXRlRGV0YWNoZWRN
ZXNoKCkKKyAgICB7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV90aWxlcy5oZWlnaHQo
KTsgKytqKQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3RpbGVzLndpZHRoKCk7
ICsraSkKKyAgICAgICAgICAgICAgICBhZGRUaWxlPCZNZXNoR2VuZXJhdG9yOjphZGREZXRhY2hl
ZE1lc2hWZXJ0ZXhBbmRJbmRleD4oaSwgaik7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkUG9z
aXRpb25BdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCisgICAgeworICAgICAgICAvLyB2
ZWM0IGFfcG9zaXRpb24KKyAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4
ZWxzLndpZHRoKCkgKiBxdWFkWCAtIDAuNWYgKyBtX21lc2hCb3gueCgpKTsKKyAgICAgICAgbV92
ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLmhlaWdodCgpICogcXVhZFkgLSAwLjVm
ICsgbV9tZXNoQm94LnkoKSk7CisgICAgICAgIG1fdmVydGljZXMuYXBwZW5kKDAuMGYpOyAvLyB6
CisgICAgICAgIG1fdmVydGljZXMuYXBwZW5kKDEuMGYpOworICAgIH0KKworICAgIHZvaWQgYWRk
VGV4Q29vcmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCisgICAgeworICAgICAgICAv
LyB2ZWMyIGFfdGV4Q29vcmQKKyAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUlu
UGl4ZWxzLndpZHRoKCkgKiBxdWFkWCArIG1fbWVzaEJveC54KCkpOworICAgICAgICBtX3ZlcnRp
Y2VzLmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMuaGVpZ2h0KCkgKiBxdWFkWSArIG1fbWVzaEJv
eC55KCkpOworICAgIH0KKworICAgIHZvaWQgYWRkTWVzaENvb3JkQXR0cmlidXRlKGludCBxdWFk
WCwgaW50IHF1YWRZKQorICAgIHsKKyAgICAgICAgLy8gdmVjMiBhX21lc2hDb29yZAorICAgICAg
ICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5EZXZpY2VTcGFjZS53aWR0aCgpICogcXVh
ZFgpOworICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5EZXZpY2VTcGFjZS5o
ZWlnaHQoKSAqIHF1YWRZKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFRyaWFuZ2xlQ29vcmRBdHRy
aWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZSkKKyAgICB7CisgICAgICAg
IC8vIHZlYzMgYV90cmlhbmdsZUNvb3JkCisgICAgICAgIG1fdmVydGljZXMuYXBwZW5kKHF1YWRY
KTsKKyAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQocXVhZFkpOworICAgICAgICBtX3ZlcnRpY2Vz
LmFwcGVuZCh0cmlhbmdsZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRBdHRhY2hlZE1lc2hWZXJ0
ZXhBdHRyaWJ1dGVzKGludCBxdWFkWCwgaW50IHF1YWRZKQorICAgIHsKKyAgICAgICAgYWRkUG9z
aXRpb25BdHRyaWJ1dGUocXVhZFgsIHF1YWRZKTsKKyAgICAgICAgYWRkVGV4Q29vcmRBdHRyaWJ1
dGUocXVhZFgsIHF1YWRZKTsKKyAgICAgICAgYWRkTWVzaENvb3JkQXR0cmlidXRlKHF1YWRYLCBx
dWFkWSk7CisgICAgfQorCisgICAgdm9pZCBhZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVz
KGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQg
dHJpYW5nbGUpCisgICAgeworICAgICAgICBhZGRBdHRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVz
KHF1YWRYICsgdHJpYW5nbGVYLCBxdWFkWSArIHRyaWFuZ2xlWSk7CisgICAgICAgIGFkZFRyaWFu
Z2xlQ29vcmRBdHRyaWJ1dGUocXVhZFgsIHF1YWRZLCB0cmlhbmdsZSk7CisgICAgfQorICAgIAor
I2lmZGVmIERFQlVHX0NVU1RPTV9GSUxURVJfTUVTSAorICAgIHZvaWQgZHVtcEJ1ZmZlcnMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcHJpbnRmKCJNZXNoIGJ1ZmZlcnM6IFBvaW50cy53aWR0aCgp
OiAlZCwgUG9pbnRzLmhlaWdodCgpOiAlZCBtZXNoQm94OiAlZiwgJWYsICVmLCAlZiwgdHlwZTog
JXNcbiIsIAorICAgICAgICAgICAgICAgbV9wb2ludHMud2lkdGgoKSwgbV9wb2ludHMuaGVpZ2h0
KCksIG1fbWVzaEJveC54KCksIG1fbWVzaEJveC55KCksIG1fbWVzaEJveC53aWR0aCgpLCBtX21l
c2hCb3guaGVpZ2h0KCksIAorICAgICAgICAgICAgICAgKG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmls
dGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCkgPyAiQXR0YWNoZWQiIDogIkRldGFjaGVkIik7CisgICAg
ICAgIHByaW50ZigiLS0tVmVydGV4OlxuXHQiKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fdmVydGljZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIHByaW50ZigiJWYg
IiwgbV92ZXJ0aWNlcy5hdChpKSk7CisgICAgICAgICAgICBpZiAoISgoaSArIDEpICUgZmxvYXRz
UGVyVmVydGV4KCkpKQorICAgICAgICAgICAgICAgIHByaW50ZigiXG5cdCIpOworICAgICAgICB9
CisgICAgICAgIHByaW50ZigiXG4tLS1JbmRpY2VzOiAiKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1faW5kaWNlcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHByaW50Zigi
JWQgIiwgbV9pbmRpY2VzLmF0KGkpKTsKKyAgICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0KKyNl
bmRpZgorCisgICAgCitwcml2YXRlOgorICAgIFZlY3RvcjxmbG9hdD4gbV92ZXJ0aWNlczsKKyAg
ICBWZWN0b3I8dWludDE2X3Q+IG1faW5kaWNlczsKKyAgICAKKyAgICBDdXN0b21GaWx0ZXJPcGVy
YXRpb246Ok1lc2hUeXBlIG1fbWVzaFR5cGU7CisgICAgSW50U2l6ZSBtX3BvaW50czsKKyAgICBJ
bnRTaXplIG1fdGlsZXM7CisgICAgRmxvYXRTaXplIG1fdGlsZVNpemVJblBpeGVsczsKKyAgICBG
bG9hdFNpemUgbV90aWxlU2l6ZUluRGV2aWNlU3BhY2U7CisgICAgRmxvYXRSZWN0IG1fbWVzaEJv
eDsKK307CisKK0N1c3RvbUZpbHRlck1lc2g6OkN1c3RvbUZpbHRlck1lc2goR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIGNvbHMsIHVuc2lnbmVkIHJvd3MsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIG1lc2hCb3gsIEN1c3Rv
bUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCisgICAgOiBtX2NvbnRleHQoY29u
dGV4dCkKKyAgICAsIG1fdmVydGljZXNCdWZmZXJPYmplY3QoMCkKKyAgICAsIG1fZWxlbWVudHNC
dWZmZXJPYmplY3QoMCkKKyAgICAsIG1fbWVzaEJveChtZXNoQm94KQorICAgICwgbV9tZXNoVHlw
ZShtZXNoVHlwZSkKK3sKKyAgICBNZXNoR2VuZXJhdG9yIGdlbmVyYXRvcihjb2xzLCByb3dzLCBt
ZXNoQm94LCBtZXNoVHlwZSk7CisgICAgbV9pbmRpY2VzQ291bnQgPSBnZW5lcmF0b3IuaW5kaWNl
c0NvdW50KCk7CisgICAgbV9ieXRlc1BlclZlcnRleCA9IGdlbmVyYXRvci5mbG9hdHNQZXJWZXJ0
ZXgoKSAqIHNpemVvZihmbG9hdCk7ICAgIAorCisgICAgbV92ZXJ0aWNlc0J1ZmZlck9iamVjdCA9
IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCk7CisgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIG1fdmVydGljZXNCdWZmZXJPYmplY3QpOwor
ICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVS
LCBnZW5lcmF0b3IudmVydGljZXMoKS5zaXplKCkgKiBzaXplb2YoZmxvYXQpLCBnZW5lcmF0b3Iu
dmVydGljZXMoKS5kYXRhKCksIEdyYXBoaWNzQ29udGV4dDNEOjpTVEFUSUNfRFJBVyk7CisgICAg
CisgICAgbV9lbGVtZW50c0J1ZmZlck9iamVjdCA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCk7
CisgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FS
UkFZX0JVRkZFUiwgbV9lbGVtZW50c0J1ZmZlck9iamVjdCk7CisgICAgbV9jb250ZXh0LT5idWZm
ZXJEYXRhKEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiwgZ2VuZXJhdG9y
LmluZGljZXMoKS5zaXplKCkgKiBzaXplb2YodWludDE2X3QpLCBnZW5lcmF0b3IuaW5kaWNlcygp
LmRhdGEoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKTsKK30KKworQ3VzdG9tRmls
dGVyTWVzaDo6fkN1c3RvbUZpbHRlck1lc2goKQoreworICAgIG1fY29udGV4dC0+ZGVsZXRlQnVm
ZmVyKG1fdmVydGljZXNCdWZmZXJPYmplY3QpOworICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVy
KG1fZWxlbWVudHNCdWZmZXJPYmplY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJNZXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck1lc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTgwMWZh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJNZXNoLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEN1c3RvbUZpbHRlck1lc2hfaAorI2RlZmluZSBDdXN0b21G
aWx0ZXJNZXNoX2gKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQor
CisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsK
KworY2xhc3MgQ3VzdG9tRmlsdGVyTWVzaCA6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRl
ck1lc2g+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJNZXNo
PiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIGNvbHMsIHVuc2ln
bmVkIHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5
cGUgbWVzaFR5cGUpIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJN
ZXNoKGNvbnRleHQsIGNvbHMsIHJvd3MsIG1lc2hCb3gsIG1lc2hUeXBlKSk7CisgICAgfQorICAg
IH5DdXN0b21GaWx0ZXJNZXNoKCk7CisKKyAgICBQbGF0Zm9ybTNET2JqZWN0IHZlcnRpY2VzQnVm
ZmVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNlc0J1ZmZlck9iamVjdDsgfQorICAg
IHVuc2lnbmVkIGJ5dGVzUGVyVmVydGV4KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlc1BlclZlcnRl
eDsgfQorICAgIAorICAgIFBsYXRmb3JtM0RPYmplY3QgZWxlbWVudHNCdWZmZXJPYmplY3QoKSBj
b25zdCB7IHJldHVybiBtX2VsZW1lbnRzQnVmZmVyT2JqZWN0OyB9CisgICAgdW5zaWduZWQgaW5k
aWNlc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbmRpY2VzQ291bnQ7IH0KKyAgICAKKyAgICBj
b25zdCBGbG9hdFJlY3QmIG1lc2hCb3goKSBjb25zdCB7IHJldHVybiBtX21lc2hCb3g7IH0KKyAg
ICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9tZXNoVHlwZTsgfQorCitwcml2YXRlOgorICAgIEN1c3RvbUZpbHRlck1lc2goR3JhcGhp
Y3NDb250ZXh0M0QqLCB1bnNpZ25lZCBjb2xzLCB1bnNpZ25lZCByb3dzLCBjb25zdCBGbG9hdFJl
Y3QmIG1lc2hCb3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUpOworICAgIAorICAg
IEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgCisgICAgUGxhdGZvcm0zRE9iamVj
dCBtX3ZlcnRpY2VzQnVmZmVyT2JqZWN0OworICAgIHVuc2lnbmVkIG1fYnl0ZXNQZXJWZXJ0ZXg7
CisgICAgCisgICAgUGxhdGZvcm0zRE9iamVjdCBtX2VsZW1lbnRzQnVmZmVyT2JqZWN0OworICAg
IHVuc2lnbmVkIG1faW5kaWNlc0NvdW50OworICAgIAorICAgIEZsb2F0UmVjdCBtX21lc2hCb3g7
CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtX21lc2hUeXBlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAm
JiBFTkFCTEUoV0VCR0wpCisKKyNlbmRpZiAvLyBDdXN0b21GaWx0ZXJNZXNoX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
U2hhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyU2hhZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40
MjNkODY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuY3BwCkBAIC0wLDAgKzEsMTU2IEBACisvKgor
ICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisg
KiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICog
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YK
KyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjZGVmaW5lIFNIQURFUjAoU3JjKSAj
U3JjCisjZGVmaW5lIFNIQURFUihTcmMpIFNIQURFUjAoU3JjKQorCisjaW5jbHVkZSAiQ3VzdG9t
RmlsdGVyU2hhZGVyLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBDdXN0b21GaWx0ZXJTaGFkZXI6OmRlZmF1bHRWZXJ0
ZXhTaGFkZXJTdHJpbmcoKQoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAg
ICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworICAgICAgICB1bmlmb3JtIG1hdDQgdV9w
cm9qZWN0aW9uTWF0cml4OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAg
ICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB1X3By
b2plY3Rpb25NYXRyaXggKiBhX3Bvc2l0aW9uOworICAgICAgICAgICAgdl90ZXhDb29yZCA9IGFf
dGV4Q29vcmQ7CisgICAgICAgIH0KKyAgICApOworfQorCitTdHJpbmcgQ3VzdG9tRmlsdGVyU2hh
ZGVyOjpkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKQoreworICAgIHJldHVybiBTSEFERVIo
CisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5nIHZlYzIg
dl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOworICAgICAg
ICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0
dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK0N1
c3RvbUZpbHRlclNoYWRlcjo6Q3VzdG9tRmlsdGVyU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlclN0cmluZywgY29uc3QgU3RyaW5nJiBm
cmFnbWVudFNoYWRlclN0cmluZykKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV92
ZXJ0ZXhTaGFkZXJTdHJpbmcoIXZlcnRleFNoYWRlclN0cmluZy5pc051bGwoKSA/IHZlcnRleFNo
YWRlclN0cmluZyA6IGRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcoKSkKKyAgICAsIG1fZnJhZ21l
bnRTaGFkZXJTdHJpbmcoIWZyYWdtZW50U2hhZGVyU3RyaW5nLmlzTnVsbCgpID8gZnJhZ21lbnRT
aGFkZXJTdHJpbmcgOiBkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKSkKKyAgICAsIG1fcHJv
Z3JhbSgwKQorICAgICwgbV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV90ZXhB
dHRyaWJMb2NhdGlvbigtMSkKKyAgICAsIG1fbWVzaEF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwg
bV90cmlhbmdsZUF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV9tZXNoQm94TG9jYXRpb24oLTEp
CisgICAgLCBtX3Byb2plY3Rpb25NYXRyaXhMb2NhdGlvbigtMSkKKyAgICAsIG1fdGlsZVNpemVM
b2NhdGlvbigtMSkKKyAgICAsIG1fbWVzaFNpemVMb2NhdGlvbigtMSkKKyAgICAsIG1fc2FtcGxl
ckxvY2F0aW9uKC0xKQorICAgICwgbV9zYW1wbGVyU2l6ZUxvY2F0aW9uKC0xKQorICAgICwgbV9j
b250ZW50U2FtcGxlckxvY2F0aW9uKC0xKQorICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQor
eworICAgIFBsYXRmb3JtM0RPYmplY3QgdmVydGV4U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVT
aGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIpOworICAgIFBsYXRmb3JtM0RP
YmplY3QgZnJhZ21lbnRTaGFkZXIgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBR01FTlRfU0hBREVSKTsKKworICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNl
KHZlcnRleFNoYWRlciwgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcpOworICAgIG1fY29udGV4dC0+Y29t
cGlsZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAgIAorICAgIGludCBjb21waWxlZCA9IDA7Cisg
ICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdih2ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNE
OjpDT01QSUxFX1NUQVRVUywgJmNvbXBpbGVkKTsKKyAgICBpZiAoIWNvbXBpbGVkKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGFuIGludmFsaWQgc2hhZGVyLiBUaHJvdyBzb21lIGVycm9y
cy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0
NDE2CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9jb250ZXh0LT5zaGFkZXJT
b3VyY2UoZnJhZ21lbnRTaGFkZXIsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcpOworICAgIG1fY29u
dGV4dC0+Y29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgCisgICAgbV9jb250ZXh0
LT5nZXRTaGFkZXJpdihmcmFnbWVudFNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVf
U1RBVFVTLCAmY29tcGlsZWQpOworICAgIGlmICghY29tcGlsZWQpIHsKKyAgICAgICAgLy8gRklY
TUU6IFRoaXMgaXMgYW4gaW52YWxpZCBzaGFkZXIuIFRocm93IHNvbWUgZXJyb3JzLgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MTYKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX3Byb2dyYW0gPSBtX2NvbnRleHQtPmNyZWF0
ZVByb2dyYW0oKTsKKyAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3Byb2dyYW0sIHZlcnRl
eFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIobV9wcm9ncmFtLCBmcmFnbWVu
dFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShtX3Byb2dyYW0pOworICAgIAor
ICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAgbV9jb250ZXh0
LT5kZWxldGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpOworICAgIAorICAgIGludCBsaW5rZWQgPSAw
OworICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KG1fcHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0
M0Q6OkxJTktfU1RBVFVTLCAmbGlua2VkKTsKKyAgICBpZiAoIWxpbmtlZCkgeworICAgICAgICAv
LyBGSVhNRTogSW52YWxpZCB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVyIGNvbWJpbmF0aW9uLiBUaHJv
dyBzb21lIGVycm9ycyBoZXJlLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzQ0MTYKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBt
X3Bvc2l0aW9uQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1f
cHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKKyAgICBtX3RleEF0dHJpYkxvY2F0aW9uID0gbV9jb250
ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3RleENvb3JkIik7CisgICAgbV9t
ZXNoQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3Jh
bSwgImFfbWVzaENvb3JkIik7CisgICAgbV90cmlhbmdsZUF0dHJpYkxvY2F0aW9uID0gbV9jb250
ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3RyaWFuZ2xlQ29vcmQiKTsKKyAg
ICBtX21lc2hCb3hMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJv
Z3JhbSwgInVfbWVzaEJveCIpOworICAgIG1fdGlsZVNpemVMb2NhdGlvbiA9IG1fY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfdGlsZVNpemUiKTsKKyAgICBtX21lc2hT
aXplTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1
X21lc2hTaXplIik7CisgICAgbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3Byb2plY3Rpb25NYXRyaXgiKTsKKyAg
ICBtX3NhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJv
Z3JhbSwgInNfdGV4dHVyZSIpOworICAgIG1fc2FtcGxlclNpemVMb2NhdGlvbiA9IG1fY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInNfdGV4dHVyZVNpemUiKTsKKyAgICBt
X2NvbnRlbnRTYW1wbGVyTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbiht
X3Byb2dyYW0sICJzX2NvbnRlbnRUZXh0dXJlIik7CisgICAgCisgICAgbV9pc0luaXRpYWxpemVk
ID0gdHJ1ZTsKK30KKyAgICAKK0N1c3RvbUZpbHRlclNoYWRlcjo6fkN1c3RvbUZpbHRlclNoYWRl
cigpCit7CisgICAgaWYgKG1fcHJvZ3JhbSkKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVQcm9n
cmFtKG1fcHJvZ3JhbSk7Cit9CisKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJT
KSAmJiBFTkFCTEUoV0VCR0wpCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYxZmNjOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVy
LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1z
IEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
CisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDdXN0b21GaWx0ZXJTaGFkZXJfaAorI2RlZmluZSBDdXN0b21GaWx0ZXJTaGFkZXJfaAorCisj
aWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHcmFw
aGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBo
aWNzQ29udGV4dDNEOworCitjbGFzcyBDdXN0b21GaWx0ZXJTaGFkZXI6IHB1YmxpYyBSZWZDb3Vu
dGVkPEN1c3RvbUZpbHRlclNoYWRlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEN1c3RvbUZpbHRlclNoYWRlcj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcikK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyU2hhZGVyKGNv
bnRleHQsIHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIpKTsKKyAgICB9CisgICAgCisgICAg
fkN1c3RvbUZpbHRlclNoYWRlcigpOworICAgIAorICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFZl
cnRleFNoYWRlclN0cmluZygpOworICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdEZyYWdtZW50U2hh
ZGVyU3RyaW5nKCk7ICAgIAorICAgIAorICAgIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBj
b25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRlclN0cmluZzsgfQorICAgIFN0cmluZyBmcmFnbWVu
dFNoYWRlclN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7IH0K
KyAgICAKKyAgICBpbnQgcG9zaXRpb25BdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cG9zaXRpb25BdHRyaWJMb2NhdGlvbjsgfQorICAgIGludCB0ZXhBdHRyaWJMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4QXR0cmliTG9jYXRpb247IH0KKyAgICBpbnQgbWVzaEF0dHJpYkxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQXR0cmliTG9jYXRpb247IH0KKyAgICBpbnQg
dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJpYW5nbGVBdHRyaWJM
b2NhdGlvbjsgfQorICAgIGludCBtZXNoQm94TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21l
c2hCb3hMb2NhdGlvbjsgfQorICAgIGludCBwcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3Byb2plY3Rpb25NYXRyaXhMb2NhdGlvbjsgfQorICAgIGludCB0aWxlU2l6
ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aWxlU2l6ZUxvY2F0aW9uOyB9CisgICAgaW50
IG1lc2hTaXplTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lc2hTaXplTG9jYXRpb247IH0K
KyAgICBpbnQgc2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRp
b247IH0KKyAgICBpbnQgY29udGVudFNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGVudFNhbXBsZXJMb2NhdGlvbjsgfQorICAgIGludCBzYW1wbGVyU2l6ZUxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zYW1wbGVyU2l6ZUxvY2F0aW9uOyB9CisgICAgCisgICAgYm9vbCBp
c0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemVkOyB9CisgICAgCisg
ICAgUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtOyB9
CisKK3ByaXZhdGU6CisgICAgQ3VzdG9tRmlsdGVyU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiwg
Y29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIp
OworICAgIAorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIAor
ICAgIFN0cmluZyBtX3ZlcnRleFNoYWRlclN0cmluZzsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNo
YWRlclN0cmluZzsKKworICAgIFBsYXRmb3JtM0RPYmplY3QgbV9wcm9ncmFtOworICAgIAorICAg
IGludCBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb247CisgICAgaW50IG1fdGV4QXR0cmliTG9jYXRp
b247CisgICAgaW50IG1fbWVzaEF0dHJpYkxvY2F0aW9uOworICAgIGludCBtX3RyaWFuZ2xlQXR0
cmliTG9jYXRpb247CisgICAgaW50IG1fbWVzaEJveExvY2F0aW9uOworICAgIGludCBtX3Byb2pl
Y3Rpb25NYXRyaXhMb2NhdGlvbjsKKyAgICBpbnQgbV90aWxlU2l6ZUxvY2F0aW9uOworICAgIGlu
dCBtX21lc2hTaXplTG9jYXRpb247CisgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOworICAgIGlu
dCBtX3NhbXBsZXJTaXplTG9jYXRpb247CisgICAgaW50IG1fY29udGVudFNhbXBsZXJMb2NhdGlv
bjsKKyAgICAKKyAgICBib29sIG1faXNJbml0aWFsaXplZDsKK307CisKK30KKworI2VuZGlmIC8v
IEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3Rv
bUZpbHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJiOGFkZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC0wLDAgKzEsMjEyIEBACisvKgorICogQ29weXJpZ2h0
IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVS
UykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkZFQ3VzdG9tRmlsdGVyLmgiCisKKyNpbmNs
dWRlICJDYWNoZWRTaGFkZXIuaCIKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJNZXNoLmgiCisjaW5j
bHVkZSAiQ3VzdG9tRmlsdGVyU2hhZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJEcmF3aW5nQnVmZmVyLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJS
ZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU3R5bGVDYWNoZWRTaGFkZXIuaCIKKyNpbmNs
dWRlICJUZXh0U3RyZWFtLmgiCisjaW5jbHVkZSAiVGV4dHVyZS5oIgorI2luY2x1ZGUgIlRpbGlu
Z0RhdGEuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCisjaW5jbHVkZSA8
d3RmL0J5dGVBcnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBvcnRob01hdHJpeChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQg
Ym90dG9tLCBmbG9hdCB0b3ApCit7CisgICAgZmxvYXQgZGVsdGFYID0gcmlnaHQgLSBsZWZ0Owor
ICAgIGZsb2F0IGRlbHRhWSA9IHRvcCAtIGJvdHRvbTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBvcnRobzsKKyAgICBpZiAoIWRlbHRhWCB8fCAhZGVsdGFZKQorICAgICAgICByZXR1cm4gb3J0
aG87CisgICAgb3J0aG8uc2V0TTExKDIuMGYgLyBkZWx0YVgpOworICAgIG9ydGhvLnNldE00MSgt
KHJpZ2h0ICsgbGVmdCkgLyBkZWx0YVgpOworICAgIG9ydGhvLnNldE0yMigyLjBmIC8gZGVsdGFZ
KTsKKyAgICBvcnRoby5zZXRNNDIoLSh0b3AgKyBib3R0b20pIC8gZGVsdGFZKTsKKworICAgIC8v
IFVzZSBiaWcgZW5vdWdoIG5lYXIvZmFyIHZhbHVlcywgc28gdGhhdCBzaW1wbGUgcm90YXRpb25z
IG9mIHJhdGhlciBsYXJnZSBvYmplY3RzIHdpbGwgbm90CisgICAgLy8gZ2V0IGNsaXBwZWQuIDEw
MDAwIHNob3VsZCBjb3ZlciBtb3N0IG9mIHRoZSBzY3JlZW4gcmVzb2x1dGlvbnMuCisgICAgY29u
c3QgZmxvYXQgZmFyVmFsdWUgPSAxMDAwMDsKKyAgICBjb25zdCBmbG9hdCBuZWFyVmFsdWUgPSAt
MTAwMDA7CisgICAgb3J0aG8uc2V0TTMzKC0yLjBmIC8gKGZhclZhbHVlIC0gbmVhclZhbHVlKSk7
CisgICAgb3J0aG8uc2V0TTQzKC0gKGZhclZhbHVlICsgbmVhclZhbHVlKSAvIChmYXJWYWx1ZSAt
IG5lYXJWYWx1ZSkpOworICAgIG9ydGhvLnNldE00NCgxLjBmKTsKKworICAgIHJldHVybiBvcnRo
bzsKK30KKworRkVDdXN0b21GaWx0ZXI6OkZFQ3VzdG9tRmlsdGVyKEZpbHRlciogZmlsdGVyLCBE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJp
bmcmIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
OjpNZXNoQm94VHlwZSBtZXNoQm94VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQorICAgIDogRmlsdGVy
RWZmZWN0KGZpbHRlcikKKyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX3ZlcnRl
eFNoYWRlcih2ZXJ0ZXhTaGFkZXIpCisgICAgLCBtX2ZyYWdtZW50U2hhZGVyKGZyYWdtZW50U2hh
ZGVyKQorICAgICwgbV9tZXNoUm93cyhtZXNoUm93cykKKyAgICAsIG1fbWVzaENvbHVtbnMobWVz
aENvbHVtbnMpCisgICAgLCBtX21lc2hCb3hUeXBlKG1lc2hCb3hUeXBlKQorICAgICwgbV9tZXNo
VHlwZShtZXNoVHlwZSkKKworeworfQorCitQYXNzUmVmUHRyPEZFQ3VzdG9tRmlsdGVyPiBGRUN1
c3RvbUZpbHRlcjo6Y3JlYXRlKEZpbHRlciogZmlsdGVyLCBEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hS
b3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94
VHlwZSBtZXNoQm94VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRkVDdXN0b21GaWx0ZXIoZmlsdGVyLCBkb2N1bWVudCwgdmVydGV4
U2hhZGVyLCBmcmFnbWVudFNoYWRlciwgbWVzaFJvd3MsIG1lc2hDb2x1bW5zLCBtZXNoQm94VHlw
ZSwgbWVzaFR5cGUpKTsKK30KKwordm9pZCBGRUN1c3RvbUZpbHRlcjo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKK3sKKyAgICBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0
aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBpZiAoIWRzdFBpeGVsQXJyYXkpCisgICAgICAgIHJl
dHVybjsKKworICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKKyAgICBJbnRS
ZWN0IGVmZmVjdEFEcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEo
aW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOworICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVs
QXJyYXkgPSBpbi0+YXNQcmVtdWx0aXBsaWVkSW1hZ2UoZWZmZWN0QURyYXdpbmdSZWN0KTsKKyAg
ICAKKyAgICBJbnRTaXplIG5ld0NvbnRleHRTaXplKGVmZmVjdEFEcmF3aW5nUmVjdC53aWR0aCgp
LCBlZmZlY3RBRHJhd2luZ1JlY3QuaGVpZ2h0KCkpOworICAgIGJvb2wgaGFkQ29udGV4dCA9IG1f
Y29udGV4dDsKKyAgICBpZiAoIW1fY29udGV4dCkgeworICAgICAgICBHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlciA9IHRydWU7CisgICAgICAgIGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhh
ID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBtX2NvbnRleHQgPSBHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIG1fZG9jdW1lbnQtPnZpZXcoKS0+cm9vdCgpLT5ob3N0V2lu
ZG93KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pOworICAgICAgICBtX2Ry
YXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBuZXdD
b250ZXh0U2l6ZSwgIWF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICAgICAg
CisgICAgICAgIG1fc2hhZGVyID0gQ3VzdG9tRmlsdGVyU2hhZGVyOjpjcmVhdGUobV9jb250ZXh0
LmdldCgpLCBtX3ZlcnRleFNoYWRlciwgbV9mcmFnbWVudFNoYWRlcik7CisgICAgICAgIG1fbWVz
aCA9IEN1c3RvbUZpbHRlck1lc2g6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIG1fbWVzaENvbHVt
bnMsIG1fbWVzaFJvd3MsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmxvYXRSZWN0KDAsIDAsIDEsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9tZXNoVHlwZSk7CisgICAgfQorICAgIAorICAgIGlmICghaGFkQ29udGV4
dCB8fCBtX2NvbnRleHRTaXplICE9IG5ld0NvbnRleHRTaXplKSB7CisgICAgICAgIG1faW5wdXRU
ZXh0dXJlID0gMDsKKyAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5yZXNldChuZXdDb250ZXh0U2l6
ZSk7CisgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZShuZXdDb250ZXh0U2l6ZS53aWR0aCgpLCBu
ZXdDb250ZXh0U2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIG1fY29udGV4dC0+dmlld3BvcnQoMCwg
MCwgbmV3Q29udGV4dFNpemUud2lkdGgoKSwgbmV3Q29udGV4dFNpemUuaGVpZ2h0KCkpOworICAg
ICAgICBtX2lucHV0VGV4dHVyZSA9IFRleHR1cmU6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIFRl
eHR1cmU6OlJHQkE4LCBuZXdDb250ZXh0U2l6ZS53aWR0aCgpLCBuZXdDb250ZXh0U2l6ZS5oZWln
aHQoKSk7CisgICAgICAgIG1fY29udGV4dFNpemUgPSBuZXdDb250ZXh0U2l6ZTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKG1faW5wdXRUZXh0dXJlLT50aWxlcygpLm51bVRpbGVzKCkgIT0gMSkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAw
KTsKKyAgICBtX2NvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJf
QklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQpOworICAgIAorICAgIG1f
Y29udGV4dC0+dXNlUHJvZ3JhbShtX3NoYWRlci0+cHJvZ3JhbSgpKTsKKyAgICAKKyAgICBpZiAo
bV9zaGFkZXItPnNhbXBsZXJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIG1fY29udGV4dC0+
YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOworICAgICAgICBtX2Nv
bnRleHQtPnVuaWZvcm0xaShtX3NoYWRlci0+c2FtcGxlckxvY2F0aW9uKCksIDApOworICAgICAg
ICBtX2lucHV0VGV4dHVyZS0+bG9hZChzcmNQaXhlbEFycmF5LT5kYXRhKCkpOworICAgICAgICBt
X2lucHV0VGV4dHVyZS0+YmluZFRpbGUoMCk7CisgICAgfQorICAgIAorICAgIGlmIChtX3NoYWRl
ci0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggcHJvamVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KC0wLjUsIDAuNSwgLTAu
NSwgMC41KTsKKyAgICAgICAgZmxvYXQgZ2xQcm9qZWN0aW9uTWF0cml4WzE2XTsKKyAgICAgICAg
cHJvamVjdGlvbk1hdHJpeC50b0NvbHVtbk1ham9yRmxvYXRBcnJheShnbFByb2plY3Rpb25NYXRy
aXgpOworICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobV9zaGFkZXItPnByb2pl
Y3Rpb25NYXRyaXhMb2NhdGlvbigpLCBmYWxzZSwgJmdsUHJvamVjdGlvbk1hdHJpeFswXSwgMSk7
CisgICAgfQorICAgIAorICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6QVJSQVlfQlVGRkVSLCBtX21lc2gtPnZlcnRpY2VzQnVmZmVyT2JqZWN0KCkpOworICAgIG1f
Y29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZG
RVIsIG1fbWVzaC0+ZWxlbWVudHNCdWZmZXJPYmplY3QoKSk7CisKKyAgICB1bnNpZ25lZCB2ZXJ0
ZXhTaXplID0gbV9tZXNoLT5ieXRlc1BlclZlcnRleCgpOworICAgIAorICAgIHVuc2lnbmVkIG9m
ZnNldCA9IDA7CisgICAgCisgICAgaWYgKG1fc2hhZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9u
KCkgIT0gLTEpIHsKKyAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hh
ZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCksIDQsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9B
VCwgZmFsc2UsIHZlcnRleFNpemUsIG9mZnNldCk7CisgICAgICAgIG1fY29udGV4dC0+ZW5hYmxl
VmVydGV4QXR0cmliQXJyYXkobV9zaGFkZXItPnBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSk7Cisg
ICAgfQorICAgIG9mZnNldCArPSA0ICogc2l6ZW9mKGZsb2F0KTsKKyAgICAKKyAgICBpZiAobV9z
aGFkZXItPnRleEF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVyLT50ZXhBdHRyaWJMb2NhdGlvbigpLCAyLCBHcmFw
aGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCB2ZXJ0ZXhTaXplLCBvZmZzZXQpOworICAgICAg
ICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fc2hhZGVyLT50ZXhBdHRyaWJM
b2NhdGlvbigpKTsKKyAgICB9CisgICAgb2Zmc2V0ICs9IDIgKiBzaXplb2YoZmxvYXQpOworICAg
IAorICAgIGlmIChtX3NoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAg
ICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVyLT5tZXNoQXR0cmliTG9j
YXRpb24oKSwgMiwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwgdmVydGV4U2l6ZSwg
b2Zmc2V0KTsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3No
YWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCkpOworICAgIH0KKyAgICBvZmZzZXQgKz0gMiAqIHNp
emVvZihmbG9hdCk7CisgICAgCisgICAgaWYgKG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpERVRBQ0hFRCAmJiBtX3NoYWRlci0+dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpICE9
IC0xKSB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihtX3NoYWRlci0+
dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpLCAzLCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZh
bHNlLCB2ZXJ0ZXhTaXplLCBvZmZzZXQpOworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KG1fc2hhZGVyLT50cmlhbmdsZUF0dHJpYkxvY2F0aW9uKCkpOworICAgIH0K
KyAgICAKKyAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJ
QU5HTEVTLCBtX21lc2gtPmluZGljZXNDb3VudCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfU0hPUlQsIDApOworICAgIAorICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KCk7CisKKyAg
ICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvSW1hZ2VEYXRhKG1fZHJhd2luZ0J1ZmZlci5nZXQoKSk7CisgICAgQnl0ZUFycmF5
KiBncHVSZXN1bHQgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOworICAgIEFTU0VSVChncHVS
ZXN1bHQtPmxlbmd0aCgpID09IGRzdFBpeGVsQXJyYXktPmxlbmd0aCgpKTsKKyAgICBtZW1jcHko
ZHN0UGl4ZWxBcnJheS0+ZGF0YSgpLCBncHVSZXN1bHQtPmRhdGEoKSwgZ3B1UmVzdWx0LT5sZW5n
dGgoKSk7Cit9CisKK3ZvaWQgRkVDdXN0b21GaWx0ZXI6OmR1bXAoKQoreworfQorCitUZXh0U3Ry
ZWFtJiBGRUN1c3RvbUZpbHRlcjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0
cywgaW50IGluZGVudCkgY29uc3QKK3sKKyAgICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKKyAg
ICB0cyA8PCAiW2ZlQ3VzdG9tRmlsdGVyIjsKKyAgICBGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVw
cmVzZW50YXRpb24odHMpOworICAgIHRzIDw8ICJdXG4iOworICAgIGlucHV0RWZmZWN0KDApLT5l
eHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzLCBpbmRlbnQgKyAxKTsKKyAgICByZXR1cm4gdHM7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVS
UykgJiYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjE4MjQ3OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmgKQEAgLTAsMCArMSw4
OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPi
gJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgor
ICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZFQ3VzdG9tRmlsdGVy
X2gKKyNkZWZpbmUgRkVDdXN0b21GaWx0ZXJfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAm
JiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNp
bmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FjaGVkU2hhZGVy
OworY2xhc3MgQ3VzdG9tRmlsdGVyTWVzaDsKK2NsYXNzIEN1c3RvbUZpbHRlclNoYWRlcjsKK2Ns
YXNzIERvY3VtZW50OworY2xhc3MgRHJhd2luZ0J1ZmZlcjsKK2NsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOworY2xhc3MgVGV4dHVyZTsKKyAgICAKK2NsYXNzIEZFQ3VzdG9tRmlsdGVyIDogcHVibGlj
IEZpbHRlckVmZmVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVDdXN0b21G
aWx0ZXI+IGNyZWF0ZShGaWx0ZXIqLCBEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgdmVydGV4U2hh
ZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uOjpNZXNoQm94VHlwZSwgCisgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uOjpNZXNoVHlwZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJl
KCk7CisgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKworICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgRkVDdXN0b21GaWx0ZXIoRmlsdGVyKiwgRG9jdW1lbnQqLCBjb25z
dCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlciwKKyAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMs
IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaEJveFR5cGUsIAorICAgICAgICAgICAgICAgICAg
IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUpOworICAgIAorICAgIERvY3VtZW50KiBt
X2RvY3VtZW50OworICAgIAorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0
OworICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVyPiBtX2RyYXdpbmdCdWZmZXI7CisgICAgUmVmUHRy
PFRleHR1cmU+IG1faW5wdXRUZXh0dXJlOworICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJTaGFkZXI+
IG1fc2hhZGVyOworICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJNZXNoPiBtX21lc2g7CisgICAgSW50
U2l6ZSBtX2NvbnRleHRTaXplOworICAgIAorICAgIFN0cmluZyBtX3ZlcnRleFNoYWRlcjsKKyAg
ICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlcjsKKworICAgIHVuc2lnbmVkIG1fbWVzaFJvd3M7Cisg
ICAgdW5zaWduZWQgbV9tZXNoQ29sdW1uczsKKyAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1l
c2hCb3hUeXBlIG1fbWVzaEJveFR5cGU7CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNo
VHlwZSBtX21lc2hUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNlbmRpZiAvLyBGRUN1
c3RvbUZpbHRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
VGV4dHVyZS5jcHAKaW5kZXggM2NmZDIzMC4uNWZmN2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtMzAsNyArMzAsNyBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFT
KQorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpIHx8IEVOQUJMRShDU1NfU0hBREVS
UykKIAogI2luY2x1ZGUgIlRleHR1cmUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9u
TWF0cml4LmNwcAppbmRleCBlMGQ0Zjc4Li5jMjFmNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTE5OCw1ICsxMTk4LDI0IEBAIFRyYW5zZm9ybWF0aW9u
TWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0bzJkVHJhbnNmb3JtKCkgY29uc3QKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tYXRyaXhbM11bMF0sIG1fbWF0cml4WzNdWzFd
LCAwLCBtX21hdHJpeFszXVszXSk7CiB9CiAKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRv
Q29sdW1uTWFqb3JGbG9hdEFycmF5KEZsb2F0TWF0cml4NCYgcmVzdWx0KSBjb25zdAoreworICAg
IHJlc3VsdFswXSA9IG0xMSgpOworICAgIHJlc3VsdFsxXSA9IG0xMigpOworICAgIHJlc3VsdFsy
XSA9IG0xMygpOworICAgIHJlc3VsdFszXSA9IG0xNCgpOworICAgIHJlc3VsdFs0XSA9IG0yMSgp
OworICAgIHJlc3VsdFs1XSA9IG0yMigpOworICAgIHJlc3VsdFs2XSA9IG0yMygpOworICAgIHJl
c3VsdFs3XSA9IG0yNCgpOworICAgIHJlc3VsdFs4XSA9IG0zMSgpOworICAgIHJlc3VsdFs5XSA9
IG0zMigpOworICAgIHJlc3VsdFsxMF0gPSBtMzMoKTsKKyAgICByZXN1bHRbMTFdID0gbTM0KCk7
CisgICAgcmVzdWx0WzEyXSA9IG00MSgpOworICAgIHJlc3VsdFsxM10gPSBtNDIoKTsKKyAgICBy
ZXN1bHRbMTRdID0gbTQzKCk7CisgICAgcmVzdWx0WzE1XSA9IG00NCgpOworfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggMDQ1MGFkNy4uYTk4ZDcwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMzUwLDYgKzM1MCw5IEBAIHB1
YmxpYzoKIAogICAgIC8vIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIG1hdHJpeCB3aXRob3V0IDNE
IGNvbXBvbmVudHMuCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdG8yZFRyYW5zZm9ybSgpIGNv
bnN0OworICAgIAorICAgIHR5cGVkZWYgZmxvYXQgRmxvYXRNYXRyaXg0WzE2XTsKKyAgICB2b2lk
IHRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KEZsb2F0TWF0cml4NCYgcmVzdWx0KSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICAvLyBtdWx0aXBseSBwYXNzZWQgMkQgcG9pbnQgYnkgbWF0cml4IChhc3N1
bWUgej0wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmM2MDYzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdE9ic2VydmVy
LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5c3RlbXMg
SW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IK
KyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEZpbHRlckVmZmVjdE9ic2VydmVyX2gKKyNkZWZpbmUgRmlsdGVyRWZmZWN0T2JzZXJ2ZXJfaAor
CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEZpbHRlckVmZmVjdE9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5GaWx0ZXJFZmZl
Y3RPYnNlcnZlcigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKSA9
IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCisKKyNlbmRpZiAvLyBGaWx0ZXJFZmZlY3RPYnNlcnZlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBlNjZl
ZjVlLi5lMGRjMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVy
RWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJF
ZmZlY3RSZW5kZXJlci5jcHAKQEAgLTM0LDExICszNCwxOSBAQAogI2luY2x1ZGUgIkZFRHJvcFNo
YWRvdy5oIgogI2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCiAjaW5jbHVkZSAiRkVNZXJnZS5o
IgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdE9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252
ZXJzaW9uLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1
ZGUgIkNhY2hlZFNoYWRlci5oIgorI2luY2x1ZGUgIkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgor
I2luY2x1ZGUgIkZFQ3VzdG9tRmlsdGVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBlbmRNYXRyaXhS
b3coVmVjdG9yPGZsb2F0PiYgcGFyYW1ldGVycykKQEAgLTU1LDkgKzYzLDIwIEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBsYXN0TWF0cml4Um93KFZlY3RvcjxmbG9hdD4mIHBhcmFtZXRlcnMpCiAgICAg
cGFyYW1ldGVycy5hcHBlbmQoMSk7CiAgICAgcGFyYW1ldGVycy5hcHBlbmQoMCk7CiB9CisgICAg
CisgICAgCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCitzdGF0aWMg
Ym9vbCBpc1dlYkdMRW5hYmxlZChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgLy8gV2Ugb25s
eSB3YW50IHRvIGVuYWJsZSBzaGFkZXJzIGlmIFdlYkdMIGlzIGFsc28gZW5hYmxlZCBvbiB0aGlz
IHBsYXRmb3JtLgorICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LT5zZXR0aW5ncygp
OworICAgIHJldHVybiBzZXR0aW5ncyAmJiBzZXR0aW5ncy0+d2ViR0xFbmFibGVkKCk7Cit9Cisj
ZW5kaWYKIAotRmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcmVyKCkKLSAg
ICA6IG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZChmYWxzZSkKK0ZpbHRlckVmZmVjdFJlbmRlcmVy
OjpGaWx0ZXJFZmZlY3RSZW5kZXJlcihGaWx0ZXJFZmZlY3RPYnNlcnZlciogb2JzZXJ2ZXIpCisg
ICAgOiBtX29ic2VydmVyKG9ic2VydmVyKQorICAgICwgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVk
KGZhbHNlKQogewogICAgIHNldEZpbHRlclJlc29sdXRpb24oRmxvYXRTaXplKDEsIDEpKTsKICAg
ICBtX3NvdXJjZUdyYXBoaWMgPSBTb3VyY2VHcmFwaGljOjpjcmVhdGUodGhpcyk7CkBAIC03Miw4
ICs5MSwxNCBAQCBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRlcmVyOjppbnB1dENv
bnRleHQoKQogICAgIHJldHVybiBzb3VyY2VJbWFnZSgpLT5jb250ZXh0KCk7CiB9CiAKLXZvaWQg
RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJh
dGlvbnMsIGNvbnN0IExheW91dFJlY3QmIGJvcmRlckJveCkKK3ZvaWQgRmlsdGVyRWZmZWN0UmVu
ZGVyZXI6OmJ1aWxkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
b3BlcmF0aW9ucywgY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyQm94KQogeworI2lmICFFTkFCTEUo
Q1NTX1NIQURFUlMpIHx8ICFFTkFCTEUoV0VCR0wpCisgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50
KTsKKyNlbHNlCisgICAgQ2FjaGVkU2hhZGVyTGlzdCBjYWNoZWRTaGFkZXJzOworI2VuZGlmCisK
ICAgICBtX2VmZmVjdHMuY2xlYXIoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dDsKQEAgLTIxNCw3ICsyMzksNDEgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3QgTGF5b3UKICAgICAgICAg
fQogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkNVU1RPTTogewotICAgICAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIGluIHRoZSBzb2Z0d2Fy
ZSBwYXRoLgorI2lmIEVOQUJMRShXRUJHTCkKKyAgICAgICAgICAgIGlmICghaXNXZWJHTEVuYWJs
ZWQoZG9jdW1lbnQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb24qIGN1c3RvbUZpbHRlck9wZXJhdGlvbiA9
IHN0YXRpY19jYXN0PEN1c3RvbUZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGZpbHRlcnMgYXJlIGFs
cmVhZHkgbG9hZGVkLiBJZiBub3QganVzdCBza2lwIHRoZW0gaGVyZS4KKyAgICAgICAgICAgIFN0
cmluZyB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyOworICAgICAgICAgICAgYm9vbCBzaGFk
ZXJzTG9hZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChjdXN0b21GaWx0ZXJPcGVyYXRpb24t
PnZlcnRleFNoYWRlcigpKSB7CisgICAgICAgICAgICAgICAgQ2FjaGVkU2hhZGVyKiBjYWNoZWRT
aGFkZXIgPSBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPnZlcnRleFNoYWRlcigpLT5jYWNoZWRTaGFk
ZXIoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkU2hhZGVyKTsKKyAgICAgICAgICAg
ICAgICBjYWNoZWRTaGFkZXJzLmFwcGVuZChjYWNoZWRTaGFkZXIpOworICAgICAgICAgICAgICAg
IGNhY2hlZFNoYWRlci0+YWRkQ2xpZW50KHRoaXMpOworICAgICAgICAgICAgICAgIGlmIChjYWNo
ZWRTaGFkZXItPmlzTG9hZGVkKCkpCisgICAgICAgICAgICAgICAgICAgIHZlcnRleFNoYWRlciA9
IGNhY2hlZFNoYWRlci0+c2hhZGVyU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBzaGFkZXJzTG9hZGVkID0gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoY3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5mcmFnbWVudFNoYWRlcigpKSB7
CisgICAgICAgICAgICAgICAgQ2FjaGVkU2hhZGVyKiBjYWNoZWRTaGFkZXIgPSBjdXN0b21GaWx0
ZXJPcGVyYXRpb24tPmZyYWdtZW50U2hhZGVyKCktPmNhY2hlZFNoYWRlcigpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChjYWNoZWRTaGFkZXIpOworICAgICAgICAgICAgICAgIGNhY2hlZFNoYWRl
cnMuYXBwZW5kKGNhY2hlZFNoYWRlcik7CisgICAgICAgICAgICAgICAgY2FjaGVkU2hhZGVyLT5h
ZGRDbGllbnQodGhpcyk7CisgICAgICAgICAgICAgICAgaWYgKGNhY2hlZFNoYWRlci0+aXNMb2Fk
ZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIgPSBjYWNoZWRTaGFkZXIt
PnNoYWRlclN0cmluZygpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgc2hhZGVyc0xvYWRlZCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KHNoYWRlcnNMb2FkZWQpIHsKKyAgICAgICAgICAgICAgICBlZmZlY3QgPSBGRUN1c3RvbUZpbHRl
cjo6Y3JlYXRlKHRoaXMsIGRvY3VtZW50LCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmls
dGVyT3BlcmF0aW9uLT5tZXNoUm93cygpLCBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPm1lc2hDb2x1
bW5zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
dXN0b21GaWx0ZXJPcGVyYXRpb24tPm1lc2hCb3hUeXBlKCksIGN1c3RvbUZpbHRlck9wZXJhdGlv
bi0+bWVzaFR5cGUoKSk7CisgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTIzOSw2ICsyOTgsMTcgQEAgdm9pZCBGaWx0ZXJFZmZl
Y3RSZW5kZXJlcjo6YnVpbGQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29u
c3QgTGF5b3UKIAogICAgIG1fZWZmZWN0cy5maXJzdCgpLT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQo
bV9zb3VyY2VHcmFwaGljKTsKICAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdS
ZWdpb24pOworICAgIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQor
ICAgIGZvciAoQ2FjaGVkU2hhZGVyTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fY2FjaGVkU2hhZGVy
cy5iZWdpbigpLCBlbmQgPSBtX2NhY2hlZFNoYWRlcnMuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0
ZXIpCisgICAgICAgIGl0ZXItPmdldCgpLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgbV9jYWNo
ZWRTaGFkZXJzLnN3YXAoY2FjaGVkU2hhZGVycyk7CisjZW5kaWYKK30KKwordm9pZCBGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIG1f
b2JzZXJ2ZXItPmZpbHRlck5lZWRzUmVwYWludCgpOwogfQogCiB2b2lkIEZpbHRlckVmZmVjdFJl
bmRlcmVyOjpwcmVwYXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aWx0ZXJFZmZlY3RSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmgKaW5kZXggMWQ2ODRkMy4uMjFjMmEzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTI4LDYgKzI4LDggQEAK
IAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIAorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xp
ZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGaWx0
ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRp
b25zLmgiCkBAIC00NCwxMiArNDYsMTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPEZpbHRlckVmZmVjdD4gPiBGaWx0ZXJFZmZlY3RMaXN0OworY2xhc3Mg
RG9jdW1lbnQ7CitjbGFzcyBGaWx0ZXJFZmZlY3RPYnNlcnZlcjsKK2NsYXNzIENhY2hlZFNoYWRl
cjsKIAotY2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVyZXIgOiBwdWJsaWMgRmlsdGVyIHsKK2NsYXNz
IEZpbHRlckVmZmVjdFJlbmRlcmVyIDogcHVibGljIEZpbHRlciwgcHVibGljIENhY2hlZFJlc291
cmNlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gY3JlYXRlKCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gY3JlYXRlKEZpbHRlckVmZmVjdE9i
c2VydmVyKiBvYnNlcnZlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmls
dGVyRWZmZWN0UmVuZGVyZXIoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsdGVy
RWZmZWN0UmVuZGVyZXIob2JzZXJ2ZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KQpAQCAtNjcs
MTEgKzczLDEzIEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQqIGlucHV0Q29udGV4dCgp
OwogICAgIEltYWdlQnVmZmVyKiBvdXRwdXQoKSBjb25zdCB7IHJldHVybiBsYXN0RWZmZWN0KCkt
PmFzSW1hZ2VCdWZmZXIoKTsgfQogCi0gICAgdm9pZCBidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiwgY29uc3QgTGF5b3V0UmVjdCYpOworICAgIHZvaWQgYnVpbGQoRG9jdW1lbnQqLCBjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiwgY29uc3QgTGF5b3V0UmVjdCYpOwogICAgIHZvaWQgcHJlcGFy
ZSgpOwogICAgIHZvaWQgYXBwbHkoKTsKICAgICAKICAgICBJbnRSZWN0IG91dHB1dFJlY3QoKSBj
b25zdCB7IHJldHVybiBsYXN0RWZmZWN0KCktPmhhc1Jlc3VsdCgpID8gbGFzdEVmZmVjdCgpLT5y
ZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKEludFJlY3QobV9maWx0ZXJSZWdpb24pKSA6
IEludFJlY3QoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKik7CiAgICAgCiBwcml2YXRlOgogCkBAIC04OSw3ICs5Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKCk7Cisg
ICAgRmlsdGVyRWZmZWN0UmVuZGVyZXIoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqKTsKICAgICB2aXJ0
dWFsIH5GaWx0ZXJFZmZlY3RSZW5kZXJlcigpOwogICAgIAogICAgIEZsb2F0UmVjdCBtX3NvdXJj
ZURyYXdpbmdSZWdpb247CkBAIC05Nyw2ICsxMDUsMTIgQEAgcHJpdmF0ZToKICAgICAKICAgICBG
aWx0ZXJFZmZlY3RMaXN0IG1fZWZmZWN0czsKICAgICBSZWZQdHI8U291cmNlR3JhcGhpYz4gbV9z
b3VyY2VHcmFwaGljOworICAgIEZpbHRlckVmZmVjdE9ic2VydmVyKiBtX29ic2VydmVyOyAvLyBO
byBuZWVkIGZvciBhIHN0cm9uZyByZWZlcmVuY2VzIGhlcmUuIEl0IG93bnMgdXMuCisgICAgCisj
aWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisgICAgdHlwZWRlZiBWZWN0
b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2hhZGVyPiA+IENhY2hlZFNoYWRlckxpc3Q7
CisgICAgQ2FjaGVkU2hhZGVyTGlzdCBtX2NhY2hlZFNoYWRlcnM7CisjZW5kaWYKICAgICAKICAg
ICBib29sIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA1MTdiMzBmLi43OGYwNTVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQ0NDQsMTIgKzQ0NDQsMTIgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3QoKQogewogICAgIGlmICho
YXNGaWx0ZXIoKSkgewogICAgICAgICBpZiAoIW1fZmlsdGVyKSB7Ci0gICAgICAgICAgICBtX2Zp
bHRlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fZmls
dGVyID0gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSh0aGlzKTsKICAgICAgICAgICAgIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyKCktPmZyYW1lKCktPnBhZ2UoKS0+
c2V0dGluZ3MoKS0+YWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBV
bmFjY2VsZXJhdGVkOwogICAgICAgICAgICAgbV9maWx0ZXItPnNldFJlbmRlcmluZ01vZGUocmVu
ZGVyaW5nTW9kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2ZpbHRlci0+YnVpbGQocmVuZGVy
ZXIoKS0+c3R5bGUoKS0+ZmlsdGVyKCksIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5ib3JkZXJC
b3hSZWN0KCkpOworICAgICAgICBtX2ZpbHRlci0+YnVpbGQocmVuZGVyZXIoKS0+ZG9jdW1lbnQo
KSwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyKCksIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkp
LT5ib3JkZXJCb3hSZWN0KCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZmlsdGVyID0gMDsK
ICAgICB9CkBAIC00NDY2LDYgKzQ0NjYsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRmls
dGVyQmFja2luZ1N0b3JlKCkKICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVyTGF5ZXI6OmZpbHRlck5l
ZWRzUmVwYWludCgpCit7CisgICAgcmVuZGVyZXIoKS0+bm9kZSgpLT5zZXROZWVkc1N0eWxlUmVj
YWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICByZW5kZXJlcigpLT5yZXBhaW50KCk7Cit9
CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaAppbmRleCAyMzAwYWQ0Li5hNGI0MGYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDQsNiArNDQsOSBAQAogI2lmbmRlZiBSZW5kZXJMYXll
cl9oCiAjZGVmaW5lIFJlbmRlckxheWVyX2gKIAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNp
bmNsdWRlICJGaWx0ZXJFZmZlY3RPYnNlcnZlci5oIgorI2VuZGlmCiAjaW5jbHVkZSAiUGFpbnRJ
bmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiU2Nyb2xsQmVoYXZpb3Iu
aCIKQEAgLTIwOCw3ICsyMTEsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZml4ZWQgOiAxOwog
fTsKIAotY2xhc3MgUmVuZGVyTGF5ZXIgOiBwdWJsaWMgU2Nyb2xsYWJsZUFyZWEgeworY2xhc3Mg
UmVuZGVyTGF5ZXIgOiBwdWJsaWMgU2Nyb2xsYWJsZUFyZWEKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCisgICAgLCBwdWJsaWMgRmlsdGVyRWZmZWN0T2JzZXJ2ZXIKKyNlbmRpZgorewogcHVibGlj
OgogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJSZXBsaWNhOwogCkBAIC01MTYsNiArNTIzLDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGJvb2wgaGFzRmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+aGFzRmlsdGVyKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZmlsdGVyTmVlZHNSZXBhaW50KCk7CiAjZW5kaWYKIAogICAgIC8vIE92ZXJsb2FkZWQgbmV3
IG9wZXJhdG9yLiBEZXJpdmVkIGNsYXNzZXMgbXVzdCBvdmVycmlkZSBvcGVyYXRvciBuZXcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmgK
aW5kZXggODhiZmM4MS4uMjY5MjI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgog
ICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdDsK
ICAgICAKKyAgICB2aXJ0dWFsIENhY2hlZFNoYWRlciogY2FjaGVkU2hhZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaGFkZXIuZ2V0KCk7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgU3R5bGVDYWNoZWRT
aGFkZXIoQ2FjaGVkU2hhZGVyKik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVNoYWRlci5oCmluZGV4IDliMzY2NzcuLmZmNWQyZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNoYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNoYWRlci5oCkBAIC0zNiw4ICszNiw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVkU2hhZGVyOwogY2xhc3MgQ1NTVmFs
dWU7Ci0gICAgCisKIGNsYXNzIFN0eWxlU2hhZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVT
aGFkZXI+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdHlsZVNoYWRlcigpIHsgfQpAQCAtNDcs
NiArNDgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBjc3NWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICAKKyAgICB2aXJ0dWFsIENhY2hlZFNoYWRlciog
Y2FjaGVkU2hhZGVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIAogcHJvdGVjdGVkOgogICAg
IFN0eWxlU2hhZGVyKCkKICAgICAgICAgOiBtX2lzQ2FjaGVkU2hhZGVyKGZhbHNlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119732</attachid>
            <date>2011-12-17 10:50:15 -0800</date>
            <delta_ts>2011-12-18 12:17:44 -0800</delta_ts>
            <desc>Patch V6</desc>
            <filename>bug73317_8.patch</filename>
            <type>text/plain</type>
            <size>83644</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNTgxOWE4Li4zYzE2NmI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTIt
MTYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gQWRkIEZFQ3VzdG9tRmlsdGVyIHRoYXQgcmVuZGVycyBjdXN0b20gZmlsdGVy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTcK
KworICAgICAgICBXZWJLaXQyIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgV2ViR0wgZmxhZyBpbiBsYXlv
dXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UuCisgICAgICAgIFNraXBwaW5nIHRo
ZSB0ZXN0IGxpa2UgYWxsIHRoZSBvdGhlciBXZWJHTCB0ZXN0cyBkby4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvZmlsdGVycy9lZmZlY3Qt
Y3VzdG9tLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0ZXJzL2VmZmVj
dC1jdXN0b20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvZWZm
ZWN0LWN1c3RvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3VyY2Vz
L2NvbG9yLW9mZnNldC5mczogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0ZXJzL3Jlc291cmNl
cy92ZXJ0ZXgtZXhwbG9kZS1kZXRhY2hlZC52czogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0
ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93azIvU2tpcHBlZDogU2tpcHBpbmcgdGhlIHRlc3QgdW50aWwgV2ViR0wgY2FuIGJlIGVuYWJs
ZWQgZnJvbSBsYXlvdXRUZXN0Q29udHJvbGxlci4KKwogMjAxMS0xMi0xNiAgQ2hyaXMgTWFycmlu
ICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgSGFyZHdhcmUgYWNjZWxlcmF0aW9uIG9m
IFczQyBGaWx0ZXIgRWZmZWN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJz
L2VmZmVjdC1jdXN0b20tZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2Vm
ZmVjdC1jdXN0b20tZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0OGJmNDFkOTFlMDVlMTQ5YTRh
MzVjYjU3YjlhMGViN2E1OWJlNGQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE0ODk1CnpjbWVI
T2RweShhYCRyRHRUc2llUG1ncGN1PGF9NXBzWUVCcVgtPWdjaHBDTUA0b041RiZgRlV+aWw7fTY2
ZnFrcgp6YllpNHpuUWkyLWlPcCM8JTt4KilkQ0s8c2UqZ0tzVWNjfTJgdSp8cSpYO0pXP19KbVhk
U0JQfHpPUWxCP1UwajwKejxacUhmTFA5ZG1gfVEwVzU/WkF0QnFaWG9Te3p1KGlNa0wweWxqSXpk
Y1h0RW9DKndxTVRROShwV2Z4flopUnJkCno/ezkycXZlVnFlRndsSGd6JUtMQ01nZjdSMCp3dCM2
Pm1IJDE1Vkw2PilfeiM/QkpsfmJ7PX5BWjBJUT1wPWphTQp6VzBhNj9IdzlrcnNsM1g4R3xTKyVZ
aSFTQ2ckRXNsSjNPY2ZJWkB5NGBRNWEzPEckUklGej1rISYyKGc/I01kO2EKeldlWnxUIWdnTGxg
ZkNhXz94c3d1Zzgkc3BFMU0zXlptUTFESEY0UTtiWDZUMk9fXnN7WUByVk03UzVtWj57Yys0CnpR
I2dMcXdkS3t+bjtgfHR3NkwkNWdXbHA5bSRYWXRgKm9lYmFeMjVqQ2FQeS1IQ2pYQTNARHxIN3gq
UlRqYFozfAp6SDcpR3pVMmlyR29HZCkre1RhVCN6dnQ+aXAzJHlYP0ZWNVZySmAjemdVejlWJHBo
REtYeH18O3ZKMEhFPTlOVD8KenoyJCtJVkRvIXRgKTZiYjlteHRxVFhkaD8xZl5NKklVWD8+NHN2
YFpKdipyaE9QUGpMeyY5T1d4MTFffUJQP2diCnpwfDFGQVdLRH5OaTBkT2xVeitWOER3eTNiXkND
UDwyYTkoaD9ifG4zdGt1Tyg4U3UwQj0lO2VCUGl8WU1xcWV5cgp6Ozg9eG09LUNtZVJhYkxIeTZI
QH1vMFNEN2pWOHQ/WDlucVJjU09nR1QzRTlPX0E9YCtjdypLcWlOUmdBclEzUUUKeiE4e0NgYl5o
OUwlKzFOTT1OZFBARnVpVkN4KVheKj9JcWY7LXlqYSN0PWVhUUF6ZHdLWWshdSN3MH08RW4/TDZj
CnpEczktYnxJdyRqQE1BSTAlekxjMS1udlV5YkJjWmtrJHZmXyNQV0xmYTwtcTdQdHc3c0h6PW1J
KUR7eUMoX2JXeQp6KTwwWEhxbmE0JHxGfTRPel5yYUtTMmU2bVlWfjI+d2MpQ0x6Tmc7MVVPMEA4
RyMkeDJuIU9rKWgxKz9YcCViO3YKekwlUk95cjA/QUpQKVhOUjx5WUJfcFdrK24laCFITEk9OTJO
RWRPWUc+JHVMUmdQK0VOVU4mQjEqfCkwOVhCcyhwCno9M3pJeEpoKX50LVJtWmBNSTNRcVl+LTdf
MGJVez57bjJNJnA+QjBLPSk4OU5EYGwycntLaVNGRzFlQVIzJSVsQgp6TzJsPnRqVElZdGotazc9
Pkt8NmMtcChMeW5ZQnMoYk56O0FSb0UofGApYS1DNCtEU1NVayFIXlRCUT9xRDBAY2kKeioyTFAy
UXQ/K1Jec2k9PTEpUnVxKXN1d1ltLWZ3O2MxRz57M2FZZnFwcyVWcStUJH5GNzZQLUYqJlo+ZiU2
JlpzCnpHQ01CcnlQPkhJMjJ3NkdqdlFLMzhTbEdlT3AmTipvbk09aldrbjF1dytadkZQcVRGfEJm
PiNtOHAzRn52TSZYPQp6S2ZqUXVMeTF6KyNmIyFrdj9ZNjk2K3cwaTMyNnlBQDdhQVVUOXs2OXlg
QzJ3WCpXcllSa01uKyoydV5NSktTOEMKenM9THxvbUdFfVFWYDFIKC1VfEN2bnJfKn1DfUNCNVZ2
dkw0aTcqJCE/WWttJCg1N3djRHo5eUtPY2c4Tl5aTUMwCnpTTmskdTlsRDYqSHM9UiNyVj14UHRA
RlNeYXRMeEE/RFMkc3A5S31VY3ZKX01ONSElcTsxSTMlNGUpbDJESl9wNwp6P0ZKJkV0TDMlOE5r
WVFGNTI0OVQ+SDUoITJEfEAkYGAzRE1mI2c7I3RVVWlBZEJSUiV2N2lyc1ZCfipuYE1Gb30KejNR
RkxlWHc1O2VAWWtLYzh8Pmo5bHFCKmtnI1MoYFMlMUE3eGFOQVYpWUBNa0YwV015PnQyKHRMMUpk
cFZ2fSRBCnokVkZNdGRiUzFuJFlJRFZ6cVlfR1NnQjxgaz52KUBGIXBnfU0yfnlfXz8wOEJKPF9J
YnV4ZFdOdHpOQFpDM2JRXgp6K3YkPTwtNzdoU29WfktTUWlEfjtob1o2PFFCU0VibHFmWSRYUmFQ
NHpBQVFDRz18M2hhPCFrOEVgZjd3Z2dtNV8KenpRJFd3IzFrSn5mVmVqRFhvMilSSGMzLX52Sm1M
WDlrQClLZnk2aD1xKmZ5X09DNE54P1BaTylyP0FwVTg7e0F4CnpUQytad3Q1cX5MWiFDY0R7YENA
UD1vV3A+N3pmNyZGPiZ8bHZvbFIkbSpyfEgzciFOMWgtc340dFoyaWtQdVkqZwp6bVoxaWBFbENv
MnJra35EOEFIKzRPcjYzY3JwfkNQenx6eGdnLUs3SGh5RHVCJiY+Jkl3clY5ZipVSmgzOXM8TkQK
eldTenkmRiNkUUIzPXhzczJmMTB7entrOFBNP35eJSZLXzktOCM9Ui1NRT05OXJWYDI7WmROYHRO
V0RRQTlANkMlCno7e15TeGhFYXF+X0xRYnxkNFpqdlMtO3NKcVN7ZWMzKUlhaUdqO3VXSE4/c0Mm
WG1BQzhTUSk3bENpJGcrdmVWUAp6ZDZoV2Y5SEh9UzRQdTs4OHRXbSYwOWF1IUNWYVUtTmdSTl51
Qz4+XmhXPmB7cmZgMWBuTmFKNlN0Wk8zK251MncKelhzbWpfJEdNUlZqbUJeMUplP1cxd3VIZUA3
a1hxWHk4WlBzNjRAc19JcHAlUGhKWjwyQGVoRG0tRFRzMHt2dE0jCnooR3JpRzRyWHVTZCsreD1O
bn5lbFRrc21idEYqJmw7bkI2LWtBRCNzZkxLTXBGek5kMilKWjt6TVBuNyp6X0QtTwp6K1hSO09O
XlI5RFBLZHdEazNoMTltX253OGs8VEBPcjdpJjRHbnhmRGQ+YWEjZ3ZJe0R0aVBjQndrNCgzVVhK
b0QKem9AdCtMN3E+N0NiPmV8eUwjU0JqKk0/VTh5OVZ1UUI8KXlHdFI5bkFLMTJuJVNUMnxtMmk8
QUdDfFA3dFVQZ2s/CnpqdjdNd2hobk95NiMyYkhiYSspdV8mSUVLT1NxM01CPjwhITRfWmkydntC
fF9DQ0x3OC1vV357cGh9d3FDIWs/Mwp6dGdKRzR4fEV3WmtvQ2ZWRFNIa1RpRk5OcXYxP2Z7SnRs
eSRQWHFOKjRgY2ojVCU3ZT5JbEhETUlRLTxQeUdZKUgKenk3KHp0QkRJKzZKfEVMbS1mM2ApTG4+
SmxFZkxneCNeO2BaPjs2REJAT2FaRXp9ZTZvZloxb0NnQU5MQ3VNJnZKCnpqJkZlaXo/IS1NSE53
UEdTKGxIUXA5ZmZZZ1ZMMGQwSkMjLTN6SV5CRTA8YyZGQjY3NDNYYFBNPF4qa1UwZzgjfgp6amg8
QTJmVTc4fT47UTNwTHNzSDRHQmoqe3RNNG42djhSXnc5OzVZakQ1MmtSRHIpckw3IXYoXlhQd09l
NDFjbDAKemo1STVUYkdoNj5oWjx3QGJIbDJPI0BhPk05X09tR14pJWBwTntGV3JATCNlMDRjKz05
U09YZVREO21TNGdXbkUtCnpmeD9lNGdmc2xjSURKSyhWO2E5IyFTRlI5NHRSOHBrRnE2IylMQj0l
cWpnciFyKkdxNVpXfFZma2NJRGVfTHNYWAp6PEttfFZAVyVXek10OWxjPFRaK0pVfG9+dzVXZDRJ
bWpVYyNCVD4lJFpUMHtJKlR8NTJgSmxJTTFqeV9fM1IkO3wKeig+KnNKRiFtfDZydT8oZHQ9XzZO
PSpHX0JaX187bnshZiN0aF5mJSNwdExJMFczfV55OD1iYFhoLXo0c1lFZjshCnpPb3RiN3toTUNa
Mkh9TTl5fGkpezJ+X1A7S3hvc2Q8fXBXSE9TbFIpcGU3JUI1JkxiUyVxQyh4NFl8R2sjSkQpfgp6
ZkpLRkFTTGZqMGB3M3BURzkmNlhoXl42PmxxeXRQOSRwLSFZPWlJX2tDZWRrN1ZHTVlSTzB2aj9j
YEhQbGE8eigKeipeSU94VllVS1BrbmlYZ05NVm1nZk40bCQrX0tZSlY4MFhxUXQ8KW44dit6JTBY
aDg3OXd5JWFuRzs4MChAU01NCnojfUJtfjRZUCVSJCFtdDgjaXttcUJJKGVANCFUVTw/X3RvJWp0
Un5+PlZAT3lPUTxsMzZodyZ9KmB2ViRZUiRIJQp6OzE1TjlkXlRNKStGeTVuSGNfdmpafFdgRnV3
ZTI9WDl+b3d4KG43a0ZEczV5bXFjPmFCei02OWAma3QtYFJNU0wKemczS3pyUXA8O3xwTTd8OzFV
elhzKSp5aDZSPlpKfjkqPlJEWWtaXiFSNkBVPHFVcFJBU2hGSnpwZ0JOUURgSUxWCnp0RUFWUClf
NDJeKkAlYlhrbiFPU15NMTZMTDMzdENNcShMZUc2aW81aUE4d1A7XlhJPCVQdmczZ3hEOztJY3wm
bgp6dnhSS21fb2JjXmk+NVFZZGN6diQofm5uWkIrZmw0Xl85fnxQdkE9NVA0S3kxS2RDanhkWmBf
YVFVN3AkYVRyMUEKekpianZkSiRBa2QkKnt9azlrIVp9V202c3p4PEhwczZXMT1yVWd0SHs3fCpl
eWtCeyp2Zz5zbUw4WHY/PVFSbGVxCnpURVpWLT0yJVFJb14xe0E7SWBzaXdPeW4zYjBTdVdiS3B2
TW19TkJQZXJGdihKfn1qZT0/S0xEISk9Wmw8VGszLQp6XlVQJXZtWXlWckVpS09CdHNvMHZCNHZK
VkdEWDdrc2h8MmQqUEFVRCswQzl7SldoKEEkdF9VemVLOWsqZHM1PV8KemxqRC16bGE3Y1FMZEg2
RFpeYn1xNnRWJkJRLVEyRE1pP2smNjBMQXltbjkmKWZmOyZae3lkVnBIU1I5R0UyaDYpCnpnOGUq
WFpeRlZTWURwWHE3TCspfmdBTWYhUkZ7K0RNXkFBdEhJPU19PDAmcE4rbXI+bWc1TV9+YkRmdFlF
QTlBTQp6c1NoLXI4aFBSWXo3bzB6MlU3UF9xc1hgYEtqbyE+anJ3bjlqfGsraDUwSll8bG57cXNE
aFQkO2d2TENDKmVaMzQKem8ldlFMMyhWSnxWZT9haVo0Tnw3b0ZqeGleeksjPi1YPjtLbG9MWmFA
d19lXlF5clltaUBgTFpXfmhOfD9SJlh0CnpxK21hIVpJbEVqSE1MKn52OGFoT0h5cFEyLXZNZjYx
YVlUNzcra0laOHZpKDxzKzBBUT5LaWtCPWRhZlUpfFhDfQp6dVQ0K0ZRdEg1I0NFUUZFRUZsciVo
KGRmbkhxUUJkaiQ8K3hYN3pGNFhXalJecE0oSjReYEZ5VWMzeE57U0ZkdCgKekF9TiRIUzgqc3dE
NEF7YEFKX1EhTWNMXlR2XlVuM187JCs8UUsoaXpfKmJxUjRvPUFwOVUyUUEtcmBDa15kN2ozCnpo
RDtyZHBiVVBQckRIJGdHIWpAajFnbnhiYzF3cWdFMjRteWZEYl4mZWIhMXkxVnMoYk1qMXRpVj4j
anpkWm5gWQp6VUxIfjUkbFJzZD1hSGwyWXIqYnk4VTNrYz8oNSgtPVNgeS1PaCFkOER0YFAkZX1V
V3kyI0wjQE9FY1MxbGs0dT0KenFiKFklTkVvNT9WaT9+ODBRZ2xoeihEb1dVcjJlcS1PU0xwJlRD
U0ZlIyo9cWlrazM9eGxkPWwmQTJRMXNqPjBZCnpvdlJPciYoPzR4UD5Mc1JEN3w4K0swditud2p5
eHJzb34qdD80NDNHZEtQMXdKR0wpaWEkPXZpeDRWa0ZAOT96dAp6JSNTS0xZJGlgKGh5e2Z8UUYh
M3tJTykwSCNfK2g1dEQ7TTRYVWh+d0FEa1FKKE9lUD1KPTFqVW1XRWEqOGEkYmkKek9AYHBiMVJD
RXhGaEN2PWh1V1JYQVNhJiM2eXhBY2NEKD8xK3lMJTBiKFpzNnc0WE9uSCh3NTZLPlRmTTBBbEpJ
CnohdTl6NFFwcypBU3UkP09oJlFlMnkmUFokZzFXWVhAQz0oelQtKm00Sk1MQmRDQ3lSWjk5OXt2
c2ZsREJGbkdmbwp6VX1pTCFFUGlCVVhqJjtaa2g3I24kfHx3VXNhdGw1ckJnKyZrY0cpJlRub2RT
Y1NwMUohMzF9ejxwNXJUbUFmVXQKejQ2WWVASExDelVUYWlfT1d4aXtpdU8mMzwmMWRWKz5ON2B8
KGsmOUVoZHMhTnRkcy1BPjVKYGwqMil9O2l0UCswCnpFNHo7UT9zN3AhSkcqV0A2PVcwcThPbWRo
NjdZMjhNcClHNlE9a09LZFIhfE95VGx0TSNMSG5LTW41NWMzUztKRwp6ZEN1c2dRZjFmJWZsajBB
cjhSM3VJYUhISDJYS3VANnsoNlYhcXBKO3ZyXjB+IXtlZXByakYhP1hYRHpSeUM3OX0Kem5zan0/
OTNHMFFlTz1EY0FIdDtFbzU0b0t2eT9xJT99diFELUEjREQwQTxTckFnPCo0NCleKF9tQHpzTD9D
JURoCnpHcjw4OWZpPFJRc3ReXldwNXU5S1BudzVPKXJhLTs4XzY5P2FjMFFSRVlsZW54XzNVeCNm
bWgpP3UwJUVgYHZuUwp6Qm4yJkFnJFAydEFtR2BJLVEjeWg8SFNqYntTRSRZMXxYTGFVdDAwYm5M
MGdYSCppSD9yeXxlKzQzQjhkNHZ3bXQKekM4Y3hvSSV6VkVXKWElVjhwTm8/QjdISFdnIT4yUHV9
IXh7en5AdEBiTCpwLWVhLXpXKzQ1PEdZJmRVSnU4PHdjCnpjeTF4ciVHKnklU0Ykb3crXzQ/KUln
YXVNRWx0SXNsYH1+UGJPSS1+aXY+WHE4KSRWMiY4VFd4LVRtVmdoKGdUTgp6aUE7Kn0xRzE1Yj5V
eGppak1xMU9LMns2JUE7Yk5FdTZzTlA8TVZHZGIzMVU9Y3xaQ2lwTUV2KD4rOVVXZHE/TmcKem1J
KXs8ZiZ1T3xuRGd+MjAhemlCM1ltdjNaSm19WVYtZ3I4bEZQJFErRDNFbl9OeC1QPHJMWEdGS2JP
cz18RmdfCnpOZmdFa15ybktIcylReXgxZTRlSTR5cW9kJG1DZ0pJRzc/QntWNDhJMlB0LXtxcTdk
QFlOS3crdTl8O2MxZiFmQgp6RUApUm5QUD0tQlZoNTs+Y0QoT3M0TX16R3cwZmV0V28/OUk2dm9T
ckhgPldVYXozVU0hUWBHMzsrTnAjODRoXlAKekghfCpHMlBTJX47OWBlKjFGTmhFaFJFWDtjaCpx
fmMqTUBTTTJsSDR0dUhYR0txQGFUaVpAc1VsbEB1aiZrMFc/Cnp5KHhkTm5YaUhTQ0I7bSs+WH57
RWFOUGo7RCNPSWA2SEk0MjJFU0daSjZMXmVaKCU2ZG0/QClTKTJVS2JXQk5ORAp6R0A0TktZeHwt
YCp+QlJgJkJndkx5I3VjYHpwSTckWj4qVlVYKDgwcnpfWjhScVNSOWVHUDVObV4oYUpwZXl5WUwK
ej4yX2x8WXh5X3shLVlzQUdpNzIzKHNzbjZRNjYxMy0qU3EySSN7bH1qJV9hMnojJmFRJX1BZlFI
bjZGSGtJLXtRCnpCY0NvSDklem5WQT5CdXw2PjwpLVElcjNSOVlOVl8xZDdIKihKJlZnKEZOc34r
KnU7MEBlalJwaDNHYmBARFMpPwp6MFlwI2leeSQ7P3d6TW80TVJQYzxlenRYSy1aODBaTDNCfl5E
SiNaO3VZOzRDNmFpXl5COG1EJGZEY2J5IU5NbUMKenZielBBeXB4a2UmV2xDb0A4P0chSTg3bipl
e3peIzx4NkhyZzZweyl6QXpMOV8mTz4zd3piYlhqbFk7STFESyk7CnpvPjM0ZTImTy03QXNeY1hO
bGkjPD5leThQVzcyWSpPYjQ2Wl4qY2hPXjVaYTZTbV8wUDhzblU5R3pNbDxrU3BhMgp6d1Qld243
ITZ1am54ZWhVKHIodFgtMjJQKSUtdyoqLUVkXjVfQTxHWEh2eEN7RVVqfD5fKGR4dk4jeTI2OWI+
KyMKei1AMihWTm55PlctfXM+SDFrQy0xanRMP0VIMy08RmojKDl6TXhNMztFflNJYlohWGp4Z2ps
YV9ATVljfD9TY2lUCnpweUlHcCprSFk0WT1saFBheCRNXjlXQWxoPX0teHUqbHpZPDtjYVYrYihT
QWxKdFhmMkswZyQrcE8zUSs1WHlCJQp6byk/eWIwaFNkT2AtaEo0WXF1KGJFQ3gtdygrMGRBSUZT
eFgkZmJ8RSk5NjdGU2VpeGB0am52JjM5NGhLLTFpIW8KellgQ1FfT1M5fHAwQUUoQzYkbEkpM0wo
SG5BTDRwS28xZXBlN2w5al9OTHdsMlM5I2hBVkUleWJ7dnhvWF41ZT9aCnpHJGxBfVNPNn02M29R
NjlKfHY9aGYkKFphIzB3NF5rYm8zSytWfXxHYU1sOE9gMHIqVkAweiRzUj80e0tkIytRdwp6MnpF
NFZKM0t0dEVBRmAmPXl9TktrfFVCSGUhP21KZ34wOFhZZnRPcm5SYnVXZUtsM0JDbSlRKz14a0Ey
X1ZiPHgKelBea2B2R0xeUDB5SUlLc0tDfnd7JlhJNUpkY0RIYF5NfFU0SHpZPHB1YWowfCtTfGV9
bDFFWio8KXJ+eyNHbiE2Cnp5V3khQ29FSGVBQ3tVQyh2IV41bFBmUnFMdChPMllIYXxCVjZHfHlm
WEN+fiVGOSVZazQzTWo+PzxaUkw+Z3dRSwp6QWhJVzhpMlFMLWxMcnV1c19EM01kPXpkMFc0d2R6
PFFsJjJIKl5PeSswI1llMmd9VEUzSWE2UXR2amAwe0lqbmcKejJmQ3pRcWNSXzEhOz04UUxCbkJR
e0lkZkFoV3h1cDs3UjBRTlVebCVjbjklbDc/UGYqcEdWa1dUXmtZc2BaM3x5CnpMK2N9VktJeGVp
cElGMmkjRFlBO2ZANXRGaFM5K2JHI09HI3tGcGYpOT4kdV4tfk1TPkMwKj0tVH1MPl9NKjhQUAp6
ezZ9e05pdlVAO2QqNUR4V09mNyNLZV9xSGhSXjJCS3Iqa3A3X142UD4yVjtMdz4kVHlFVzcrKUow
YGpMK2IweT0Kem9PKlNBbH51Tjs5biN0YSRARkdNeTU/Sk5oJFM1QEooU3YhWDkzZk5Hc2VHRzdz
MDV3MD1jfjArKzMtPSs9MntKCnpHdCVGR0JPRjdeQ1NfP2VFXjNIR1Vpb1FXPHtxRkxKNzNyLUZv
fUBfcyZUM1VlVk9sSXQqYnlhLW49IUNVeWM5Sgp6RG9pQEl1Uz1GK2pjKT8hYFZTcHJoND1pSGd7
ejRDN0ZAOThIcl9mK2VAN1ZaI1cpMytva3slbWYqPnsjWEI1UmEKelU/NlFUVks7cSo8YEZtVUpz
SWwreChKJF5kcT5EP3dPakJXPy0rKjZgK3VBI1llSjtrKj9Zej5HM2EpSVcwIW9wCnpIfnREKnZO
YlRGZFV4eE5Hb09APzA4I25MPkNBR0U1KkNSODslYV5Ke3g4TT1eb1J4TWsjSkd6bXlWT3klNSh6
JQp6UV4kREI5SFBuakYxX2Z5Mn12QlFiKVlLWThWJXIjNX5ufnNkZURBNjdJTE8pJW16TVVRIzZr
P1ZnVW9WWlp0KkoKejVedXsyclMrOTdQZXx1KzdDKDB2IThDTDIpR1hPfnZqPUg/S1YpN3t6KVkm
fFhGZHVoMDFEM1FAOWdISUZhKTQ1Cno5ZWlmaEZROX0pJkheWnk5TnIqKzB1biRXQHNnPGszVlhy
LSlHPEZzbzlgUGgkPyk/fXs7Z0tPZFp6VFlgJnM7YQp6VE1JTyVlVklLMTdWUVMmbDZpOWotIVgt
P1pzMlI4WEp6PH5aMiVsd0lwem83U0ZxdHIpZkx8U1VFO3dqSXJYZE4KenRRM2wwaDRwXz9EOUdj
S0UrSFlNdj4kJjl1dV8pK0V3UGVjRUJVcTNZKncxaGlZb219bDRxX2NfTWNhaW1DbXB7CnpXTFF5
Tnt7YGk+cVBBQWwqMj5zSllvKT5iOGZ+c0xuM1Y+enFQQUFsKjIrTnE/fjF0NjhDRSpPJUN8JG16
OD9QbgplKGkhRndrMWF9QHVHdV9RMm1BLTlraDl+VkpyKHdUN3libnBZdUBZdAoKbGl0ZXJhbCAw
CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVj
dC1jdXN0b20tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1j
dXN0b20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2
M2I0ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0
LWN1c3RvbS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorICAgIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1jdXN0b20uaHRtbCBiL0xheW91dFRlc3RzL2Nz
czMvZmlsdGVycy9lZmZlY3QtY3VzdG9tLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZmIxNGU2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9lZmZlY3QtY3VzdG9tLmh0bWwKQEAgLTAsMCArMSw5IEBACis8c2NyaXB0PgoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCh0cnVlKTsKKzwvc2NyaXB0PgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0
ZXI6IGN1c3RvbSh1cmwoJ3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzJykgdXJsKCdyZXNvdXJj
ZXMvY29sb3Itb2Zmc2V0LmZzJykpIiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KKzxp
bWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCdyZXNvdXJjZXMvdmVydGV4LW9m
ZnNldC52cycpLCA1IDEwKSIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8aW1nIHN0
eWxlPSItd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgncmVzb3VyY2VzL3ZlcnRleC1leHBsb2Rl
LWRldGFjaGVkLnZzJyksIDIgMiBkZXRhY2hlZCkiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5w
bmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoJ3Jlc291cmNlcy92
ZXJ0ZXgtZXhwbG9kZS1kZXRhY2hlZC52cycpIHVybCgncmVzb3VyY2VzL2NvbG9yLW9mZnNldC5m
cycpLCAyIDIgZGV0YWNoZWQpIiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KKzxpbWcg
c3R5bGU9Ii13ZWJraXQtZmlsdGVyOiBjdXN0b20obm9uZSB1cmwoJ3Jlc291cmNlcy9jb2xvci1v
ZmZzZXQuZnMnKSkiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9jb2xvci1vZmZzZXQuZnMgYi9MYXlv
dXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2NvbG9yLW9mZnNldC5mcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmQwNzM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9jb2xvci1vZmZzZXQuZnMKQEAgLTAsMCAr
MSw3IEBACitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjMiB2X3RleENvb3Jk
OwordW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9G
cmFnQ29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKSArIDAuMzsKK30KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvcmVzb3VyY2VzL3ZlcnRleC1leHBsb2RlLWRldGFjaGVkLnZzIGIvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtZXhwbG9kZS1kZXRhY2hlZC52cwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzY4YTNjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy92ZXJ0ZXgtZXhwbG9kZS1kZXRhY2hl
ZC52cwpAQCAtMCwwICsxLDE0IEBACitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworYXR0cmli
dXRlIHZlYzQgYV9wb3NpdGlvbjsKK2F0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7CithdHRyaWJ1
dGUgdmVjMyBhX3RyaWFuZ2xlQ29vcmQ7CisKK3VuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb25NYXRy
aXg7Cit2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Q
b3NpdGlvbiA9IHVfcHJvamVjdGlvbk1hdHJpeCAqIChhX3Bvc2l0aW9uICsgdmVjNChhX3RyaWFu
Z2xlQ29vcmQueCAvIDQuMCwgYV90cmlhbmdsZUNvb3JkLnkgLyA0LjAsIDAuMCwgMC4wKSk7Cisg
ICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
c3MzL2ZpbHRlcnMvcmVzb3VyY2VzL3ZlcnRleC1vZmZzZXQudnMgYi9MYXlvdXRUZXN0cy9jc3Mz
L2ZpbHRlcnMvcmVzb3VyY2VzL3ZlcnRleC1vZmZzZXQudnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNzhkOGM0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nz
czMvZmlsdGVycy9yZXNvdXJjZXMvdmVydGV4LW9mZnNldC52cwpAQCAtMCwwICsxLDEzIEBACitw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK2F0
dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7CisKK3VuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb25NYXRy
aXg7Cit2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Q
b3NpdGlvbiA9IHVfcHJvamVjdGlvbk1hdHJpeCAqIChhX3Bvc2l0aW9uICsgdmVjNCgwLjEsIDAu
MCwgMC4wLCAwLjApKTsKKyAgICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1NraXBwZWQKaW5kZXggMWMxZjcyNy4uZWJiNjNkYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2sy
L1NraXBwZWQKQEAgLTE4OSw2ICsxODksNyBAQCBjb21wb3NpdGluZy92aWRlby1wYWdlLXZpc2li
aWxpdHkuaHRtbAogCiAjIFdlYktpdDIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDIxOTc+Citjc3MzL2ZpbHRlcnMvY3VzdG9tLWZpbHRlci5odG1sCiBmYXN0L2NhbnZhcy93ZWJn
bC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCiBmYXN0L2NhbnZhcy93ZWJnbC9n
bC12ZXJ0ZXgtYXR0cmliLXplcm8taXNzdWVzLmh0bWwKIGZhc3QvZXZlbnRzL3BhZ2VoaWRlLXRp
bWVvdXQuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3YTZiNmZkLi4wZWZjYzQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMTExMywxMiArMTExMywxNSBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9XaWR0aEl0ZXJhdG9yLmNwcAogCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJNZXNoLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyU2hhZGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExp
Z2h0U291cmNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpZmZ1c2VMaWdodGluZy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlz
cGxhY2VtZW50TWFwLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRkYTNiMDEuLjUxODM5MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAxMS0xMi0xNiAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFjaGljdUBhZG9i
ZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFkZXJzXSBBZGQgRkVDdXN0b21GaWx0ZXIgdGhhdCBy
ZW5kZXJzIGN1c3RvbSBmaWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MzMxNworCisgICAgICAgIFVzaW5nIGEgR3JhcGhpY3NDb250ZXh0M0Qg
dG8gcmVuZGVyIHRoZSBzaGFkZXJzIGluIEdQVSwgcmVhZCB0aGUKKyAgICAgICAgcmVzdWx0IGJh
Y2sgYW5kIHVzZSBpdCBpbiB0aGUgc29mdHdhcmUgZmlsdGVycyBwaXBlbGluZS4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBjc3MzL2ZpbHRl
cnMvZWZmZWN0LWN1c3RvbS5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNoYWRlcjo6Q2FjaGVkU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNoYWRlcjo6
c2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNoYWRlcjo6ZGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6TWVzaEdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZXNoR2VuZXJhdG9yOjp2ZXJ0aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJh
dG9yOjppbmRpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6OnBvaW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjpwb2ludHNDb3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjp0aWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNo
R2VuZXJhdG9yOjp0aWxlc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6
OmluZGljZXNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjpmbG9hdHNQ
ZXJWZXJ0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6dmVydGV4Q291bnQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkVGlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjphZGRBdHRhY2hlZE1lc2hJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjpnZW5lcmF0ZUF0dGFjaGVkTWVzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjpnZW5lcmF0ZURldGFjaGVkTWVzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjphZGRQb3NpdGlvbkF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjphZGRUZXhDb29yZEF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjphZGRNZXNoQ29vcmRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRvcjo6YWRkVHJpYW5nbGVDb29yZEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNoR2VuZXJhdG9yOjphZGRBdHRhY2hlZE1lc2hWZXJ0
ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc2hHZW5lcmF0b3I6OmFkZERldGFj
aGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVzaEdlbmVyYXRv
cjo6ZHVtcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6Q3Vz
dG9tRmlsdGVyTWVzaCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjp+Q3Vz
dG9tRmlsdGVyTWVzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJNZXNoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVz
aDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OnZlcnRpY2Vz
QnVmZmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OmJ5dGVz
UGVyVmVydGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OmVsZW1lbnRz
QnVmZmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6OmluZGlj
ZXNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjptZXNoQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2g6Om1lc2hUeXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyU2hhZGVyOjpkZWZhdWx0VmVydGV4U2hh
ZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclNoYWRlcjo6ZGVmYXVs
dEZyYWdtZW50U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclNo
YWRlcjo6Q3VzdG9tRmlsdGVyU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRl
clNoYWRlcjo6fkN1c3RvbUZpbHRlclNoYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6b3J0aG9NYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6
OkZFQ3VzdG9tRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6ZHVtcCk6CisgICAgICAg
IChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dG9Db2x1bW5NYWpvckZsb2F0
QXJyYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
YXRpb25NYXRyaXguaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RPYnNlcnZlcjo6fkZpbHRlckVmZmVj
dE9ic2VydmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJHTEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3RSZW5kZXJlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
UmVuZGVyZXI6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZmlsdGVyTmVlZHNSZXBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVk
U2hhZGVyOjpjYWNoZWRTaGFkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVNo
YWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGFkZXI6OmNhY2hlZFNoYWRlcik6CisK
IDIwMTEtMTItMTYgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEhhcmR3YXJlIGFjY2VsZXJhdGlvbiBvZiBXM0MgRmlsdGVyIEVmZmVjdHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDg2YmZmOGYuLmIwMjM5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtMjU0Miw2ICsyNTQyLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UcmFuc2Zvcm1hdGlv
bk1hdHJpeENhaXJvLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3Vy
Y2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3Rh
bnRMaWdodFNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwIFwKQEAgLTI1NTQsNiArMjU1OCw4IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29udm9sdmVNYXRyaXguaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggODE2ZGE0MC4uYjliMjI3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0y
MDg0LDExICsyMDg0LDE0IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggXAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9y
TWF0cml4LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFu
c2Zlci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oIFwKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmggXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oIFwKQEAgLTMyNDIsMTIgKzMyNDUsMTUgQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX1hTTFQ9MSkgewogCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
RklMVEVSUz0xKSB7CiAgICAgU09VUkNFUyArPSBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDc5MmM2MzMu
LjA5ZTU4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM2NzMsNiArMzY3MywxMCBAQAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUVmbC5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbnRQb2ludEVmbC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9JbnRSZWN0RWZsLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmgnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJTaGFkZXIu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRT
b3VyY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3Rh
bnRMaWdodFNvdXJjZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQmxlbmQuY3BwJywKQEAgLTM2ODUsNiArMzY4OSw4IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRp
bmcuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNl
bWVudE1hcC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCA1OTNkNjM4Li5iMTk2YmE2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjk2MzIsNiArMjk2MzIsMjIgQEAKIAkJCQkJTmFt
ZT0iZmlsdGVycyIKIAkJCQkJPgogCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlck1lc2guY3BwIgorCQkJCQkJPgor
CQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXGZpbHRlcnNcQ3VzdG9tRmlsdGVyTWVzaC5oIgorCQkJCQkJPgorCQkJCQk8L0Zp
bGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XGZpbHRlcnNcQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgor
CQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0
ZXJzXEN1c3RvbUZpbHRlclNoYWRlci5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxG
aWxlCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcRGlz
dGFudExpZ2h0U291cmNlLmNwcCIKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgpAQCAtMjk2ODgsNiAr
Mjk3MDQsMTQgQEAKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQorCQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEZFQ3VzdG9tRmlsdGVyLmNw
cCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEZFQ3VzdG9tRmlsdGVyLmgiCisJCQkJCQk+
CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcZmlsdGVyc1xGRURpZmZ1c2VMaWdodGluZy5jcHAiCiAJCQkJCQk+CiAJCQkJ
CTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBlYmNjOTI4Li43ODVlNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzk2LDYgKzEzOTYsMTMgQEAK
IAkJNTAzOEJGMjgxNDc1MEYxOTAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAzOEJGMjQxNDc1
MEYxOTAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUwOENDQTRGMTNDRjEwNkIwMDMxNTFG
MyAvKiBSZW5kZXJGbG93VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVh
ZC5oICovOyB9OwogCQk1MDhDQ0E1MDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVh
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDhD
Q0E0RTEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgKi87IH07CisJCTUw
RDQwM0M3MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDNDNTE0NzY4Qzk0MDBEMzBC
QjUgLyogRkVDdXN0b21GaWx0ZXIuY3BwICovOyB9OworCQk1MEQ0MDNDODE0NzY4Qzk0MDBEMzBC
QjUgLyogRkVDdXN0b21GaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUwRDQwM0M2MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5o
ICovOyB9OworCQk1MEQ0MDVGOTE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDVG
NzE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5jcHAgKi87IH07CisJCTUwRDQw
NUZBMTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDVGODE0N0QzMUYzMDBEMzBCQjUg
LyogQ3VzdG9tRmlsdGVyTWVzaC5oICovOyB9OworCQk1MEQ0MDYxMTE0N0Q0OURFMDBEMzBCQjUg
LyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUwRDQwNjBGMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJT
aGFkZXIuY3BwICovOyB9OworCQk1MEQ0MDYxMjE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmls
dGVyU2hhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MEQ0MDYxMDE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmggKi87IH07
CisJCTUwRDQwNjdEMTQ3RTQwRDgwMEQzMEJCNSAvKiBGaWx0ZXJFZmZlY3RPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2N0MxNDdF
NDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTBFNTY2RDYxMzlFMzhDNTAwMjE0NDMz
IC8qIENTU1dyYXBTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTAxQkFBQjExMzk1MTE0QjAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuY3Bw
ICovOyB9OwogCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAy
QTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFn
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAx
ODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi87IH07CkBAIC04NjQ1LDYg
Kzg2NTIsMTMgQEAKIAkJNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJl
YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxvd1RocmVhZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMg
LyogUmVuZGVyRmxvd1RocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJGbG93VGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTBCNDIxNTcxNDY5NzY5NjAwODdFNjA0IC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU1NoYWRlclZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwRDQwM0M1MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1
c3RvbUZpbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGRUN1
c3RvbUZpbHRlci5jcHA7IHBhdGggPSBmaWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDAzQzYxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3Vz
dG9tRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZFQ3VzdG9tRmls
dGVyLmg7IHBhdGggPSBmaWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUwRDQwNUY3MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNo
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlck1l
c2guY3BwOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDA1RjgxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRl
ck1lc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyTWVz
aC5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUwRDQwNjBGMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3VzdG9tRmlsdGVy
U2hhZGVyLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBENDA2MTAxNDdENDlERTAwRDMwQkI1IC8qIEN1c3Rv
bUZpbHRlclNoYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21G
aWx0ZXJTaGFkZXIuaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwRDQwNjdDMTQ3RTQwRDgwMEQzMEJCNSAvKiBGaWx0
ZXJFZmZlY3RPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0
ZXJFZmZlY3RPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2
NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWNoZWRQYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JC
YXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVh
bUVycm9yQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzc0Nyw2ICsx
Nzc2MSwxMiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDlFQ0VCNUMxNDk5NzkwRDAwQ0REM0E0
IC8qIGFybSAqLywKIAkJCQkxOTg0MUJGQTEzNjgzNkExMDA2RUJCQjkgLyogYXJtICovLAorCQkJ
CTUwRDQwNjBGMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwICovLAor
CQkJCTUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAqLywK
KwkJCQk1MEQ0MDVGNzE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5jcHAgKi8s
CisJCQkJNTBENDA1RjgxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guaCAqLywK
KwkJCQk1MEQ0MDNDNTE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuY3BwICovLAor
CQkJCTUwRDQwM0M2MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5oICovLAogCQkJ
CUExRTExNTQzMTMwMTVDM0QwMDU0QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwICovLAog
CQkJCTg0NzMwRDVBMTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0YW50TGlnaHRTb3VyY2UuaCAqLywK
IAkJCQlBNzVFOEI4MDBFMURFMkQ2MDA3RjI0ODEgLyogRkVCbGVuZC5jcHAgKi8sCkBAIC0yMDk2
OCw2ICsyMDk4OCw3IEBACiAJCUY1MjNEMkYzMDJERTQ0M0IwMTg2MzVDQSAvKiByZW5kZXJpbmcg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUwRDQwNjdD
MTQ3RTQwRDgwMEQzMEJCNSAvKiBGaWx0ZXJFZmZlY3RPYnNlcnZlci5oICovLAogCQkJCTQzOTA0
NkMyMTJEQTI1Q0UwMEFGODBBMiAvKiBtYXRobWwgKi8sCiAJCQkJQkM4QzhGQUEwRERDRDJGMjAw
QjU5MkY0IC8qIHN0eWxlICovLAogCQkJCTA4OEMyRjc0MTIzOTAwODAwMDNENjVDRSAvKiBzdmcg
Ki8sCkBAIC0yNDg5NCw2ICsyNDkxNSwxMCBAQAogCQkJCUExMERDNzZCMTQ3NDdCQUIwMDVFMjQ3
MSAvKiBTdHlsZUdyaWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTJDMEM0MTE0NkRDNkND
MDAxNkM5MTEgLyogTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTI4Q0E2QjE0
NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTBENDAzQzgxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MEQ0MDVGQTE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVz
aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTBENDA2MTIxNDdENDlERTAwRDMwQkI1IC8qIEN1c3Rv
bUZpbHRlclNoYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTBENDA2N0QxNDdFNDBEODAwRDMw
QkI1IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUE1MURE
NjE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUwMzhCRjI4MTQ3NTBGMTkwMDk1RTBEMSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTZFM0ZBRDM5MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3Nzg3LDYgKzI3ODEyLDkg
QEAKIAkJCQk3QUE1MUI2RjE0ODNCNjE2MDBBRDI3NTIgLyogSW5zcGVjdG9yQmFzZUFnZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUExMERDNzZBMTQ3NDdCQUIwMDVFMjQ3MSAvKiBTdHlsZUdy
aWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMjhDQTY4MTQ3MzMxNTIwMDc0QzcyQSAv
KiBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUwRDQwM0M3
MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MEQ0MDVGOTE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MEQ0MDYxMTE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hh
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQTUxREQ1MTQ4NTA2QTkwMEFEMjc1MiAvKiBJ
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RTNGQUQzODE0NzMz
RjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwN0UxMTZCMTE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2hhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFk
ZXIuY3BwCmluZGV4IDFkOGY1NDAuLjEzYmRhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwCkBAIC0zMiwxMSArMzIsMTQgQEAKICNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCiAKICNpbmNsdWRlICJDYWNoZWRTaGFkZXIuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQ2FjaGVkU2hhZGVyOjpDYWNoZWRTaGFkZXIoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShyZXNvdXJjZVJl
cXVlc3QsIFNoYWRlclJlc291cmNlKQorICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24vc2hhZGVyIikpCiB7CiB9CiAKQEAgLTQ0LDYgKzQ3LDI0
IEBAIENhY2hlZFNoYWRlcjo6fkNhY2hlZFNoYWRlcigpCiB7CiB9CiAKK2NvbnN0IFN0cmluZyYg
Q2FjaGVkU2hhZGVyOjpzaGFkZXJTdHJpbmcoKQoreworICAgIGlmICghbV9zaGFkZXJTdHJpbmcg
JiYgbV9kYXRhKSB7CisgICAgICAgIG1fc2hhZGVyU3RyaW5nID0gbV9kZWNvZGVyLT5kZWNvZGUo
bV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGFkZXJTdHJpbmcg
Kz0gbV9kZWNvZGVyLT5mbHVzaCgpOworICAgIH0KKworICAgIHJldHVybiBtX3NoYWRlclN0cmlu
ZzsKK30KKwordm9pZCBDYWNoZWRTaGFkZXI6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQp
CisgICAgICAgIG1fZGF0YSA9IGRhdGE7CisKKyAgICBDYWNoZWRSZXNvdXJjZTo6ZGF0YShkYXRh
LCBhbGxEYXRhUmVjZWl2ZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2hhZGVyLmgKaW5kZXggOGRlYWQwMS4uY2MzOGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaApAQCAtMzYsMTAgKzM2LDE5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKKwogY2xhc3MgQ2FjaGVk
U2hhZGVyIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKIHB1YmxpYzoKICAgICBDYWNoZWRTaGFk
ZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCB+Q2FjaGVkU2hhZGVyKCk7
CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBzaGFkZXJTdHJpbmcoKTsKKyAgICB2b2lkIGRhdGEo
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgCitw
cml2YXRlOgorICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisgICAg
U3RyaW5nIG1fc2hhZGVyU3RyaW5nOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEwMDVjZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyTWVzaC5jcHAKQEAgLTAsMCArMSwyNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9i
ZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBFTkFC
TEUoV0VCR0wpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJNZXNoLmgiCisKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRC5oIgorCisjZGVmaW5lIERFQlVHX0NVU1RPTV9GSUxURVJfTUVTSCAw
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVzaEdlbmVyYXRvciB7CitwdWJsaWM6
CisgICAgTWVzaEdlbmVyYXRvcih1bnNpZ25lZCBjb2xzLCB1bnNpZ25lZCByb3dzLCBjb25zdCBG
bG9hdFJlY3QmIG1lc2hCb3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5
cGUpCisgICAgICAgIDogbV9tZXNoVHlwZShtZXNoVHlwZSkKKyAgICAgICAgLCBtX3BvaW50cyhj
b2xzICsgMiwgcm93cyArIDIpCisgICAgICAgICwgbV90aWxlcyhjb2xzICsgMSwgcm93cyArIDEp
CisgICAgICAgICwgbV90aWxlU2l6ZUluUGl4ZWxzKG1lc2hCb3gud2lkdGgoKSAvIG1fdGlsZXMu
d2lkdGgoKSwgbWVzaEJveC5oZWlnaHQoKSAvIG1fdGlsZXMuaGVpZ2h0KCkpCisgICAgICAgICwg
bV90aWxlU2l6ZUluRGV2aWNlU3BhY2UoMS4wZiAvIG1fdGlsZXMud2lkdGgoKSwgMS4wZiAvIG1f
dGlsZXMuaGVpZ2h0KCkpCisgICAgICAgICwgbV9tZXNoQm94KG1lc2hCb3gpCisgICAgeworICAg
ICAgICBtX3ZlcnRpY2VzLnJlc2VydmVDYXBhY2l0eSh2ZXJ0ZXhDb3VudCgpICogZmxvYXRzUGVy
VmVydGV4KCkpOworICAgICAgICBtX2luZGljZXMucmVzZXJ2ZUNhcGFjaXR5KGluZGljZXNDb3Vu
dCgpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX21lc2hUeXBlID09IEN1c3RvbUZpbHRlck9w
ZXJhdGlvbjo6QVRUQUNIRUQpCisgICAgICAgICAgICBnZW5lcmF0ZUF0dGFjaGVkTWVzaCgpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBnZW5lcmF0ZURldGFjaGVkTWVzaCgpOworCisjaWYg
REVCVUdfQ1VTVE9NX0ZJTFRFUl9NRVNICisgICAgICAgIGR1bXBCdWZmZXJzKCk7CisjZW5kaWYK
KyAgICB9CisKKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNlcygpIGNvbnN0IHsgcmV0
dXJuIG1fdmVydGljZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8dWludDE2X3Q+JiBpbmRpY2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmRpY2VzOyB9CisKKyAgICBjb25zdCBJbnRTaXplJiBwb2ludHMo
KSBjb25zdCB7IHJldHVybiBtX3BvaW50czsgfQorICAgIHVuc2lnbmVkIHBvaW50c0NvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9wb2ludHMud2lkdGgoKSAqIG1fcG9pbnRzLmhlaWdodCgpOyB9Cisg
ICAgCisgICAgY29uc3QgSW50U2l6ZSYgdGlsZXMoKSBjb25zdCB7IHJldHVybiBtX3RpbGVzOyB9
CisgICAgdW5zaWduZWQgdGlsZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZXMud2lkdGgo
KSAqIG1fdGlsZXMuaGVpZ2h0KCk7IH0KKyAgICAKKyAgICB1bnNpZ25lZCBpbmRpY2VzQ291bnQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgdHJpYW5nbGVzUGVyVGlsZSA9
IDI7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGluZGljZXNQZXJUcmlhbmdsZSA9IDM7CisgICAg
ICAgIHJldHVybiB0aWxlc0NvdW50KCkgKiB0cmlhbmdsZXNQZXJUaWxlICogaW5kaWNlc1BlclRy
aWFuZ2xlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBmbG9hdHNQZXJWZXJ0ZXgoKSBjb25z
dAorICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEF0dGFjaGVkTWVzaFZlcnRl
eFNpemUgPSA0ICsgLy8gdmVjNCBhX3Bvc2l0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiArIC8vIHZlYzIgYV90ZXhDb29yZAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI7IC8v
IHZlYzIgYV9tZXNoQ29vcmQKKworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRGV0YWNo
ZWRNZXNoVmVydGV4U2l6ZSA9IEF0dGFjaGVkTWVzaFZlcnRleFNpemUgKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM7IC8vIHZlYzMgYV90
cmlhbmdsZUNvb3JkCisKKyAgICAgICAgcmV0dXJuIG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uOjpBVFRBQ0hFRCA/IEF0dGFjaGVkTWVzaFZlcnRleFNpemUgOiBEZXRhY2hlZE1l
c2hWZXJ0ZXhTaXplOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCB2ZXJ0ZXhDb3VudCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVy
YXRpb246OkFUVEFDSEVEID8gcG9pbnRzQ291bnQoKSA6IGluZGljZXNDb3VudCgpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICB0eXBlZGVmIHZvaWQgKE1lc2hHZW5lcmF0b3I6OipBZGRUcmlhbmds
ZVZlcnRleEZ1bmN0aW9uKShpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50
IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKTsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8QWRkVHJpYW5n
bGVWZXJ0ZXhGdW5jdGlvbiBhZGRUcmlhbmdsZVZlcnRleD4KKyAgICB2b2lkIGFkZFRpbGUoaW50
IHF1YWRYLCBpbnQgcXVhZFkpCisgICAgeworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xl
VmVydGV4KSkocXVhZFgsIHF1YWRZLCAwLCAwLCAxKTsKKyAgICAgICAgKCgqdGhpcykuKihhZGRU
cmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMSwgMCwgMik7CisgICAgICAgICgoKnRoaXMp
LiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDEsIDEsIDMpOworICAgICAgICAo
KCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAwLCAwLCA0KTsKKyAg
ICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMSwgMSwg
NSk7CisgICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFks
IDAsIDEsIDYpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFkZEF0dGFjaGVkTWVzaEluZGV4KGlu
dCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJp
YW5nbGUpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0odHJpYW5nbGUpOworICAgICAgICBt
X2luZGljZXMuYXBwZW5kKChxdWFkWSArIHRyaWFuZ2xlWSkgKiBtX3BvaW50cy53aWR0aCgpICsg
KHF1YWRYICsgdHJpYW5nbGVYKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgZ2VuZXJhdGVBdHRh
Y2hlZE1lc2goKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtX3BvaW50cy5o
ZWlnaHQoKTsgKytqKSAKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9wb2ludHMu
d2lkdGgoKTsgKytpKQorICAgICAgICAgICAgICAgIGFkZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJp
YnV0ZXMoaSwgaik7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fdGls
ZXMuaGVpZ2h0KCk7ICsraikKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV90aWxl
cy53aWR0aCgpOyArK2kpCisgICAgICAgICAgICAgICAgYWRkVGlsZTwmTWVzaEdlbmVyYXRvcjo6
YWRkQXR0YWNoZWRNZXNoSW5kZXg+KGksIGopOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFkZERl
dGFjaGVkTWVzaFZlcnRleEFuZEluZGV4KGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5n
bGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpCisgICAgeworICAgICAgICBhZGREZXRh
Y2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKHF1YWRYLCBxdWFkWSwgdHJpYW5nbGVYLCB0cmlhbmds
ZVksIHRyaWFuZ2xlKTsKKyAgICAgICAgbV9pbmRpY2VzLmFwcGVuZChtX2luZGljZXMuc2l6ZSgp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBnZW5lcmF0ZURldGFjaGVkTWVzaCgpCisgICAgewor
ICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fdGlsZXMuaGVpZ2h0KCk7ICsraikKKyAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV90aWxlcy53aWR0aCgpOyArK2kpCisgICAgICAg
ICAgICAgICAgYWRkVGlsZTwmTWVzaEdlbmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNoVmVydGV4QW5k
SW5kZXg+KGksIGopOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFkZFBvc2l0aW9uQXR0cmlidXRl
KGludCBxdWFkWCwgaW50IHF1YWRZKQorICAgIHsKKyAgICAgICAgLy8gdmVjNCBhX3Bvc2l0aW9u
CisgICAgICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJblBpeGVscy53aWR0aCgpICog
cXVhZFggLSAwLjVmICsgbV9tZXNoQm94LngoKSk7CisgICAgICAgIG1fdmVydGljZXMuYXBwZW5k
KG1fdGlsZVNpemVJblBpeGVscy5oZWlnaHQoKSAqIHF1YWRZIC0gMC41ZiArIG1fbWVzaEJveC55
KCkpOworICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZCgwLjBmKTsgLy8gegorICAgICAgICBtX3Zl
cnRpY2VzLmFwcGVuZCgxLjBmKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFRleENvb3JkQXR0cmli
dXRlKGludCBxdWFkWCwgaW50IHF1YWRZKQorICAgIHsKKyAgICAgICAgLy8gdmVjMiBhX3RleENv
b3JkCisgICAgICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJblBpeGVscy53aWR0aCgp
ICogcXVhZFggKyBtX21lc2hCb3gueCgpKTsKKyAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90
aWxlU2l6ZUluUGl4ZWxzLmhlaWdodCgpICogcXVhZFkgKyBtX21lc2hCb3gueSgpKTsKKyAgICB9
CisKKyAgICB2b2lkIGFkZE1lc2hDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSkK
KyAgICB7CisgICAgICAgIC8vIHZlYzIgYV9tZXNoQ29vcmQKKyAgICAgICAgbV92ZXJ0aWNlcy5h
cHBlbmQobV90aWxlU2l6ZUluRGV2aWNlU3BhY2Uud2lkdGgoKSAqIHF1YWRYKTsKKyAgICAgICAg
bV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluRGV2aWNlU3BhY2UuaGVpZ2h0KCkgKiBxdWFk
WSk7CisgICAgfQorCisgICAgdm9pZCBhZGRUcmlhbmdsZUNvb3JkQXR0cmlidXRlKGludCBxdWFk
WCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGUpCisgICAgeworICAgICAgICAvLyB2ZWMzIGFfdHJp
YW5nbGVDb29yZAorICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZChxdWFkWCk7CisgICAgICAgIG1f
dmVydGljZXMuYXBwZW5kKHF1YWRZKTsKKyAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQodHJpYW5n
bGUpOworICAgIH0KKworICAgIHZvaWQgYWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhp
bnQgcXVhZFgsIGludCBxdWFkWSkKKyAgICB7CisgICAgICAgIGFkZFBvc2l0aW9uQXR0cmlidXRl
KHF1YWRYLCBxdWFkWSk7CisgICAgICAgIGFkZFRleENvb3JkQXR0cmlidXRlKHF1YWRYLCBxdWFk
WSk7CisgICAgICAgIGFkZE1lc2hDb29yZEF0dHJpYnV0ZShxdWFkWCwgcXVhZFkpOworICAgIH0K
KworICAgIHZvaWQgYWRkRGV0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpbnQgcXVhZFgsIGlu
dCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKQorICAg
IHsKKyAgICAgICAgYWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhxdWFkWCArIHRyaWFu
Z2xlWCwgcXVhZFkgKyB0cmlhbmdsZVkpOworICAgICAgICBhZGRUcmlhbmdsZUNvb3JkQXR0cmli
dXRlKHF1YWRYLCBxdWFkWSwgdHJpYW5nbGUpOworICAgIH0KKyAgICAKKyNpZmRlZiBERUJVR19D
VVNUT01fRklMVEVSX01FU0gKKyAgICB2b2lkIGR1bXBCdWZmZXJzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHByaW50ZigiTWVzaCBidWZmZXJzOiBQb2ludHMud2lkdGgoKTogJWQsIFBvaW50cy5o
ZWlnaHQoKTogJWQgbWVzaEJveDogJWYsICVmLCAlZiwgJWYsIHR5cGU6ICVzXG4iLCAKKyAgICAg
ICAgICAgICAgIG1fcG9pbnRzLndpZHRoKCksIG1fcG9pbnRzLmhlaWdodCgpLCBtX21lc2hCb3gu
eCgpLCBtX21lc2hCb3gueSgpLCBtX21lc2hCb3gud2lkdGgoKSwgbV9tZXNoQm94LmhlaWdodCgp
LCAKKyAgICAgICAgICAgICAgIChtX21lc2hUeXBlID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6
QVRUQUNIRUQpID8gIkF0dGFjaGVkIiA6ICJEZXRhY2hlZCIpOworICAgICAgICBwcmludGYoIi0t
LVZlcnRleDpcblx0Iik7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZlcnRp
Y2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBwcmludGYoIiVmICIsIG1fdmVydGljZXMu
YXQoaSkpOworICAgICAgICAgICAgaWYgKCEoKGkgKyAxKSAlIGZsb2F0c1BlclZlcnRleCgpKSkK
KyAgICAgICAgICAgICAgICBwcmludGYoIlxuXHQiKTsKKyAgICAgICAgfQorICAgICAgICBwcmlu
dGYoIlxuLS0tSW5kaWNlczogIik7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2luZGljZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBwcmludGYoIiVkICIsIG1faW5kaWNl
cy5hdChpKSk7CisgICAgICAgIHByaW50ZigiXG4iKTsKKyAgICB9CisjZW5kaWYKKworICAgIAor
cHJpdmF0ZToKKyAgICBWZWN0b3I8ZmxvYXQ+IG1fdmVydGljZXM7CisgICAgVmVjdG9yPHVpbnQx
Nl90PiBtX2luZGljZXM7CisgICAgCisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlw
ZSBtX21lc2hUeXBlOworICAgIEludFNpemUgbV9wb2ludHM7CisgICAgSW50U2l6ZSBtX3RpbGVz
OworICAgIEZsb2F0U2l6ZSBtX3RpbGVTaXplSW5QaXhlbHM7CisgICAgRmxvYXRTaXplIG1fdGls
ZVNpemVJbkRldmljZVNwYWNlOworICAgIEZsb2F0UmVjdCBtX21lc2hCb3g7Cit9OworCitDdXN0
b21GaWx0ZXJNZXNoOjpDdXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCB1bnNpZ25lZCBjb2xzLCB1bnNpZ25lZCByb3dzLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRp
b246Ok1lc2hUeXBlIG1lc2hUeXBlKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBt
X3ZlcnRpY2VzQnVmZmVyT2JqZWN0KDApCisgICAgLCBtX2VsZW1lbnRzQnVmZmVyT2JqZWN0KDAp
CisgICAgLCBtX21lc2hCb3gobWVzaEJveCkKKyAgICAsIG1fbWVzaFR5cGUobWVzaFR5cGUpCit7
CisgICAgTWVzaEdlbmVyYXRvciBnZW5lcmF0b3IoY29scywgcm93cywgbWVzaEJveCwgbWVzaFR5
cGUpOworICAgIG1faW5kaWNlc0NvdW50ID0gZ2VuZXJhdG9yLmluZGljZXNDb3VudCgpOworICAg
IG1fYnl0ZXNQZXJWZXJ0ZXggPSBnZW5lcmF0b3IuZmxvYXRzUGVyVmVydGV4KCkgKiBzaXplb2Yo
ZmxvYXQpOyAgICAKKworICAgIG1fdmVydGljZXNCdWZmZXJPYmplY3QgPSBtX2NvbnRleHQtPmNy
ZWF0ZUJ1ZmZlcigpOworICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6QVJSQVlfQlVGRkVSLCBtX3ZlcnRpY2VzQnVmZmVyT2JqZWN0KTsKKyAgICBtX2NvbnRleHQt
PmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgZ2VuZXJhdG9yLnZl
cnRpY2VzKCkuc2l6ZSgpICogc2l6ZW9mKGZsb2F0KSwgZ2VuZXJhdG9yLnZlcnRpY2VzKCkuZGF0
YSgpLCBHcmFwaGljc0NvbnRleHQzRDo6U1RBVElDX0RSQVcpOworICAgIAorICAgIG1fZWxlbWVu
dHNCdWZmZXJPYmplY3QgPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpOworICAgIG1fY29udGV4
dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1f
ZWxlbWVudHNCdWZmZXJPYmplY3QpOworICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGlj
c0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIsIGdlbmVyYXRvci5pbmRpY2VzKCkuc2l6
ZSgpICogc2l6ZW9mKHVpbnQxNl90KSwgZ2VuZXJhdG9yLmluZGljZXMoKS5kYXRhKCksIEdyYXBo
aWNzQ29udGV4dDNEOjpTVEFUSUNfRFJBVyk7Cit9CisKK0N1c3RvbUZpbHRlck1lc2g6On5DdXN0
b21GaWx0ZXJNZXNoKCkKK3sKKyAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihtX3ZlcnRpY2Vz
QnVmZmVyT2JqZWN0KTsKKyAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihtX2VsZW1lbnRzQnVm
ZmVyT2JqZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKENTU19TSEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU4MDFmYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyTWVzaC5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBT
eXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBDdXN0b21GaWx0ZXJNZXNoX2gKKyNkZWZpbmUgQ3VzdG9tRmlsdGVyTWVzaF9oCisK
KyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkN1
c3RvbUZpbHRlck9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzVHlwZXMzRC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisKK2NsYXNzIEN1c3Rv
bUZpbHRlck1lc2ggOiBwdWJsaWMgUmVmQ291bnRlZDxDdXN0b21GaWx0ZXJNZXNoPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyTWVzaD4gY3JlYXRlKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBjb2xzLCB1bnNpZ25lZCByb3dzLCBjb25z
dCBGbG9hdFJlY3QmIG1lc2hCb3gsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKSB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyTWVzaChjb250ZXh0LCBj
b2xzLCByb3dzLCBtZXNoQm94LCBtZXNoVHlwZSkpOworICAgIH0KKyAgICB+Q3VzdG9tRmlsdGVy
TWVzaCgpOworCisgICAgUGxhdGZvcm0zRE9iamVjdCB2ZXJ0aWNlc0J1ZmZlck9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmVydGljZXNCdWZmZXJPYmplY3Q7IH0KKyAgICB1bnNpZ25lZCBieXRl
c1BlclZlcnRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZXNQZXJWZXJ0ZXg7IH0KKyAgICAKKyAg
ICBQbGF0Zm9ybTNET2JqZWN0IGVsZW1lbnRzQnVmZmVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9lbGVtZW50c0J1ZmZlck9iamVjdDsgfQorICAgIHVuc2lnbmVkIGluZGljZXNDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5kaWNlc0NvdW50OyB9CisgICAgCisgICAgY29uc3QgRmxvYXRSZWN0
JiBtZXNoQm94KCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQm94OyB9CisgICAgQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaFR5cGU7
IH0KKworcHJpdmF0ZToKKyAgICBDdXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBD
dXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlKTsKKyAgICAKKyAgICBHcmFwaGljc0NvbnRl
eHQzRCogbV9jb250ZXh0OworICAgIAorICAgIFBsYXRmb3JtM0RPYmplY3QgbV92ZXJ0aWNlc0J1
ZmZlck9iamVjdDsKKyAgICB1bnNpZ25lZCBtX2J5dGVzUGVyVmVydGV4OworICAgIAorICAgIFBs
YXRmb3JtM0RPYmplY3QgbV9lbGVtZW50c0J1ZmZlck9iamVjdDsKKyAgICB1bnNpZ25lZCBtX2lu
ZGljZXNDb3VudDsKKyAgICAKKyAgICBGbG9hdFJlY3QgbV9tZXNoQm94OworICAgIEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbV9tZXNoVHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdM
KQorCisjZW5kaWYgLy8gQ3VzdG9tRmlsdGVyTWVzaF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIzZDg2OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyU2hhZGVyLmNwcApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAy
MDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMp
ICYmIEVOQUJMRShXRUJHTCkKKworI2RlZmluZSBTSEFERVIwKFNyYykgI1NyYworI2RlZmluZSBT
SEFERVIoU3JjKSBTSEFERVIwKFNyYykKKworI2luY2x1ZGUgIkN1c3RvbUZpbHRlclNoYWRlci5o
IgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitTdHJpbmcgQ3VzdG9tRmlsdGVyU2hhZGVyOjpkZWZhdWx0VmVydGV4U2hhZGVyU3RyaW5n
KCkKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyAgICAgICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKKyAgICAgICAgYXR0cmlidXRl
IHZlYzIgYV90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbk1hdHJp
eDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHZvaWQgbWFpbigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uTWF0cml4
ICogYV9wb3NpdGlvbjsKKyAgICAgICAgICAgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOworICAg
ICAgICB9CisgICAgKTsKK30KKworU3RyaW5nIEN1c3RvbUZpbHRlclNoYWRlcjo6ZGVmYXVsdEZy
YWdtZW50U2hhZGVyU3RyaW5nKCkKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7Cisg
ICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKKyAgICAgICAgdm9pZCBtYWluKCkK
KyAgICAgICAgeworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVy
ZSwgdl90ZXhDb29yZCk7CisgICAgICAgIH0KKyAgICApOworfQorCitDdXN0b21GaWx0ZXJTaGFk
ZXI6OkN1c3RvbUZpbHRlclNoYWRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJT
dHJpbmcpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fdmVydGV4U2hhZGVyU3Ry
aW5nKCF2ZXJ0ZXhTaGFkZXJTdHJpbmcuaXNOdWxsKCkgPyB2ZXJ0ZXhTaGFkZXJTdHJpbmcgOiBk
ZWZhdWx0VmVydGV4U2hhZGVyU3RyaW5nKCkpCisgICAgLCBtX2ZyYWdtZW50U2hhZGVyU3RyaW5n
KCFmcmFnbWVudFNoYWRlclN0cmluZy5pc051bGwoKSA/IGZyYWdtZW50U2hhZGVyU3RyaW5nIDog
ZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCkpCisgICAgLCBtX3Byb2dyYW0oMCkKKyAgICAs
IG1fcG9zaXRpb25BdHRyaWJMb2NhdGlvbigtMSkKKyAgICAsIG1fdGV4QXR0cmliTG9jYXRpb24o
LTEpCisgICAgLCBtX21lc2hBdHRyaWJMb2NhdGlvbigtMSkKKyAgICAsIG1fdHJpYW5nbGVBdHRy
aWJMb2NhdGlvbigtMSkKKyAgICAsIG1fbWVzaEJveExvY2F0aW9uKC0xKQorICAgICwgbV9wcm9q
ZWN0aW9uTWF0cml4TG9jYXRpb24oLTEpCisgICAgLCBtX3RpbGVTaXplTG9jYXRpb24oLTEpCisg
ICAgLCBtX21lc2hTaXplTG9jYXRpb24oLTEpCisgICAgLCBtX3NhbXBsZXJMb2NhdGlvbigtMSkK
KyAgICAsIG1fc2FtcGxlclNpemVMb2NhdGlvbigtMSkKKyAgICAsIG1fY29udGVudFNhbXBsZXJM
b2NhdGlvbigtMSkKKyAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKK3sKKyAgICBQbGF0Zm9y
bTNET2JqZWN0IHZlcnRleFNoYWRlciA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKEdyYXBoaWNz
Q29udGV4dDNEOjpWRVJURVhfU0hBREVSKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGZyYWdtZW50
U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQUdN
RU5UX1NIQURFUik7CisKKyAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIs
IG1fdmVydGV4U2hhZGVyU3RyaW5nKTsKKyAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIodmVy
dGV4U2hhZGVyKTsKKyAgICAKKyAgICBpbnQgY29tcGlsZWQgPSAwOworICAgIG1fY29udGV4dC0+
Z2V0U2hhZGVyaXYodmVydGV4U2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6Q09NUElMRV9TVEFU
VVMsICZjb21waWxlZCk7CisgICAgaWYgKCFjb21waWxlZCkgeworICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBhbiBpbnZhbGlkIHNoYWRlci4gVGhyb3cgc29tZSBlcnJvcnMuCisgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQxNgorICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKGZyYWdtZW50
U2hhZGVyLCBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nKTsKKyAgICBtX2NvbnRleHQtPmNvbXBpbGVT
aGFkZXIoZnJhZ21lbnRTaGFkZXIpOworICAgIAorICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYo
ZnJhZ21lbnRTaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QSUxFX1NUQVRVUywgJmNvbXBp
bGVkKTsKKyAgICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGFu
IGludmFsaWQgc2hhZGVyLiBUaHJvdyBzb21lIGVycm9ycy4KKyAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDE2CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgbV9wcm9ncmFtID0gbV9jb250ZXh0LT5jcmVhdGVQcm9ncmFtKCk7Cisg
ICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIobV9wcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpOworICAg
IG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1fcHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworICAg
IG1fY29udGV4dC0+bGlua1Byb2dyYW0obV9wcm9ncmFtKTsKKyAgICAKKyAgICBtX2NvbnRleHQt
PmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVy
KGZyYWdtZW50U2hhZGVyKTsKKyAgICAKKyAgICBpbnQgbGlua2VkID0gMDsKKyAgICBtX2NvbnRl
eHQtPmdldFByb2dyYW1pdihtX3Byb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5LX1NUQVRV
UywgJmxpbmtlZCk7CisgICAgaWYgKCFsaW5rZWQpIHsKKyAgICAgICAgLy8gRklYTUU6IEludmFs
aWQgdmVydGV4L2ZyYWdtZW50IHNoYWRlciBjb21iaW5hdGlvbi4gVGhyb3cgc29tZSBlcnJvcnMg
aGVyZS4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc0NDE2CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9wb3NpdGlvbkF0dHJp
YkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3Bv
c2l0aW9uIik7CisgICAgbV90ZXhBdHRyaWJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0QXR0cmli
TG9jYXRpb24obV9wcm9ncmFtLCAiYV90ZXhDb29yZCIpOworICAgIG1fbWVzaEF0dHJpYkxvY2F0
aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX21lc2hDb29y
ZCIpOworICAgIG1fdHJpYW5nbGVBdHRyaWJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0QXR0cmli
TG9jYXRpb24obV9wcm9ncmFtLCAiYV90cmlhbmdsZUNvb3JkIik7CisgICAgbV9tZXNoQm94TG9j
YXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X21lc2hC
b3giKTsKKyAgICBtX3RpbGVTaXplTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihtX3Byb2dyYW0sICJ1X3RpbGVTaXplIik7CisgICAgbV9tZXNoU2l6ZUxvY2F0aW9uID0g
bV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAidV9tZXNoU2l6ZSIpOwor
ICAgIG1fcHJvamVjdGlvbk1hdHJpeExvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24obV9wcm9ncmFtLCAidV9wcm9qZWN0aW9uTWF0cml4Iik7CisgICAgbV9zYW1wbGVyTG9j
YXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJzX3RleHR1
cmUiKTsKKyAgICBtX3NhbXBsZXJTaXplTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihtX3Byb2dyYW0sICJzX3RleHR1cmVTaXplIik7CisgICAgbV9jb250ZW50U2FtcGxl
ckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAic19j
b250ZW50VGV4dHVyZSIpOworICAgIAorICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Cit9Cisg
ICAgCitDdXN0b21GaWx0ZXJTaGFkZXI6On5DdXN0b21GaWx0ZXJTaGFkZXIoKQoreworICAgIGlm
IChtX3Byb2dyYW0pCisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShtX3Byb2dyYW0p
OworfQorCisKK30KKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdF
QkdMKQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyU2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmFmMWZjYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRlci5oCkBAIC0wLDAgKzEs
MTAzIEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJ
U+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICog
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
CisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3VzdG9tRmlsdGVy
U2hhZGVyX2gKKyNkZWZpbmUgQ3VzdG9tRmlsdGVyU2hhZGVyX2gKKworI2lmIEVOQUJMRShDU1Nf
U0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgi
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsK
KworY2xhc3MgQ3VzdG9tRmlsdGVyU2hhZGVyOiBwdWJsaWMgUmVmQ291bnRlZDxDdXN0b21GaWx0
ZXJTaGFkZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJT
aGFkZXI+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2
ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlclNoYWRlcihjb250ZXh0LCB2ZXJ0ZXhT
aGFkZXIsIGZyYWdtZW50U2hhZGVyKSk7CisgICAgfQorICAgIAorICAgIH5DdXN0b21GaWx0ZXJT
aGFkZXIoKTsKKyAgICAKKyAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJp
bmcoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRGcmFnbWVudFNoYWRlclN0cmluZygpOyAg
ICAKKyAgICAKKyAgICBTdHJpbmcgdmVydGV4U2hhZGVyU3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
bV92ZXJ0ZXhTaGFkZXJTdHJpbmc7IH0KKyAgICBTdHJpbmcgZnJhZ21lbnRTaGFkZXJTdHJpbmco
KSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nOyB9CisgICAgCisgICAgaW50
IHBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uQXR0cmli
TG9jYXRpb247IH0KKyAgICBpbnQgdGV4QXR0cmliTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3RleEF0dHJpYkxvY2F0aW9uOyB9CisgICAgaW50IG1lc2hBdHRyaWJMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbWVzaEF0dHJpYkxvY2F0aW9uOyB9CisgICAgaW50IHRyaWFuZ2xlQXR0cmli
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RyaWFuZ2xlQXR0cmliTG9jYXRpb247IH0KKyAg
ICBpbnQgbWVzaEJveExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQm94TG9jYXRpb247
IH0KKyAgICBpbnQgcHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9w
cm9qZWN0aW9uTWF0cml4TG9jYXRpb247IH0KKyAgICBpbnQgdGlsZVNpemVMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fdGlsZVNpemVMb2NhdGlvbjsgfQorICAgIGludCBtZXNoU2l6ZUxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoU2l6ZUxvY2F0aW9uOyB9CisgICAgaW50IHNhbXBs
ZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlckxvY2F0aW9uOyB9CisgICAgaW50
IGNvbnRlbnRTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTYW1wbGVy
TG9jYXRpb247IH0KKyAgICBpbnQgc2FtcGxlclNpemVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2FtcGxlclNpemVMb2NhdGlvbjsgfQorICAgIAorICAgIGJvb2wgaXNJbml0aWFsaXplZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXplZDsgfQorICAgIAorICAgIFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3JhbTsgfQorCitwcml2YXRlOgor
ICAgIEN1c3RvbUZpbHRlclNoYWRlcihHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IFN0cmluZyYg
dmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyKTsKKyAgICAKKyAgICBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKKyAgICAKKyAgICBTdHJpbmcgbV92
ZXJ0ZXhTaGFkZXJTdHJpbmc7CisgICAgU3RyaW5nIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7CisK
KyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fcHJvZ3JhbTsKKyAgICAKKyAgICBpbnQgbV9wb3NpdGlv
bkF0dHJpYkxvY2F0aW9uOworICAgIGludCBtX3RleEF0dHJpYkxvY2F0aW9uOworICAgIGludCBt
X21lc2hBdHRyaWJMb2NhdGlvbjsKKyAgICBpbnQgbV90cmlhbmdsZUF0dHJpYkxvY2F0aW9uOwor
ICAgIGludCBtX21lc2hCb3hMb2NhdGlvbjsKKyAgICBpbnQgbV9wcm9qZWN0aW9uTWF0cml4TG9j
YXRpb247CisgICAgaW50IG1fdGlsZVNpemVMb2NhdGlvbjsKKyAgICBpbnQgbV9tZXNoU2l6ZUxv
Y2F0aW9uOworICAgIGludCBtX3NhbXBsZXJMb2NhdGlvbjsKKyAgICBpbnQgbV9zYW1wbGVyU2l6
ZUxvY2F0aW9uOworICAgIGludCBtX2NvbnRlbnRTYW1wbGVyTG9jYXRpb247CisgICAgCisgICAg
Ym9vbCBtX2lzSW5pdGlhbGl6ZWQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NI
QURFUlMpICYmIEVOQUJMRShXRUJHTCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliYjhhZGQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmls
dGVyLmNwcApAQCAtMCwwICsxLDIxMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5
c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShX
RUJHTCkKKyNpbmNsdWRlICJGRUN1c3RvbUZpbHRlci5oIgorCisjaW5jbHVkZSAiQ2FjaGVkU2hh
ZGVyLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyTWVzaC5oIgorI2luY2x1ZGUgIkN1c3RvbUZp
bHRlclNoYWRlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRHJhd2luZ0J1
ZmZlci5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4
dC5oIgorI2luY2x1ZGUgIlN0eWxlQ2FjaGVkU2hhZGVyLmgiCisjaW5jbHVkZSAiVGV4dFN0cmVh
bS5oIgorI2luY2x1ZGUgIlRleHR1cmUuaCIKKyNpbmNsdWRlICJUaWxpbmdEYXRhLmgiCisjaW5j
bHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKworI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXku
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXgg
b3J0aG9NYXRyaXgoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IGJvdHRvbSwgZmxvYXQg
dG9wKQoreworICAgIGZsb2F0IGRlbHRhWCA9IHJpZ2h0IC0gbGVmdDsKKyAgICBmbG9hdCBkZWx0
YVkgPSB0b3AgLSBib3R0b207CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggb3J0aG87CisgICAg
aWYgKCFkZWx0YVggfHwgIWRlbHRhWSkKKyAgICAgICAgcmV0dXJuIG9ydGhvOworICAgIG9ydGhv
LnNldE0xMSgyLjBmIC8gZGVsdGFYKTsKKyAgICBvcnRoby5zZXRNNDEoLShyaWdodCArIGxlZnQp
IC8gZGVsdGFYKTsKKyAgICBvcnRoby5zZXRNMjIoMi4wZiAvIGRlbHRhWSk7CisgICAgb3J0aG8u
c2V0TTQyKC0odG9wICsgYm90dG9tKSAvIGRlbHRhWSk7CisKKyAgICAvLyBVc2UgYmlnIGVub3Vn
aCBuZWFyL2ZhciB2YWx1ZXMsIHNvIHRoYXQgc2ltcGxlIHJvdGF0aW9ucyBvZiByYXRoZXIgbGFy
Z2Ugb2JqZWN0cyB3aWxsIG5vdAorICAgIC8vIGdldCBjbGlwcGVkLiAxMDAwMCBzaG91bGQgY292
ZXIgbW9zdCBvZiB0aGUgc2NyZWVuIHJlc29sdXRpb25zLgorICAgIGNvbnN0IGZsb2F0IGZhclZh
bHVlID0gMTAwMDA7CisgICAgY29uc3QgZmxvYXQgbmVhclZhbHVlID0gLTEwMDAwOworICAgIG9y
dGhvLnNldE0zMygtMi4wZiAvIChmYXJWYWx1ZSAtIG5lYXJWYWx1ZSkpOworICAgIG9ydGhvLnNl
dE00MygtIChmYXJWYWx1ZSArIG5lYXJWYWx1ZSkgLyAoZmFyVmFsdWUgLSBuZWFyVmFsdWUpKTsK
KyAgICBvcnRoby5zZXRNNDQoMS4wZik7CisKKyAgICByZXR1cm4gb3J0aG87Cit9CisKK0ZFQ3Vz
dG9tRmlsdGVyOjpGRUN1c3RvbUZpbHRlcihGaWx0ZXIqIGZpbHRlciwgRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNo
YWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93cywg
dW5zaWduZWQgbWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaEJveFR5cGUg
bWVzaEJveFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkKKyAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIp
CisgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV92ZXJ0ZXhTaGFkZXIodmVydGV4
U2hhZGVyKQorICAgICwgbV9mcmFnbWVudFNoYWRlcihmcmFnbWVudFNoYWRlcikKKyAgICAsIG1f
bWVzaFJvd3MobWVzaFJvd3MpCisgICAgLCBtX21lc2hDb2x1bW5zKG1lc2hDb2x1bW5zKQorICAg
ICwgbV9tZXNoQm94VHlwZShtZXNoQm94VHlwZSkKKyAgICAsIG1fbWVzaFR5cGUobWVzaFR5cGUp
CisKK3sKK30KKworUGFzc1JlZlB0cjxGRUN1c3RvbUZpbHRlcj4gRkVDdXN0b21GaWx0ZXI6OmNy
ZWF0ZShGaWx0ZXIqIGZpbHRlciwgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHZl
cnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQg
bWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaEJveFR5cGUgbWVzaEJveFR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmls
dGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZFQ3VzdG9tRmlsdGVyKGZpbHRlciwgZG9jdW1lbnQsIHZlcnRleFNoYWRlciwgZnJhZ21l
bnRTaGFkZXIsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJveFR5cGUsIG1lc2hUeXBlKSk7
Cit9CisKK3ZvaWQgRkVDdXN0b21GaWx0ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit7Cisg
ICAgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0KCk7CisgICAgaWYgKCFkc3RQaXhlbEFycmF5KQorICAgICAgICByZXR1cm47CisKKyAgICBG
aWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CisgICAgSW50UmVjdCBlZmZlY3RBRHJh
d2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKTsKKyAgICBSZWZQdHI8Qnl0ZUFycmF5PiBzcmNQaXhlbEFycmF5ID0gaW4tPmFz
UHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEFEcmF3aW5nUmVjdCk7CisgICAgCisgICAgSW50U2l6
ZSBuZXdDb250ZXh0U2l6ZShlZmZlY3RBRHJhd2luZ1JlY3Qud2lkdGgoKSwgZWZmZWN0QURyYXdp
bmdSZWN0LmhlaWdodCgpKTsKKyAgICBib29sIGhhZENvbnRleHQgPSBtX2NvbnRleHQ7CisgICAg
aWYgKCFtX2NvbnRleHQpIHsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
YXR0cmlidXRlczsKKyAgICAgICAgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSB0
cnVlOworICAgICAgICBhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSA9IGZhbHNlOworICAg
ICAgICAKKyAgICAgICAgbV9jb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRy
aWJ1dGVzLCBtX2RvY3VtZW50LT52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuKTsKKyAgICAgICAgbV9kcmF3aW5nQnVmZmVyID0g
RHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgbmV3Q29udGV4dFNpemUsICFh
dHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcik7CisgICAgICAgIAorICAgICAgICBtX3No
YWRlciA9IEN1c3RvbUZpbHRlclNoYWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgbV92ZXJ0
ZXhTaGFkZXIsIG1fZnJhZ21lbnRTaGFkZXIpOworICAgICAgICBtX21lc2ggPSBDdXN0b21GaWx0
ZXJNZXNoOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBtX21lc2hDb2x1bW5zLCBtX21lc2hSb3dz
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UmVjdCgw
LCAwLCAxLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
bWVzaFR5cGUpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWhhZENvbnRleHQgfHwgbV9jb250ZXh0
U2l6ZSAhPSBuZXdDb250ZXh0U2l6ZSkgeworICAgICAgICBtX2lucHV0VGV4dHVyZSA9IDA7Cisg
ICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+cmVzZXQobmV3Q29udGV4dFNpemUpOworICAgICAgICBt
X2NvbnRleHQtPnJlc2hhcGUobmV3Q29udGV4dFNpemUud2lkdGgoKSwgbmV3Q29udGV4dFNpemUu
aGVpZ2h0KCkpOworICAgICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIG5ld0NvbnRleHRT
aXplLndpZHRoKCksIG5ld0NvbnRleHRTaXplLmhlaWdodCgpKTsKKyAgICAgICAgbV9pbnB1dFRl
eHR1cmUgPSBUZXh0dXJlOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBUZXh0dXJlOjpSR0JBOCwg
bmV3Q29udGV4dFNpemUud2lkdGgoKSwgbmV3Q29udGV4dFNpemUuaGVpZ2h0KCkpOworICAgICAg
ICBtX2NvbnRleHRTaXplID0gbmV3Q29udGV4dFNpemU7CisgICAgfQorICAgIAorICAgIGlmICht
X2lucHV0VGV4dHVyZS0+dGlsZXMoKS5udW1UaWxlcygpICE9IDEpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBtX2NvbnRleHQtPmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgbV9jb250
ZXh0LT5jbGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVCB8IEdyYXBoaWNz
Q29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklUKTsKKyAgICAKKyAgICBtX2NvbnRleHQtPnVzZVBy
b2dyYW0obV9zaGFkZXItPnByb2dyYW0oKSk7CisgICAgCisgICAgaWYgKG1fc2hhZGVyLT5zYW1w
bGVyTG9jYXRpb24oKSAhPSAtMSkgeworICAgICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKKyAgICAgICAgbV9jb250ZXh0LT51bmlmb3Jt
MWkobV9zaGFkZXItPnNhbXBsZXJMb2NhdGlvbigpLCAwKTsKKyAgICAgICAgbV9pbnB1dFRleHR1
cmUtPmxvYWQoc3JjUGl4ZWxBcnJheS0+ZGF0YSgpKTsKKyAgICAgICAgbV9pbnB1dFRleHR1cmUt
PmJpbmRUaWxlKDApOworICAgIH0KKyAgICAKKyAgICBpZiAobV9zaGFkZXItPnByb2plY3Rpb25N
YXRyaXhMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBy
b2plY3Rpb25NYXRyaXggPSBvcnRob01hdHJpeCgtMC41LCAwLjUsIC0wLjUsIDAuNSk7CisgICAg
ICAgIGZsb2F0IGdsUHJvamVjdGlvbk1hdHJpeFsxNl07CisgICAgICAgIHByb2plY3Rpb25NYXRy
aXgudG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoZ2xQcm9qZWN0aW9uTWF0cml4KTsKKyAgICAgICAg
bV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fc2hhZGVyLT5wcm9qZWN0aW9uTWF0cml4TG9j
YXRpb24oKSwgZmFsc2UsICZnbFByb2plY3Rpb25NYXRyaXhbMF0sIDEpOworICAgIH0KKyAgICAK
KyAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZF
UiwgbV9tZXNoLT52ZXJ0aWNlc0J1ZmZlck9iamVjdCgpKTsKKyAgICBtX2NvbnRleHQtPmJpbmRC
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBtX21lc2gtPmVs
ZW1lbnRzQnVmZmVyT2JqZWN0KCkpOworCisgICAgdW5zaWduZWQgdmVydGV4U2l6ZSA9IG1fbWVz
aC0+Ynl0ZXNQZXJWZXJ0ZXgoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOworICAg
IAorICAgIGlmIChtX3NoYWRlci0+cG9zaXRpb25BdHRyaWJMb2NhdGlvbigpICE9IC0xKSB7Cisg
ICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihtX3NoYWRlci0+cG9zaXRpb25B
dHRyaWJMb2NhdGlvbigpLCA0LCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCB2ZXJ0
ZXhTaXplLCBvZmZzZXQpOworICAgICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KG1fc2hhZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCkpOworICAgIH0KKyAgICBvZmZz
ZXQgKz0gNCAqIHNpemVvZihmbG9hdCk7CisgICAgCisgICAgaWYgKG1fc2hhZGVyLT50ZXhBdHRy
aWJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9p
bnRlcihtX3NoYWRlci0+dGV4QXR0cmliTG9jYXRpb24oKSwgMiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkZMT0FULCBmYWxzZSwgdmVydGV4U2l6ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9jb250ZXh0LT5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3NoYWRlci0+dGV4QXR0cmliTG9jYXRpb24oKSk7Cisg
ICAgfQorICAgIG9mZnNldCArPSAyICogc2l6ZW9mKGZsb2F0KTsKKyAgICAKKyAgICBpZiAobV9z
aGFkZXItPm1lc2hBdHRyaWJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgIG1fY29udGV4dC0+
dmVydGV4QXR0cmliUG9pbnRlcihtX3NoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCksIDIsIEdy
YXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIHZlcnRleFNpemUsIG9mZnNldCk7CisgICAg
ICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9zaGFkZXItPm1lc2hBdHRy
aWJMb2NhdGlvbigpKTsKKyAgICB9CisgICAgb2Zmc2V0ICs9IDIgKiBzaXplb2YoZmxvYXQpOwor
ICAgIAorICAgIGlmIChtX21lc2hUeXBlID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6REVUQUNI
RUQgJiYgbV9zaGFkZXItPnRyaWFuZ2xlQXR0cmliTG9jYXRpb24oKSAhPSAtMSkgeworICAgICAg
ICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIobV9zaGFkZXItPnRyaWFuZ2xlQXR0cmli
TG9jYXRpb24oKSwgMywgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwgdmVydGV4U2l6
ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSht
X3NoYWRlci0+dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpKTsKKyAgICB9CisgICAgCisgICAgbV9j
b250ZXh0LT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFUywgbV9tZXNo
LT5pbmRpY2VzQ291bnQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCAwKTsK
KyAgICAKKyAgICBtX2RyYXdpbmdCdWZmZXItPmNvbW1pdCgpOworCisgICAgUmVmUHRyPEltYWdl
RGF0YT4gaW1hZ2VEYXRhID0gbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdl
RGF0YShtX2RyYXdpbmdCdWZmZXIuZ2V0KCkpOworICAgIEJ5dGVBcnJheSogZ3B1UmVzdWx0ID0g
aW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKKyAgICBBU1NFUlQoZ3B1UmVzdWx0LT5sZW5ndGgo
KSA9PSBkc3RQaXhlbEFycmF5LT5sZW5ndGgoKSk7CisgICAgbWVtY3B5KGRzdFBpeGVsQXJyYXkt
PmRhdGEoKSwgZ3B1UmVzdWx0LT5kYXRhKCksIGdwdVJlc3VsdC0+bGVuZ3RoKCkpOworfQorCit2
b2lkIEZFQ3VzdG9tRmlsdGVyOjpkdW1wKCkKK3sKK30KKworVGV4dFN0cmVhbSYgRkVDdXN0b21G
aWx0ZXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQp
IGNvbnN0Cit7CisgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCk7CisgICAgdHMgPDwgIltmZUN1
c3RvbUZpbHRlciI7CisgICAgRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKHRz
KTsKKyAgICB0cyA8PCAiXVxuIjsKKyAgICBpbnB1dEVmZmVjdCgwKS0+ZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbih0cywgaW5kZW50ICsgMSk7CisgICAgcmV0dXJuIHRzOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShX
RUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDdXN0b21GaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDdXN0b21GaWx0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xODI0NzlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBD
b3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAg
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICog
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGRUN1c3RvbUZpbHRlcl9oCisjZGVmaW5lIEZF
Q3VzdG9tRmlsdGVyX2gKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdM
KQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiRmlsdGVy
LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhY2hlZFNoYWRlcjsKK2NsYXNzIEN1c3Rv
bUZpbHRlck1lc2g7CitjbGFzcyBDdXN0b21GaWx0ZXJTaGFkZXI7CitjbGFzcyBEb2N1bWVudDsK
K2NsYXNzIERyYXdpbmdCdWZmZXI7CitjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKK2NsYXNzIFRl
eHR1cmU7CisgICAgCitjbGFzcyBGRUN1c3RvbUZpbHRlciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFQ3VzdG9tRmlsdGVyPiBjcmVhdGUo
RmlsdGVyKiwgRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3Ry
aW5nJiBmcmFnbWVudFNoYWRlciwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93
cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaEJveFR5
cGUsIAorICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUp
OworCisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOworICAgIHZpcnR1
YWwgdm9pZCBkdW1wKCk7CisKKyAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnRpb24pIGNvbnN0OworCitwcml2YXRlOgor
ICAgIEZFQ3VzdG9tRmlsdGVyKEZpbHRlciosIERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB2ZXJ0
ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIsCisgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbWVzaFJvd3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBDdXN0b21GaWx0ZXJP
cGVyYXRpb246Ok1lc2hCb3hUeXBlLCAKKyAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJP
cGVyYXRpb246Ok1lc2hUeXBlKTsKKyAgICAKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAg
ICAKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKKyAgICBSZWZQdHI8
RHJhd2luZ0J1ZmZlcj4gbV9kcmF3aW5nQnVmZmVyOworICAgIFJlZlB0cjxUZXh0dXJlPiBtX2lu
cHV0VGV4dHVyZTsKKyAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyU2hhZGVyPiBtX3NoYWRlcjsKKyAg
ICBSZWZQdHI8Q3VzdG9tRmlsdGVyTWVzaD4gbV9tZXNoOworICAgIEludFNpemUgbV9jb250ZXh0
U2l6ZTsKKyAgICAKKyAgICBTdHJpbmcgbV92ZXJ0ZXhTaGFkZXI7CisgICAgU3RyaW5nIG1fZnJh
Z21lbnRTaGFkZXI7CisKKyAgICB1bnNpZ25lZCBtX21lc2hSb3dzOworICAgIHVuc2lnbmVkIG1f
bWVzaENvbHVtbnM7CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSBtX21l
c2hCb3hUeXBlOworICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbV9tZXNoVHlw
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1Nf
U0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjZW5kaWYgLy8gRkVDdXN0b21GaWx0ZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmlu
ZGV4IDNjZmQyMzAuLjVmZjdkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpZiBFTkFCTEUo
QUNDRUxFUkFURURfMkRfQ0FOVkFTKSB8fCBFTkFCTEUoQ1NTX1NIQURFUlMpCiAKICNpbmNsdWRl
ICJUZXh0dXJlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5k
ZXggZTBkNGY3OC4uYzIxZjZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJp
eC5jcHAKQEAgLTExOTgsNSArMTE5OCwyNCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6dG8yZFRyYW5zZm9ybSgpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbWF0cml4WzNdWzBdLCBtX21hdHJpeFszXVsxXSwgMCwgbV9tYXRyaXhb
M11bM10pOwogfQogCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0b0NvbHVtbk1ham9yRmxv
YXRBcnJheShGbG9hdE1hdHJpeDQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICByZXN1bHRbMF0gPSBt
MTEoKTsKKyAgICByZXN1bHRbMV0gPSBtMTIoKTsKKyAgICByZXN1bHRbMl0gPSBtMTMoKTsKKyAg
ICByZXN1bHRbM10gPSBtMTQoKTsKKyAgICByZXN1bHRbNF0gPSBtMjEoKTsKKyAgICByZXN1bHRb
NV0gPSBtMjIoKTsKKyAgICByZXN1bHRbNl0gPSBtMjMoKTsKKyAgICByZXN1bHRbN10gPSBtMjQo
KTsKKyAgICByZXN1bHRbOF0gPSBtMzEoKTsKKyAgICByZXN1bHRbOV0gPSBtMzIoKTsKKyAgICBy
ZXN1bHRbMTBdID0gbTMzKCk7CisgICAgcmVzdWx0WzExXSA9IG0zNCgpOworICAgIHJlc3VsdFsx
Ml0gPSBtNDEoKTsKKyAgICByZXN1bHRbMTNdID0gbTQyKCk7CisgICAgcmVzdWx0WzE0XSA9IG00
MygpOworICAgIHJlc3VsdFsxNV0gPSBtNDQoKTsKK30KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oCmluZGV4IDA0NTBhZDcuLmE5OGQ3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTM1MCw2ICszNTAsOSBAQCBwdWJsaWM6CiAKICAgICAv
LyBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBtYXRyaXggd2l0aG91dCAzRCBjb21wb25lbnRzLgog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRvMmRUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICAKKyAg
ICB0eXBlZGVmIGZsb2F0IEZsb2F0TWF0cml4NFsxNl07CisgICAgdm9pZCB0b0NvbHVtbk1ham9y
RmxvYXRBcnJheShGbG9hdE1hdHJpeDQmIHJlc3VsdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
Ly8gbXVsdGlwbHkgcGFzc2VkIDJEIHBvaW50IGJ5IG1hdHJpeCAoYXNzdW1lIHo9MCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RPYnNlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdE9ic2VydmVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJjNjA2MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RPYnNlcnZlci5oCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT
4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YK
KyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGaWx0ZXJFZmZlY3RP
YnNlcnZlcl9oCisjZGVmaW5lIEZpbHRlckVmZmVjdE9ic2VydmVyX2gKKworI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGaWx0ZXJFZmZlY3RP
YnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0T2JzZXJ2ZXIoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZmlsdGVyTmVlZHNSZXBhaW50KCkgPSAwOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQorCisj
ZW5kaWYgLy8gRmlsdGVyRWZmZWN0T2JzZXJ2ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggM2VlMTU0MC4uNmY1NDQxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIu
Y3BwCkBAIC0zNCwxMSArMzQsMTkgQEAKICNpbmNsdWRlICJGRURyb3BTaGFkb3cuaCIKICNpbmNs
dWRlICJGRUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIkZFTWVyZ2UuaCIKKyNpbmNsdWRlICJG
aWx0ZXJFZmZlY3RPYnNlcnZlci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKKyNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJDYWNoZWRTaGFk
ZXIuaCIKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJGRUN1
c3RvbUZpbHRlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgaW5saW5lIHZvaWQgZW5kTWF0cml4Um93KFZlY3RvcjxmbG9h
dD4mIHBhcmFtZXRlcnMpCkBAIC01NSw5ICs2MywyMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbGFz
dE1hdHJpeFJvdyhWZWN0b3I8ZmxvYXQ+JiBwYXJhbWV0ZXJzKQogICAgIHBhcmFtZXRlcnMuYXBw
ZW5kKDEpOwogICAgIHBhcmFtZXRlcnMuYXBwZW5kKDApOwogfQorICAgIAorICAgIAorI2lmIEVO
QUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorc3RhdGljIGJvb2wgaXNXZWJHTEVu
YWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIC8vIFdlIG9ubHkgd2FudCB0byBlbmFi
bGUgc2hhZGVycyBpZiBXZWJHTCBpcyBhbHNvIGVuYWJsZWQgb24gdGhpcyBwbGF0Zm9ybS4KKyAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAgICByZXR1cm4g
c2V0dGluZ3MgJiYgc2V0dGluZ3MtPndlYkdMRW5hYmxlZCgpOworfQorI2VuZGlmCiAKLUZpbHRl
ckVmZmVjdFJlbmRlcmVyOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcigpCi0gICAgOiBtX2dyYXBoaWNz
QnVmZmVyQXR0YWNoZWQoZmFsc2UpCitGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0
UmVuZGVyZXIoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIDogbV9vYnNlcnZl
cihvYnNlcnZlcikKKyAgICAsIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZChmYWxzZSkKIHsKICAg
ICBzZXRGaWx0ZXJSZXNvbHV0aW9uKEZsb2F0U2l6ZSgxLCAxKSk7CiAgICAgbV9zb3VyY2VHcmFw
aGljID0gU291cmNlR3JhcGhpYzo6Y3JlYXRlKHRoaXMpOwpAQCAtNzIsOCArOTEsMTQgQEAgR3Jh
cGhpY3NDb250ZXh0KiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6aW5wdXRDb250ZXh0KCkKICAgICBy
ZXR1cm4gc291cmNlSW1hZ2UoKS0+Y29udGV4dCgpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdFJl
bmRlcmVyOjpidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zKQordm9pZCBG
aWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zKQogeworI2lmICFFTkFCTEUoQ1NTX1NIQURFUlMpIHx8
ICFFTkFCTEUoV0VCR0wpCisgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKKyNlbHNlCisgICAg
Q2FjaGVkU2hhZGVyTGlzdCBjYWNoZWRTaGFkZXJzOworI2VuZGlmCisKICAgICBtX2VmZmVjdHMu
Y2xlYXIoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdDsKQEAgLTIxOCw3ICsy
NDMsNDEgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgb3BlcmF0aW9ucykKICAgICAgICAgfQogI2lmIEVOQUJMRShDU1NfU0hBREVSUykK
ICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTTogewotICAgICAgICAgICAgLy8g
Tm90IGltcGxlbWVudGVkIGluIHRoZSBzb2Z0d2FyZSBwYXRoLgorI2lmIEVOQUJMRShXRUJHTCkK
KyAgICAgICAgICAgIGlmICghaXNXZWJHTEVuYWJsZWQoZG9jdW1lbnQpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVy
YXRpb24qIGN1c3RvbUZpbHRlck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEN1c3RvbUZpbHRlck9w
ZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IENoZWNrIHRoYXQgdGhlIGZpbHRlcnMgYXJlIGFscmVhZHkgbG9hZGVkLiBJZiBub3QganVzdCBz
a2lwIHRoZW0gaGVyZS4KKyAgICAgICAgICAgIFN0cmluZyB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50
U2hhZGVyOworICAgICAgICAgICAgYm9vbCBzaGFkZXJzTG9hZGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGlmIChjdXN0b21GaWx0ZXJPcGVyYXRpb24tPnZlcnRleFNoYWRlcigpKSB7CisgICAgICAg
ICAgICAgICAgQ2FjaGVkU2hhZGVyKiBjYWNoZWRTaGFkZXIgPSBjdXN0b21GaWx0ZXJPcGVyYXRp
b24tPnZlcnRleFNoYWRlcigpLT5jYWNoZWRTaGFkZXIoKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlQoY2FjaGVkU2hhZGVyKTsKKyAgICAgICAgICAgICAgICBjYWNoZWRTaGFkZXJzLmFwcGVuZChj
YWNoZWRTaGFkZXIpOworICAgICAgICAgICAgICAgIGNhY2hlZFNoYWRlci0+YWRkQ2xpZW50KHRo
aXMpOworICAgICAgICAgICAgICAgIGlmIChjYWNoZWRTaGFkZXItPmlzTG9hZGVkKCkpCisgICAg
ICAgICAgICAgICAgICAgIHZlcnRleFNoYWRlciA9IGNhY2hlZFNoYWRlci0+c2hhZGVyU3RyaW5n
KCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzaGFkZXJzTG9h
ZGVkID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY3VzdG9tRmlsdGVy
T3BlcmF0aW9uLT5mcmFnbWVudFNoYWRlcigpKSB7CisgICAgICAgICAgICAgICAgQ2FjaGVkU2hh
ZGVyKiBjYWNoZWRTaGFkZXIgPSBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPmZyYWdtZW50U2hhZGVy
KCktPmNhY2hlZFNoYWRlcigpOworICAgICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRTaGFkZXIp
OworICAgICAgICAgICAgICAgIGNhY2hlZFNoYWRlcnMuYXBwZW5kKGNhY2hlZFNoYWRlcik7Cisg
ICAgICAgICAgICAgICAgY2FjaGVkU2hhZGVyLT5hZGRDbGllbnQodGhpcyk7CisgICAgICAgICAg
ICAgICAgaWYgKGNhY2hlZFNoYWRlci0+aXNMb2FkZWQoKSkKKyAgICAgICAgICAgICAgICAgICAg
ZnJhZ21lbnRTaGFkZXIgPSBjYWNoZWRTaGFkZXItPnNoYWRlclN0cmluZygpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc2hhZGVyc0xvYWRlZCA9IGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNoYWRlcnNMb2FkZWQpIHsKKyAgICAgICAg
ICAgICAgICBlZmZlY3QgPSBGRUN1c3RvbUZpbHRlcjo6Y3JlYXRlKHRoaXMsIGRvY3VtZW50LCB2
ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5tZXNoUm93cygpLCBj
dXN0b21GaWx0ZXJPcGVyYXRpb24tPm1lc2hDb2x1bW5zKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPm1lc2hC
b3hUeXBlKCksIGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+bWVzaFR5cGUoKSk7CisgICAgICAgICAg
ICB9CisjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTI0
Myw2ICszMDIsMTcgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucykKIAogICAgIG1fZWZmZWN0cy5maXJzdCgpLT5pbnB1
dEVmZmVjdHMoKS5hcHBlbmQobV9zb3VyY2VHcmFwaGljKTsKICAgICBzZXRNYXhFZmZlY3RSZWN0
cyhtX3NvdXJjZURyYXdpbmdSZWdpb24pOworICAgIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykg
JiYgRU5BQkxFKFdFQkdMKQorICAgIGZvciAoQ2FjaGVkU2hhZGVyTGlzdDo6aXRlcmF0b3IgaXRl
ciA9IG1fY2FjaGVkU2hhZGVycy5iZWdpbigpLCBlbmQgPSBtX2NhY2hlZFNoYWRlcnMuZW5kKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgIGl0ZXItPmdldCgpLT5yZW1vdmVDbGllbnQo
dGhpcyk7CisgICAgbV9jYWNoZWRTaGFkZXJzLnN3YXAoY2FjaGVkU2hhZGVycyk7CisjZW5kaWYK
K30KKwordm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqKQoreworICAgIG1fb2JzZXJ2ZXItPmZpbHRlck5lZWRzUmVwYWludCgpOwogfQogCiB2
b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpwcmVwYXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKaW5kZXggYTg3ZjVjZC4uODAxYTgwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgK
QEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIAorI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
aCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNs
dWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCkBAIC00NCwxMiArNDYsMTYgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEZpbHRlckVmZmVjdD4gPiBGaWx0ZXJF
ZmZlY3RMaXN0OworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGaWx0ZXJFZmZlY3RPYnNlcnZlcjsK
K2NsYXNzIENhY2hlZFNoYWRlcjsKIAotY2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVyZXIgOiBwdWJs
aWMgRmlsdGVyIHsKK2NsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyIDogcHVibGljIEZpbHRlciwg
cHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4g
Y3JlYXRlKCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gY3Jl
YXRlKEZpbHRlckVmZmVjdE9ic2VydmVyKiBvYnNlcnZlcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRmlsdGVyRWZmZWN0UmVuZGVyZXIoKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRmlsdGVyRWZmZWN0UmVuZGVyZXIob2JzZXJ2ZXIpKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
SW1hZ2VSZWN0KQpAQCAtNjcsMTEgKzczLDEzIEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRl
eHQqIGlucHV0Q29udGV4dCgpOwogICAgIEltYWdlQnVmZmVyKiBvdXRwdXQoKSBjb25zdCB7IHJl
dHVybiBsYXN0RWZmZWN0KCktPmFzSW1hZ2VCdWZmZXIoKTsgfQogCi0gICAgdm9pZCBidWlsZChj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgdm9pZCBidWlsZChEb2N1bWVudCosIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmKTsKICAgICB2b2lkIHByZXBhcmUoKTsKICAgICB2b2lkIGFwcGx5
KCk7CiAgICAgCiAgICAgSW50UmVjdCBvdXRwdXRSZWN0KCkgY29uc3QgeyByZXR1cm4gbGFzdEVm
ZmVjdCgpLT5oYXNSZXN1bHQoKSA/IGxhc3RFZmZlY3QoKS0+cmVxdWVzdGVkUmVnaW9uT2ZJbnB1
dEltYWdlRGF0YShJbnRSZWN0KG1fZmlsdGVyUmVnaW9uKSkgOiBJbnRSZWN0KCk7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogICAgIAogcHJp
dmF0ZToKIApAQCAtODksNyArOTcsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKLSAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpOworICAgIEZpbHRlckVmZmVjdFJlbmRl
cmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKik7CiAgICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0UmVu
ZGVyZXIoKTsKICAgICAKICAgICBGbG9hdFJlY3QgbV9zb3VyY2VEcmF3aW5nUmVnaW9uOwpAQCAt
OTcsNiArMTA1LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgRmlsdGVyRWZmZWN0TGlzdCBtX2Vm
ZmVjdHM7CiAgICAgUmVmUHRyPFNvdXJjZUdyYXBoaWM+IG1fc291cmNlR3JhcGhpYzsKKyAgICBG
aWx0ZXJFZmZlY3RPYnNlcnZlciogbV9vYnNlcnZlcjsgLy8gTm8gbmVlZCBmb3IgYSBzdHJvbmcg
cmVmZXJlbmNlcyBoZXJlLiBJdCBvd25zIHVzLgorICAgIAorI2lmIEVOQUJMRShDU1NfU0hBREVS
UykgJiYgRU5BQkxFKFdFQkdMKQorICAgIHR5cGVkZWYgVmVjdG9yPENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFNoYWRlcj4gPiBDYWNoZWRTaGFkZXJMaXN0OworICAgIENhY2hlZFNoYWRlckxp
c3QgbV9jYWNoZWRTaGFkZXJzOworI2VuZGlmCiAgICAgCiAgICAgYm9vbCBtX2dyYXBoaWNzQnVm
ZmVyQXR0YWNoZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
aW5kZXggMTY1N2E5OC4uYzkyMWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC00NDYxLDEyICs0NDYxLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0
ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KCkKIHsKICAgICBpZiAocGFpbnRzV2l0aEZpbHRlcnMoKSkg
ewogICAgICAgICBpZiAoIW1fZmlsdGVyKSB7Ci0gICAgICAgICAgICBtX2ZpbHRlciA9IEZpbHRl
ckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fZmlsdGVyID0gRmlsdGVy
RWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSh0aGlzKTsKICAgICAgICAgICAgIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyKCktPmZyYW1lKCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+
YWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVk
OwogICAgICAgICAgICAgbV9maWx0ZXItPnNldFJlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSk7
CiAgICAgICAgIH0KIAotICAgICAgICBtX2ZpbHRlci0+YnVpbGQocmVuZGVyZXIoKS0+c3R5bGUo
KS0+ZmlsdGVyKCkpOworICAgICAgICBtX2ZpbHRlci0+YnVpbGQocmVuZGVyZXIoKS0+ZG9jdW1l
bnQoKSwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyKCkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIG1fZmlsdGVyID0gMDsKICAgICB9CkBAIC00NDgzLDYgKzQ0ODMsMTEgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlRmlsdGVyQmFja2luZ1N0b3JlKCkKICAgICB9CiB9CiAKK3ZvaWQgUmVu
ZGVyTGF5ZXI6OmZpbHRlck5lZWRzUmVwYWludCgpCit7CisgICAgcmVuZGVyZXIoKS0+bm9kZSgp
LT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICByZW5kZXJl
cigpLT5yZXBhaW50KCk7Cit9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA4Zjg4NGYzLi40N2ZhM2E2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDQsNiArNDQsOSBAQAog
I2lmbmRlZiBSZW5kZXJMYXllcl9oCiAjZGVmaW5lIFJlbmRlckxheWVyX2gKIAorI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3RPYnNlcnZlci5oIgorI2VuZGlm
CiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsQmVoYXZpb3IuaCIKQEAgLTIwOCw3ICsyMTEsMTEgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fZml4ZWQgOiAxOwogfTsKIAotY2xhc3MgUmVuZGVyTGF5ZXIgOiBwdWJsaWMgU2Nyb2xs
YWJsZUFyZWEgeworY2xhc3MgUmVuZGVyTGF5ZXIgOiBwdWJsaWMgU2Nyb2xsYWJsZUFyZWEKKyNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgLCBwdWJsaWMgRmlsdGVyRWZmZWN0T2JzZXJ2ZXIK
KyNlbmRpZgorewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJSZXBsaWNhOwogCkBA
IC01MTQsNiArNTIxLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHByZXNlcnZlczNEKCkgY29uc3Qg
eyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+dHJhbnNmb3JtU3R5bGUzRCgpID09IFRyYW5z
Zm9ybVN0eWxlM0RQcmVzZXJ2ZTNEOyB9CiAgICAgYm9vbCBoYXMzRFRyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHJhbnNmb3JtICYmICFtX3RyYW5zZm9ybS0+aXNBZmZpbmUoKTsgfQogCisj
aWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZpcnR1YWwgdm9pZCBmaWx0ZXJOZWVkc1JlcGFp
bnQoKTsKKyNlbmRpZgorCiAgICAgLy8gT3ZlcmxvYWRlZCBuZXcgb3BlcmF0b3IuIERlcml2ZWQg
Y2xhc3NlcyBtdXN0IG92ZXJyaWRlIG9wZXJhdG9yIG5ldwogICAgIC8vIGluIG9yZGVyIHRvIGFs
bG9jYXRlIG91dCBvZiB0aGUgUmVuZGVyQXJlbmEuCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgUmVuZGVyQXJlbmEqKSB0aHJvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaAppbmRleCA4OGJmYzgxLi4yNjkyMjY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFk
ZXIuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0OwogICAgIAorICAgIHZpcnR1YWwgQ2FjaGVk
U2hhZGVyKiBjYWNoZWRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX3NoYWRlci5nZXQoKTsgfQor
ICAgIAogcHJpdmF0ZToKICAgICBTdHlsZUNhY2hlZFNoYWRlcihDYWNoZWRTaGFkZXIqKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNoYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2hhZGVyLmgKaW5kZXgg
OWIzNjY3Ny4uZmY1ZDJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlU2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlU2hhZGVyLmgKQEAgLTM2LDggKzM2LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBDYWNoZWRTaGFkZXI7CiBjbGFzcyBDU1NWYWx1ZTsKLSAgICAKKwogY2xhc3MgU3R5bGVT
aGFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVNoYWRlcj4gewogcHVibGljOgogICAgIHZp
cnR1YWwgflN0eWxlU2hhZGVyKCkgeyB9CkBAIC00Nyw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3QgPSAwOwog
ICAgIAorICAgIHZpcnR1YWwgQ2FjaGVkU2hhZGVyKiBjYWNoZWRTaGFkZXIoKSBjb25zdCB7IHJl
dHVybiAwOyB9CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAgU3R5bGVTaGFkZXIoKQogICAgICAgICA6
IG1faXNDYWNoZWRTaGFkZXIoZmFsc2UpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>