<?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>54484</bug_id>
          
          <creation_ts>2011-02-15 11:57:33 -0800</creation_ts>
          <short_desc>[chromium] Clean up shader code from LayerChromium classes</short_desc>
          <delta_ts>2011-02-18 15:40:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>54559</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrienne Walker">enne</reporter>
          <assigned_to name="Adrienne Walker">enne</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>scherkus</cc>
    
    <cc>vangelis</cc>
    
    <cc>vrk</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>351445</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-15 11:57:33 -0800</bug_when>
    <thetext>[chromium] Clean up shader code from LayerChromium classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351448</commentid>
    <comment_count>1</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-15 11:59:17 -0800</bug_when>
    <thetext>There&apos;s a lot of copy and paste shader code among all the Layer Chromium classes.  Additionally, a lot of the SharedValue classes are more or less identical.  It&apos;d be nice to be able to share more shader and binding code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351464</commentid>
    <comment_count>2</comment_count>
      <attachid>82500</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-15 12:12:07 -0800</bug_when>
    <thetext>Created attachment 82500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351469</commentid>
    <comment_count>3</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-15 12:14:25 -0800</bug_when>
    <thetext>If anybody has time, I&apos;d love an initial review to catch issues with the general approach, naming, or style.

Marked as no review because this patch needs more cross-platform testing to make sure that I didn&apos;t break anything when moving things around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351481</commentid>
    <comment_count>4</comment_count>
      <attachid>82503</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-15 12:24:14 -0800</bug_when>
    <thetext>Created attachment 82503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351483</commentid>
    <comment_count>5</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-15 12:25:19 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=82503) [details]
&gt; Patch

Remembered to add new files into the patch.  Oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351513</commentid>
    <comment_count>6</comment_count>
      <attachid>82503</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-15 13:03:35 -0800</bug_when>
    <thetext>Comment on attachment 82503
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/ProgramBinding.h:60
&gt; +    bool init(const char* vertexShader, const char* fragmentShader);

please use String for strings (GraphicsContext3D takes Strings, so we have to pay the conversion cost anyway).

&gt; Source/WebCore/platform/graphics/chromium/ProgramBinding.h:71
&gt; +template&lt;class VertexShader, class FragmentShader&gt;

why templates instead of inheritance here? inheritance is more common in WebKit and I don&apos;t think the runtime overhead is significant here.

&gt; Source/WebCore/platform/graphics/chromium/ShaderChromium.cpp:36
&gt; +#define SHADER0(Src) #Src
&gt; +#define SHADER(Src) SHADER0(Src)

this is cute but IMHO makes things a lot harder to read as well as putting everything on one line in the final shader. I&apos;d prefer making the string literals be explicit in the code.

&gt; Source/WebCore/platform/graphics/chromium/ShaderChromium.h:40
&gt; +    const char* getShaderString() const;

String here, please (and in the rest of the patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351524</commentid>
    <comment_count>7</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-15 13:20:14 -0800</bug_when>
    <thetext>(In reply to comment #6)

&gt; &gt; Source/WebCore/platform/graphics/chromium/ProgramBinding.h:71
&gt; &gt; +template&lt;class VertexShader, class FragmentShader&gt;
&gt; 
&gt; why templates instead of inheritance here? inheritance is more common in WebKit and I don&apos;t think the runtime overhead is significant here.

What sort of inheritance are you suggesting?

I could make all VertexShader classes derive from some common VertexShader base class, but at each call site you&apos;d have to dynamically downcast to the derived class to get to all of the fooLocation() members.  Or, you&apos;d have to push those members all up to a bloated base class, which is also not great.

I could also make ProgramBinding have multiple inheritance from two concrete parent shader classes, which I don&apos;t like to do.  And, even if I did that, I would probably also use a template so that I didn&apos;t have to declare every vertex/fragment shader as a separate class.

This approach seemed like the one with the smallest code smell to me.

&gt; &gt; Source/WebCore/platform/graphics/chromium/ShaderChromium.cpp:36
&gt; &gt; +#define SHADER0(Src) #Src
&gt; &gt; +#define SHADER(Src) SHADER0(Src)
&gt; 
&gt; this is cute but IMHO makes things a lot harder to read as well as putting everything on one line in the final shader. I&apos;d prefer making the string literals be explicit in the code.

Hmm.  I found it much easier to read than having these giant blocks of literals.  The other advantage is that you get some syntax highlighting from your editor, rather than having everything just be a giant string.

Vangelis was planning on changing the shaders to use this format, so I figured I&apos;d just go ahead and do it in this patch while I was touching everything.

&gt; Use String.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351539</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-15 13:51:12 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/ProgramBinding.h:71
&gt; &gt; &gt; +template&lt;class VertexShader, class FragmentShader&gt;
&gt; &gt; 
&gt; &gt; why templates instead of inheritance here? inheritance is more common in WebKit and I don&apos;t think the runtime overhead is significant here.
&gt; 
&gt; What sort of inheritance are you suggesting?
&gt; 
&gt; I could make all VertexShader classes derive from some common VertexShader base class, but at each call site you&apos;d have to dynamically downcast to the derived class to get to all of the fooLocation() members.  Or, you&apos;d have to push those members all up to a bloated base class, which is also not great.
&gt; 

Ahh, I see what it&apos;s doing.  That&apos;s quite nice, actually :)

&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/ShaderChromium.cpp:36
&gt; &gt; &gt; +#define SHADER0(Src) #Src
&gt; &gt; &gt; +#define SHADER(Src) SHADER0(Src)
&gt; &gt; 
&gt; &gt; this is cute but IMHO makes things a lot harder to read as well as putting everything on one line in the final shader. I&apos;d prefer making the string literals be explicit in the code.
&gt; 
&gt; Hmm.  I found it much easier to read than having these giant blocks of literals.  The other advantage is that you get some syntax highlighting from your editor, rather than having everything just be a giant string.

Yeah, but it&apos;s syntax highlighting for the wrong language.
&gt; 
&gt; Vangelis was planning on changing the shaders to use this format, so I figured I&apos;d just go ahead and do it in this patch while I was touching everything.
&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351545</commentid>
    <comment_count>9</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-02-15 13:53:25 -0800</bug_when>
    <thetext>+1 for Enne&apos;s approach. There&apos;s clear win here when editing shader code.

&gt; Yeah, but it&apos;s syntax highlighting for the wrong language.
&gt; &gt; 
&gt; &gt; Vangelis was planning on changing the shaders to use this format, so I figured I&apos;d just go ahead and do it in this patch while I was touching everything.
&gt; &gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351756</commentid>
    <comment_count>10</comment_count>
      <attachid>82503</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-02-15 17:21:46 -0800</bug_when>
    <thetext>Comment on attachment 82503
Patch

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

really like the cleanup!

&gt; Source/WebCore/platform/graphics/chromium/ProgramBinding.cpp:44
&gt; +GeometryBinding::GeometryBinding(GraphicsContext3D* context)

Shouldn&apos;t GeometryBinding be in its own file (.cpp, .h) just like every other non-trivial class in WebKit?

&gt; Source/WebCore/platform/graphics/chromium/ProgramBinding.cpp:86
&gt; +static unsigned loadShader(GraphicsContext3D* context, unsigned type, const char* shaderSource)

May be cleaner to make these functions members of ProgramBindingBase and remove the context parameter passed to them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352142</commentid>
    <comment_count>11</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-16 09:45:33 -0800</bug_when>
    <thetext>Re: shader formatting.  Here are the options, as I see them, with some long-winded commentary.

1) Stringified, with vertically aligned quotes:

&quot;void main()                  \n&quot;
&quot;{                            \n&quot;
&quot;  gl_Position = matrix * a_position; \n&quot;
&quot;  v_texCoord = a_texCoord;   \n&quot;
&quot;}                            \n&quot;;

Maybe it&apos;s a personal pet peeve, but I hate vertically aligning source code.  If I add a long line, do I have to modify every other line in that block to have the correct amount of spaces? If I do that, then source control merge and blame operations become more tricky.  If I don&apos;t modify the line (as in the above and in many other examples), then it&apos;s not consistent, but then why do it in the first place?

2) Stringified, no vertical alignment

&quot;void main()\n&quot;
&quot;{\n&quot;
&quot;  gl_Position = matrix * a_position;\n&quot;
&quot;  v_texCoord = a_texCoord;\n&quot;
&quot;}\n&quot;;

If you&apos;re not vertically aligning the trailing \n&quot;, then maybe we could just ditch all the whitespace on the right.  This approach, like the above, still has the issue that you can&apos;t use your editor to indent the shader code like you&apos;d indent the surrounding C++ code.  Granted, our compositor shaders are short and are unlikely to have conditional branches, but it&apos;s still a mark against editability for me.

Mostly, I find this really hard to read because the characters are too dense.  It looks more like a regular expression than source code.

3) Using #define

return SHADER(
    void main()
    {
        gl_Position = matrix * a_position;
        v_texCoord = a_texCoord;
    }
);

I really do find this the clearest to read, but that may be a personal preference.  The argument that syntax highlighting is for the wrong language is very true, but it&apos;s not so different as to be entirely unusable.  It&apos;s an improvement over string literals.

There&apos;s also the argument that this puts everything on one line in the shader, but that doesn&apos;t actually add any value.  At least in my tests, when a compositor shader failed to compile, you just get a runtime error message printed from the createShader function that the shader failed and no line numbers.  We could probably make this better, but given the small number of compositor shaders, it&apos;s likely not worth the time.

4) Separate GLSL files

return
    #include &quot;vertexshadertexpos.glsl&quot;
    ;

This is another option.  The original source shader files could have correct syntax highlighting applied to them because they are pure GLSL, but then we have a whole bunch of stray shader files to handle.  You&apos;d also need a compiler step to stringify these files because you can&apos;t do an #include in the middle of the SHADER macro expansion.  Although, this if it&apos;s part of the build we could be extra fancy and have a shader compilation step as a part of the build to let grossly incorrect shaders fail at compile-time instead of at run-time.  Sadly, all of this is a lot of extra work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352325</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-16 14:04:04 -0800</bug_when>
    <thetext>I think this should wait for 54559 to land, as that one might need to be merged to M10 and after this restructuring lands it will be impossible to backport compositor fixes automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352351</commentid>
    <comment_count>13</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-16 14:25:10 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; I think this should wait for 54559 to land, as that one might need to be merged to M10 and after this restructuring lands it will be impossible to backport compositor fixes automatically.

Thanks for pointing that out.  I don&apos;t want to make it tough to merge for anybody else.

Also, re: shader macro.  I talked to jamesr in person and reached an agreement that the SHADER() macro is the least worst option to include shader code in the compositor.  So, I&apos;ll keep that in for the final patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353195</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-17 15:14:07 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; I think this should wait for 54559 to land, as that one might need to be merged to M10 and after this restructuring lands it will be impossible to backport compositor fixes automatically.

54559 has landed now: http://trac.webkit.org/changeset/78787

is this patch ready to go?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353201</commentid>
    <comment_count>15</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-17 15:22:15 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; I think this should wait for 54559 to land, as that one might need to be merged to M10 and after this restructuring lands it will be impossible to backport compositor fixes automatically.
&gt; 
&gt; 54559 has landed now: http://trac.webkit.org/changeset/78787
&gt; 
&gt; is this patch ready to go?

I&apos;m working on rebaselining it against vrk&apos;s changes and making sure I didn&apos;t break anything.  Most likely tomorrow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353204</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-17 15:24:38 -0800</bug_when>
    <thetext>Cool beans :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353863</commentid>
    <comment_count>17</comment_count>
      <attachid>83020</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-18 15:05:57 -0800</bug_when>
    <thetext>Created attachment 83020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353866</commentid>
    <comment_count>18</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-18 15:12:07 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=83020) [details]
&gt; Patch

My only reservation here is that I couldn&apos;t figure out how to trigger either the PluginLayerChromium drawing or the RGBA path for VideoLayerChromium.  (Are we even using the RGBA path anymore now that we have the YUV path?)

I ran all the media/ and compositing/ tests on Windows though, so I feel confident that I&apos;m not breaking any existing tests.

Also, jamesr tells me I need to rebaseline this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353882</commentid>
    <comment_count>19</comment_count>
      <attachid>83026</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-18 15:29:04 -0800</bug_when>
    <thetext>Created attachment 83026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353890</commentid>
    <comment_count>20</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-02-18 15:40:04 -0800</bug_when>
    <thetext>Committed r79043: &lt;http://trac.webkit.org/changeset/79043&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82500</attachid>
            <date>2011-02-15 12:12:07 -0800</date>
            <delta_ts>2011-02-15 12:24:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54484-20110215121205.patch</filename>
            <type>text/plain</type>
            <size>76867</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMjRmNzY2Y2JmMzhiYmNlOGYwNmYzM2UzMGI2YmFiMWUwNjg4NTZiLi41
ZDgwMDA2ODE1MWNmNjM3ZDY0M2E4YjE1ZDc1YzNkNjliNmJiZDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTcgQEAKKzIwMTEtMDItMTUgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hy
b21pdW1dIENsZWFuIHVwIHNoYWRlciBjb2RlIGZyb20gTGF5ZXJDaHJvbWl1bSBjbGFzc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDQ4NAorCisg
ICAgICAgIFRoaXMgaXMgYSByZWZhY3RvcmluZyBhbmQgdGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5n
ZSBpbiBmdW5jdGlvbmFsaXR5LgorICAgICAgICBBbGwgc2hhZGVyIGNvZGUgaXMgcHVsbGVkIG91
dCBpbnRvIGNsYXNzZXMgaW4gU2hhZGVyQ2hyb21pdW0uCisgICAgICAgIFRoZSBTaGFyZWRWYWx1
ZXMgY2xhc3NlcyBhcmUgbm93IHR1cm5lZCBpbnRvIFByb2dyYW1CaW5kaW5nLCBvbmUgcGVyCisg
ICAgICAgIHNoYWRlciBwcm9ncmFtLiAgVGhlc2UgY29udGFpbiBzaGFkZXIgY2xhc3NlcyB0aGF0
IGtub3cgYWJvdXQgd2hhdAorICAgICAgICB2YXJpYWJsZXMgdGhleSBjYW4gYmluZC4KKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXNMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVy
Q2hyb21pdW06OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhc0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5
ZXJDaHJvbWl1bTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06
OmRyYXdEZWJ1Z0JvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2hhcmVkR2VvbWV0cnkpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpib3JkZXJQcm9ncmFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29udGVudExheWVyUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNhbnZhc0xheWVyUHJv
Z3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvTGF5
ZXJSR0JBUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OnZpZGVvTGF5ZXJZVVZQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cGx1Z2luTGF5ZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OmRyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21pdW06OmRyYXcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpkcmF3U3VyZmFjZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVt
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmRyYXdZVVYpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpkcmF3UkdCQSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmg6CisKIDIwMTEtMDItMTQg
IEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlYjgwMTZjNzkwODM3MmQ0ZmRl
YWM2OGRlNDIzMWU2Zjk5NTY5ZGE5Li42MGJiOGI1Y2UyZTZjYzkyY2M4MWJkMjEyM2RmMTVhM2Iz
NmMxZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNjEyLDggKzI2MTIsMTIgQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUljb24uaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hy
b21pdW0uaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3Jh
bUJpbmRpbmcuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
cm9ncmFtQmluZGluZy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaW1wbGVGb250RGF0YUNocm9taXVtV2lu
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2ltcGxlRm9u
dERhdGFMaW51eC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVNYW5hZ2VyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDRhZWYyNWIxNWFlZmU5NDQwNTIyMTc0NDRiOWFkY2EwY2YyYTFmZGYuLjQyMjM4NzY1OWIz
N2YyYjI2NjM3NzY0YjhmZDI5Yzc1YzU4NTkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hy
b21pdW0uY3BwCkBAIC00MSw2MCArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVuc2ln
bmVkIENhbnZhc0xheWVyQ2hyb21pdW06Om1fc2hhZGVyUHJvZ3JhbUlkID0gMDsKIAotQ2FudmFz
TGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjpTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fY2FudmFzU2hh
ZGVyUHJvZ3JhbSgwKQotICAgICwgbV9zaGFkZXJTYW1wbGVyTG9jYXRpb24oLTEpCi0gICAgLCBt
X3NoYWRlck1hdHJpeExvY2F0aW9uKC0xKQotICAgICwgbV9zaGFkZXJBbHBoYUxvY2F0aW9uKC0x
KQotICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKLXsKLSAgICBjaGFyIHZlcnRleFNoYWRlclN0
cmluZ1tdID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247ICAgXG4iCi0gICAg
ICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOyAgIFxuIgotICAgICAgICAidW5pZm9ybSBt
YXQ0IG1hdHJpeDsgICAgICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3Jk
OyAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgIFxuIgotICAg
ICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgIiAgZ2xfUG9z
aXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOyBcbiIKLSAgICAgICAgIiAgdl90ZXhDb29yZCA9
IGFfdGV4Q29vcmQ7ICAgXG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIjsKLQotICAgIC8vIENhbnZhcyBsYXllcnMgbmVlZCB0byBiZSBmbGlwcGVkIHZlcnRpY2Fs
bHkgYW5kIHRoZWlyIGNvbG9ycyBzaG91bGRuJ3QgYmUKLSAgICAvLyBzd2l6emxlZC4KLSAgICBj
aGFyIGZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidmFyeWluZyB2
ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAi
dW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuIgot
ICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICB2ZWM0IHRleENvbG9yID0gdGV4
dHVyZTJEKHNfdGV4dHVyZSwgdmVjMih2X3RleENvb3JkLngsIDEuMCAtIHZfdGV4Q29vcmQueSkp
OyBcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci54LCB0ZXhDb2xv
ci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFscGhhOyBcbiIKLSAgICAgICAgIn0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSAg
ICBtX2NhbnZhc1NoYWRlclByb2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29udGV4dCwg
dmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZyk7Ci0gICAgaWYgKCFtX2Nh
bnZhc1NoYWRlclByb2dyYW0pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDYW52YXNMYXllckNocm9t
aXVtOiBGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKG1fY2FudmFzU2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIpOwotICAgIG1f
c2hhZGVyTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX2Nh
bnZhc1NoYWRlclByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3NoYWRlckFscGhhTG9jYXRpb24g
PSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX2NhbnZhc1NoYWRlclByb2dyYW0sICJh
bHBoYSIpOwotICAgIEFTU0VSVChtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiAhPSAtMSk7Ci0gICAg
QVNTRVJUKG1fc2hhZGVyTWF0cml4TG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3NoYWRl
ckFscGhhTG9jYXRpb24gIT0gLTEpOwotCi0gICAgbV9pbml0aWFsaXplZCA9IHRydWU7Ci19Ci0K
LUNhbnZhc0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6flNoYXJlZFZhbHVlcygpCi17Ci0g
ICAgaWYgKG1fY2FudmFzU2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5kZWxldGVQcm9ncmFtKG1fY2FudmFzU2hhZGVyUHJvZ3JhbSkpOwotfQotCiBDYW52
YXNMYXllckNocm9taXVtOjpDYW52YXNMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bSogb3duZXIpCiAgICAgOiBMYXllckNocm9taXVtKG93bmVyKQogICAgICwgbV90ZXh0dXJlQ2hh
bmdlZCh0cnVlKQpAQCAtMTA5LDE2ICs1NSwxNyBAQCBDYW52YXNMYXllckNocm9taXVtOjp+Q2Fu
dmFzTGF5ZXJDaHJvbWl1bSgpCiB2b2lkIENhbnZhc0xheWVyQ2hyb21pdW06OmRyYXcoKQogewog
ICAgIEFTU0VSVChsYXllclJlbmRlcmVyKCkpOwotICAgIGNvbnN0IENhbnZhc0xheWVyQ2hyb21p
dW06OlNoYXJlZFZhbHVlcyogc3YgPSBsYXllclJlbmRlcmVyKCktPmNhbnZhc0xheWVyU2hhcmVk
VmFsdWVzKCk7Ci0gICAgQVNTRVJUKHN2ICYmIHN2LT5pbml0aWFsaXplZCgpKTsKKyAgICBjb25z
dCBDYW52YXNMYXllckNocm9taXVtOjpQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlcigp
LT5jYW52YXNMYXllclByb2dyYW0oKTsKKyAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5p
bml0aWFsaXplZCgpKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVu
ZGVyZXJDb250ZXh0KCk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCkp
OwotICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5jYW52YXNTaGFkZXJQcm9ncmFt
KCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc3YtPnNoYWRlclNhbXBs
ZXJMb2NhdGlvbigpLCAwKSk7CisgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIocHJvZ3Jh
bS0+cHJvZ3JhbSgpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKICAgICBkcmF3VGV4
dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLCBk
cmF3VHJhbnNmb3JtKCksCiAgICAgICAgICAgICAgICAgICAgICBib3VuZHMoKS53aWR0aCgpLCBi
b3VuZHMoKS5oZWlnaHQoKSwgZHJhd09wYWNpdHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHN2
LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9u
KCksCisgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhh
TG9jYXRpb24oKSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDY1
MjBiNTViNjhkM2YzNDJjZmQyNGQ2NDM0ZDE3MTYxZjZjZDEwYmUuLjk4MTFiMDY1Y2JjNjE5MDYx
NTg5OGZhNjg0Y2JhMzlkY2Y4YTFlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgK
QEAgLTQ1LDI1ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KCk7CiAK
LSAgICBjbGFzcyBTaGFyZWRWYWx1ZXMgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQg
U2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKik7Ci0gICAgICAgIH5TaGFyZWRWYWx1ZXMo
KTsKLQotICAgICAgICB1bnNpZ25lZCBjYW52YXNTaGFkZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1
cm4gbV9jYW52YXNTaGFkZXJQcm9ncmFtOyB9Ci0gICAgICAgIGludCBzaGFkZXJTYW1wbGVyTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsgfQotICAgICAg
ICBpbnQgc2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlck1hdHJp
eExvY2F0aW9uOyB9Ci0gICAgICAgIGludCBzaGFkZXJBbHBoYUxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaGFkZXJBbHBoYUxvY2F0aW9uOyB9Ci0gICAgICAgIGJvb2wgaW5pdGlhbGl6ZWQo
KSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAg
ICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwotICAgICAgICB1bnNpZ25lZCBtX2NhbnZh
c1NoYWRlclByb2dyYW07Ci0gICAgICAgIGludCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsKLSAg
ICAgICAgaW50IG1fc2hhZGVyTWF0cml4TG9jYXRpb247Ci0gICAgICAgIGludCBtX3NoYWRlckFs
cGhhTG9jYXRpb247Ci0gICAgICAgIGJvb2wgbV9pbml0aWFsaXplZDsKLSAgICB9OworICAgIHR5
cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJH
QkFUZXhGbGlwQWxwaGE+IFByb2dyYW07CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDYW52
YXNMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGEzOGY2YmQyMTI2OTBhMjhmOTgzOGRiODk2
MzVhODQxNGNiNmQ3N2UuLjJhN2M1OWI2OTliZmM2YzU0ZWM5OWFkNGMyNzM2NjRiYjliNzQxZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUwLDgxICs1MCw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ29udGVudExheWVyQ2hyb21pdW06OlNoYXJlZFZh
bHVlczo6U2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQotICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2NvbnRlbnRTaGFkZXJQcm9ncmFtKDApCi0gICAgLCBt
X3NoYWRlclNhbXBsZXJMb2NhdGlvbigtMSkKLSAgICAsIG1fc2hhZGVyTWF0cml4TG9jYXRpb24o
LTEpCi0gICAgLCBtX3NoYWRlckFscGhhTG9jYXRpb24oLTEpCi0gICAgLCBtX2luaXRpYWxpemVk
KGZhbHNlKQotewotICAgIC8vIFNoYWRlcnMgZm9yIGRyYXdpbmcgdGhlIGxheWVyIGNvbnRlbnRz
LgotICAgIGNoYXIgdmVydGV4U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAiYXR0cmlidXRlIHZl
YzQgYV9wb3NpdGlvbjsgICBcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7
ICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgbWF0cml4OyAgICAgICAgIFxuIgotICAgICAg
ICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICBcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
ICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFxuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IG1hdHJpeCAqIGFfcG9zaXRpb247IFxu
IgotICAgICAgICAiICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsgICBcbiIKLSAgICAgICAgIn0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotCi0jaWYgUExBVEZPUk0oU0tJQSkKLSAg
ICAvLyBDb2xvciBpcyBpbiBSR0JBIG9yZGVyLgotICAgIGNoYXIgcmdiYUZyYWdtZW50U2hhZGVy
U3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQg
c190ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBm
bG9hdCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAi
dm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgot
ICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFxuIgotICAgICAgICAiICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwg
dl90ZXhDb29yZCk7IFxuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB0ZXhDb2xvciAqIGFs
cGhhOyBcbiIKLSAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcbiI7Ci0jZW5kaWYKLQotICAgIC8vIENvbG9yIGlzIGluIEJHUkEgb3Jk
ZXIuCi0gICAgY2hhciBiZ3JhRnJhZ21lbnRTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAg
ICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7ICAgICAgICAgICAgICAg
ICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGFscGhhOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIHZlYzQg
dGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsgXG4iCi0gICAgICAg
ICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQodGV4Q29sb3IueiwgdGV4Q29sb3IueSwgdGV4Q29sb3Iu
eCwgdGV4Q29sb3IudykgKiBhbHBoYTsgXG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotCi0jaWYgUExBVEZPUk0oU0tJ
QSkKLSAgICAvLyBBc3N1bWluZyB0aGUgcGFja2luZyBpcyBlaXRoZXIgU2tpYSBkZWZhdWx0IFJH
QkEgb3IgQ2hyb21pdW0gZGVmYXVsdCBCR1JBLgotICAgIGNoYXIqIGZyYWdtZW50U2hhZGVyU3Ry
aW5nID0gU0tfQjMyX1NISUZUID8gcmdiYUZyYWdtZW50U2hhZGVyU3RyaW5nIDogYmdyYUZyYWdt
ZW50U2hhZGVyU3RyaW5nOwotI2Vsc2UKLSAgICBjaGFyKiBmcmFnbWVudFNoYWRlclN0cmluZyA9
IGJncmFGcmFnbWVudFNoYWRlclN0cmluZzsKLSNlbmRpZgotICAgIG1fY29udGVudFNoYWRlclBy
b2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29udGV4dCwgdmVydGV4U2hhZGVyU3RyaW5n
LCBmcmFnbWVudFNoYWRlclN0cmluZyk7Ci0gICAgaWYgKCFtX2NvbnRlbnRTaGFkZXJQcm9ncmFt
KSB7Ci0gICAgICAgIExPR19FUlJPUigiQ29udGVudExheWVyQ2hyb21pdW06IEZhaWxlZCB0byBj
cmVhdGUgc2hhZGVyIHByb2dyYW0iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1f
c2hhZGVyU2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9j
b250ZW50U2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIpOwotICAgIG1fc2hhZGVyTWF0cml4TG9j
YXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX2NvbnRlbnRTaGFkZXJQcm9n
cmFtLCAibWF0cml4Iik7Ci0gICAgbV9zaGFkZXJBbHBoYUxvY2F0aW9uID0gbV9jb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24obV9jb250ZW50U2hhZGVyUHJvZ3JhbSwgImFscGhhIik7Ci0gICAg
QVNTRVJUKG1fc2hhZGVyU2FtcGxlckxvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV9zaGFk
ZXJNYXRyaXhMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fc2hhZGVyQWxwaGFMb2NhdGlv
biAhPSAtMSk7Ci0KLSAgICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKLX0KLQotQ29udGVudExheWVy
Q2hyb21pdW06OlNoYXJlZFZhbHVlczo6flNoYXJlZFZhbHVlcygpCi17Ci0gICAgaWYgKG1fY29u
dGVudFNoYWRlclByb2dyYW0pCi0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVs
ZXRlUHJvZ3JhbShtX2NvbnRlbnRTaGFkZXJQcm9ncmFtKSk7Ci19Ci0KLQogUGFzc1JlZlB0cjxD
b250ZW50TGF5ZXJDaHJvbWl1bT4gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGlj
c0xheWVyQ2hyb21pdW0qIG93bmVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVu
dExheWVyQ2hyb21pdW0ob3duZXIpKTsKQEAgLTMzOSwxMyArMjY0LDEzIEBAIHZvaWQgQ29udGVu
dExheWVyQ2hyb21pdW06OmRyYXcoKQogCiAgICAgQVNTRVJUKGxheWVyUmVuZGVyZXIoKSk7CiAK
LSAgICBjb25zdCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzKiBzdiA9IGxheWVy
UmVuZGVyZXIoKS0+Y29udGVudExheWVyU2hhcmVkVmFsdWVzKCk7Ci0gICAgQVNTRVJUKHN2ICYm
IHN2LT5pbml0aWFsaXplZCgpKTsKKyAgICBjb25zdCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6UHJv
Z3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+Y29udGVudExheWVyUHJvZ3JhbSgpOwor
ICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKICAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RTApKTsKICAgICBiaW5kQ29udGVudHNUZXh0dXJlKCk7Ci0gICAgbGF5ZXJSZW5kZXJlcigpLT51
c2VTaGFkZXIoc3YtPmNvbnRlbnRTaGFkZXJQcm9ncmFtKCkpOwotICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT51bmlmb3JtMWkoc3YtPnNoYWRlclNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CisgICAg
bGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsKKyAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2Ft
cGxlckxvY2F0aW9uKCksIDApKTsKIAogICAgIGlmIChyZXF1aXJlc0NsaXBwZWRVcGRhdGVSZWN0
KCkpIHsKICAgICAgICAgZmxvYXQgbTQzID0gZHJhd1RyYW5zZm9ybSgpLm00MygpOwpAQCAtMzU0
LDEyICsyNzksMTMgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgICAg
IGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0
cml4KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLCBtX3Zpc2libGVSZWN0
SW5MYXllckNvb3Jkcy53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmlzaWJs
ZVJlY3RJbkxheWVyQ29vcmRzLmhlaWdodCgpLCBkcmF3T3BhY2l0eSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBzdi0+c2hhZGVyQWxwaGFM
b2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFk
ZXIoKS5tYXRyaXhMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0t
PmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1h
dHJpeCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdUcmFuc2Zvcm0oKSwgbV9ib3Vu
ZHMud2lkdGgoKSwgbV9ib3VuZHMuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ZHJhd09wYWNpdHkoKSwgc3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgc3YtPnNoYWRlckFscGhhTG9jYXRpb24oKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9j
YXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLmFscGhhTG9jYXRpb24oKSk7CiAgICAgfQogICAgIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVy
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggMzM2MzUxOGRhNTMx
YWM2MGQzMGQ3ZjgwZTdmNWM3NjAzYzMyYTM4MC4uYmQwOTNlZDMwZjI3N2FmNzQ3NGUxNzJhNjQ4
OTI1NmM4MGMxNmEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC01Niwy
OCArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoKTsKICAgICB2aXJ0dWFs
IGJvb2wgZHJhd3NDb250ZW50KCkgeyByZXR1cm4gbV9vd25lciAmJiBtX293bmVyLT5kcmF3c0Nv
bnRlbnQoKTsgfQogCi0gICAgLy8gU3RvcmVzIHZhbHVlcyB0aGF0IGFyZSBzaGFyZWQgYmV0d2Vl
biBpbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyB0aGF0IGFyZQotICAgIC8vIGFzc29jaWF0ZWQgd2l0
aCB0aGUgc2FtZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gKGFuZCBoZW5jZSB0aGUgc2FtZSBHTAot
ICAgIC8vIGNvbnRleHQpLgotICAgIGNsYXNzIFNoYXJlZFZhbHVlcyB7Ci0gICAgcHVibGljOgot
ICAgICAgICBleHBsaWNpdCBTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKLSAgICAg
ICAgflNoYXJlZFZhbHVlcygpOwotCi0gICAgICAgIHVuc2lnbmVkIGNvbnRlbnRTaGFkZXJQcm9n
cmFtKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2hhZGVyUHJvZ3JhbTsgfQotICAgICAgICBp
bnQgc2hhZGVyU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJTYW1wbGVy
TG9jYXRpb247IH0KLSAgICAgICAgaW50IHNoYWRlck1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaGFkZXJNYXRyaXhMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyQWxwaGFM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVyQWxwaGFMb2NhdGlvbjsgfQotICAgICAg
ICBpbnQgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9Ci0KLSAg
ICBwcml2YXRlOgotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwotICAgICAg
ICB1bnNpZ25lZCBtX2NvbnRlbnRTaGFkZXJQcm9ncmFtOwotICAgICAgICBpbnQgbV9zaGFkZXJT
YW1wbGVyTG9jYXRpb247Ci0gICAgICAgIGludCBtX3NoYWRlck1hdHJpeExvY2F0aW9uOwotICAg
ICAgICBpbnQgbV9zaGFkZXJBbHBoYUxvY2F0aW9uOwotICAgICAgICBpbnQgbV9pbml0aWFsaXpl
ZDsKLSAgICB9OworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4
LCBGcmFnbWVudFNoYWRlclRleEFscGhhPiBQcm9ncmFtOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhw
bGljaXQgQ29udGVudExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDhkMDFkOWJkOWFhNDllNjFjOTZhOWVjY2I3NjZk
Y2IxMDFlMzZlZTMuLjlkZDViYjRjYTgwZDE0NzQ3ZTJmMmE5N2M5YjY1ODQ1ZTg0ZWI0YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC00OCw5MyArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLWNvbnN0IHVuc2lnbmVkIExheWVyQ2hyb21p
dW06OnNfcG9zaXRpb25BdHRyaWJMb2NhdGlvbiA9IDA7Ci1jb25zdCB1bnNpZ25lZCBMYXllckNo
cm9taXVtOjpzX3RleENvb3JkQXR0cmliTG9jYXRpb24gPSAxOwotCi1zdGF0aWMgdW5zaWduZWQg
bG9hZFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgdHlwZSwgY29u
c3QgY2hhciogc2hhZGVyU291cmNlKQotewotICAgIHVuc2lnbmVkIHNoYWRlciA9IGNvbnRleHQt
PmNyZWF0ZVNoYWRlcih0eXBlKTsKLSAgICBpZiAoIXNoYWRlcikKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgU3RyaW5nIHNvdXJjZVN0cmluZyhzaGFkZXJTb3VyY2UpOwotICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzb3VyY2VTdHJpbmcpKTsKLSAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+Y29tcGlsZVNoYWRlcihzaGFkZXIpKTsKLSAgICBpbnQgY29tcGls
ZWQgPSAwOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIEdy
YXBoaWNzQ29udGV4dDNEOjpDT01QSUxFX1NUQVRVUywgJmNvbXBpbGVkKSk7Ci0gICAgaWYgKCFj
b21waWxlZCkgewotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRlU2hhZGVyKHNo
YWRlcikpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIHNoYWRlcjsKLX0K
LQotTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjpTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fcXVhZFZl
cnRpY2VzVmJvKDApCi0gICAgLCBtX3F1YWRFbGVtZW50c1ZibygwKQotICAgICwgbV9tYXhUZXh0
dXJlU2l6ZSgwKQotICAgICwgbV9ib3JkZXJTaGFkZXJQcm9ncmFtKDApCi0gICAgLCBtX2JvcmRl
clNoYWRlck1hdHJpeExvY2F0aW9uKC0xKQotICAgICwgbV9ib3JkZXJTaGFkZXJDb2xvckxvY2F0
aW9uKC0xKQotICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKLXsKLSAgICAvLyBWZXJ0ZXggcG9z
aXRpb25zIGFuZCB0ZXh0dXJlIGNvb3JkaW5hdGVzIGZvciB0aGUgNCBjb3JuZXJzIG9mIGEgMXgx
IHF1YWQuCi0gICAgZmxvYXQgdmVydGljZXNbXSA9IHsgLTAuNWYsICAwLjVmLCAwLjBmLCAwLjBm
LCAgMS4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAtMC41ZiwgLTAuNWYsIDAuMGYsIDAu
MGYsICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgIDAuNWYsIC0wLjVmLCAwLjBmLCAx
LjBmLCAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAwLjVmLCAgMC41ZiwgMC4wZiwg
MS4wZiwgIDEuMGYgfTsKLSAgICB1aW50MTZfdCBpbmRpY2VzW10gPSB7IDAsIDEsIDIsIDAsIDIs
IDMsIC8vIFRoZSB0d28gdHJpYW5nbGVzIHRoYXQgbWFrZSB1cCB0aGUgbGF5ZXIgcXVhZC4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDIsIDN9OyAvLyBBIGxpbmUgcGF0aCBmb3Ig
ZHJhd2luZyB0aGUgbGF5ZXIgYm9yZGVyLgotCi0gICAgR0xDKG1fY29udGV4dCwgbV9xdWFkVmVy
dGljZXNWYm8gPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpKTsKLSAgICBHTEMobV9jb250ZXh0
LCBtX3F1YWRFbGVtZW50c1ZibyA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCkpOwotICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJS
QVlfQlVGRkVSLCBtX3F1YWRWZXJ0aWNlc1ZibykpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBzaXplb2Yo
dmVydGljZXMpLCB2ZXJ0aWNlcywgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKSk7Ci0g
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpFTEVNRU5UX0FSUkFZX0JVRkZFUiwgbV9xdWFkRWxlbWVudHNWYm8pKTsKLSAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRf
QVJSQVlfQlVGRkVSLCBzaXplb2YoaW5kaWNlcyksIGluZGljZXMsIEdyYXBoaWNzQ29udGV4dDNE
OjpTVEFUSUNfRFJBVykpOwotCi0gICAgLy8gR2V0IHRoZSBtYXggdGV4dHVyZSBzaXplIHN1cHBv
cnRlZCBieSB0aGUgc3lzdGVtLgotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Z2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUsICZtX21heFRleHR1cmVT
aXplKSk7Ci0KLSAgICAvLyBTaGFkZXJzIGZvciBkcmF3aW5nIHRoZSBkZWJ1ZyBib3JkZXJzIGFy
b3VuZCB0aGUgbGF5ZXJzLgotICAgIGNoYXIgYm9yZGVyVmVydGV4U2hhZGVyU3RyaW5nW10gPQot
ICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsgICBcbiIKLSAgICAgICAgInVuaWZv
cm0gbWF0NCBtYXRyaXg7ICAgICAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAg
ICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIK
LSAgICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gbWF0cml4ICogYV9wb3NpdGlvbjsgXG4iCi0gICAg
ICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLSAgICBjaGFyIGJvcmRlckZy
YWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IGNv
bG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidm9pZCBt
YWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAg
ICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu
IgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLnh5eiAqIGNvbG9yLncsIGNv
bG9yLncpO1xuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFxuIjsKLQotICAgIG1fYm9yZGVyU2hhZGVyUHJvZ3JhbSA9IGNyZWF0
ZVNoYWRlclByb2dyYW0obV9jb250ZXh0LCBib3JkZXJWZXJ0ZXhTaGFkZXJTdHJpbmcsIGJvcmRl
ckZyYWdtZW50U2hhZGVyU3RyaW5nKTsKLSAgICBpZiAoIW1fYm9yZGVyU2hhZGVyUHJvZ3JhbSkg
ewotICAgICAgICBMT0dfRVJST1IoIkNvbnRlbnRMYXllckNocm9taXVtOiBGYWlsZWQgdG8gY3Jl
YXRlIHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2Jv
cmRlclNoYWRlck1hdHJpeExvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
bV9ib3JkZXJTaGFkZXJQcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV9ib3JkZXJTaGFkZXJDb2xv
ckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9ib3JkZXJTaGFkZXJQ
cm9ncmFtLCAiY29sb3IiKTsKLSAgICBBU1NFUlQobV9ib3JkZXJTaGFkZXJNYXRyaXhMb2NhdGlv
biAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fYm9yZGVyU2hhZGVyQ29sb3JMb2NhdGlvbiAhPSAtMSk7
Ci0KLSAgICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKLX0KLQotTGF5ZXJDaHJvbWl1bTo6U2hhcmVk
VmFsdWVzOjp+U2hhcmVkVmFsdWVzKCkKLXsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmRlbGV0ZUJ1ZmZlcihtX3F1YWRWZXJ0aWNlc1ZibykpOwotICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+ZGVsZXRlQnVmZmVyKG1fcXVhZEVsZW1lbnRzVmJvKSk7Ci0gICAgaWYgKG1fYm9y
ZGVyU2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxl
dGVQcm9ncmFtKG1fYm9yZGVyU2hhZGVyUHJvZ3JhbSkpOwotfQotCi0KIFBhc3NSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSog
b3duZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtKG93bmVyKSk7
CkBAIC0yMDEsNDggKzExNCw2IEBAIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlUmVuZGVyU3VyZmFjZSgpCiAgICAgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZS5nZXQo
KTsKIH0KIAotdW5zaWduZWQgTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgY2hhciogdmVydGV4U2hhZGVyU291cmNlLCBj
b25zdCBjaGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZSkKLXsKLSAgICB1bnNpZ25lZCB2ZXJ0ZXhT
aGFkZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hB
REVSLCB2ZXJ0ZXhTaGFkZXJTb3VyY2UpOwotICAgIGlmICghdmVydGV4U2hhZGVyKSB7Ci0gICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSB2ZXJ0ZXggc2hhZGVyIik7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGZyYWdtZW50U2hhZGVyID0gbG9hZFNo
YWRlcihjb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6RlJBR01FTlRfU0hBREVSLCBmcmFnbWVu
dFNoYWRlclNvdXJjZSk7Ci0gICAgaWYgKCFmcmFnbWVudFNoYWRlcikgewotICAgICAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcikpOwotICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZnJhZ21lbnQgc2hhZGVyIik7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5j
cmVhdGVQcm9ncmFtKCk7Ci0gICAgaWYgKCFwcm9ncmFtT2JqZWN0KSB7Ci0gICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBzaGFkZXIgcHJvZ3JhbSIpOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dy
YW1PYmplY3QsIHZlcnRleFNoYWRlcikpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hdHRh
Y2hTaGFkZXIocHJvZ3JhbU9iamVjdCwgZnJhZ21lbnRTaGFkZXIpKTsKLQotICAgIC8vIEJpbmQg
dGhlIGNvbW1vbiBhdHRyaWIgbG9jYXRpb25zLgotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5i
aW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbU9iamVjdCwgc19wb3NpdGlvbkF0dHJpYkxvY2F0aW9u
LCAiYV9wb3NpdGlvbiIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEF0dHJpYkxv
Y2F0aW9uKHByb2dyYW1PYmplY3QsIHNfdGV4Q29vcmRBdHRyaWJMb2NhdGlvbiwgImFfdGV4Q29v
cmQiKSk7Ci0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+bGlua1Byb2dyYW0ocHJvZ3JhbU9i
amVjdCkpOwotICAgIGludCBsaW5rZWQgPSAwOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5n
ZXRQcm9ncmFtaXYocHJvZ3JhbU9iamVjdCwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTktfU1RBVFVT
LCAmbGlua2VkKSk7Ci0gICAgaWYgKCFsaW5rZWQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gbGluayBzaGFkZXIgcHJvZ3JhbSIpOwotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+ZGVsZXRlUHJvZ3JhbShwcm9ncmFtT2JqZWN0KSk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVy
KSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVNoYWRlcihmcmFnbWVudFNoYWRl
cikpOwotICAgIHJldHVybiBwcm9ncmFtT2JqZWN0OwotfQotCiB2b2lkIExheWVyQ2hyb21pdW06
OnNldE5lZWRzQ29tbWl0KCkKIHsKICAgICAvLyBDYWxsIG5vdGlmeVN5bmNSZXF1aXJlZCgpLCB3
aGljaCBmb3Igbm9uLXJvb3QgbGF5ZXJzIHBsdW1icyB0aHJvdWdoIHRvCkBAIC00NTIsMTYgKzMy
MywxNiBAQCB2b2lkIExheWVyQ2hyb21pdW06OmRyYXdEZWJ1Z0JvcmRlcigpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEFTU0VSVChsYXllclJlbmRlcmVyKCkpOwotICAgIGNvbnN0IFNoYXJlZFZh
bHVlcyogc3YgPSBsYXllclJlbmRlcmVyKCktPmxheWVyU2hhcmVkVmFsdWVzKCk7Ci0gICAgQVNT
RVJUKHN2ICYmIHN2LT5pbml0aWFsaXplZCgpKTsKLSAgICBsYXllclJlbmRlcmVyKCktPnVzZVNo
YWRlcihzdi0+Ym9yZGVyU2hhZGVyUHJvZ3JhbSgpKTsKKyAgICBjb25zdCBCb3JkZXJQcm9ncmFt
KiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlcigpLT5ib3JkZXJQcm9ncmFtKCk7CisgICAgQVNTRVJU
KHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CisgICAgbGF5ZXJSZW5kZXJlcigp
LT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCByZW5kZXJNYXRyaXggPSBkcmF3VHJhbnNmb3JtKCk7CiAgICAgcmVuZGVyTWF0cml4LnNjYWxl
M2QoYm91bmRzKCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIDEpOwogICAgIHRvR0xNYXRy
aXgoJmdsTWF0cml4WzBdLCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSAqIHJl
bmRlck1hdHJpeCk7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRl
cmVyQ29udGV4dCgpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2
KHN2LT5ib3JkZXJTaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBmYWxzZSwgJmdsTWF0cml4WzBdLCAx
KSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYocHJvZ3JhbS0+
dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwgZmFsc2UsICZnbE1hdHJpeFswXSwgMSkp
OwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm00Zihzdi0+Ym9yZGVyU2hhZGVy
Q29sb3JMb2NhdGlvbigpLCBib3JkZXJDb2xvcigpLnJlZCgpIC8gMjU1LjAsIGJvcmRlckNvbG9y
KCkuZ3JlZW4oKSAvIDI1NS4wLCBib3JkZXJDb2xvcigpLmJsdWUoKSAvIDI1NS4wLCAxKSk7Cisg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm00Zihwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLmNvbG9yTG9jYXRpb24oKSwgYm9yZGVyQ29sb3IoKS5yZWQoKSAvIDI1NS4wLCBib3JkZXJD
b2xvcigpLmdyZWVuKCkgLyAyNTUuMCwgYm9yZGVyQ29sb3IoKS5ibHVlKCkgLyAyNTUuMCwgMSkp
OwogCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmxpbmVXaWR0aChib3JkZXJXaWR0aCgpKSk7
CiAKQEAgLTUwMSwxOSArMzcyLDUgQEAgYm9vbCBMYXllckNocm9taXVtOjpkZXNjZW5kYW50c0Ry
YXdDb250ZW50UmVjdXJzaXZlKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLS8vIHN0YXRpYwot
dm9pZCBMYXllckNocm9taXVtOjpwcmVwYXJlRm9yRHJhdyhjb25zdCBTaGFyZWRWYWx1ZXMqIHN2
KQotewotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gc3YtPmNvbnRleHQoKTsKLSAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJS
QVlfQlVGRkVSLCBzdi0+cXVhZFZlcnRpY2VzVmJvKCkpKTsKLSAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIs
IHN2LT5xdWFkRWxlbWVudHNWYm8oKSkpOwotICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7Ci0gICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoc19wb3NpdGlvbkF0dHJp
YkxvY2F0aW9uLCAzLCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCA1ICogc2l6ZW9m
KGZsb2F0KSwgb2Zmc2V0KSk7Ci0gICAgb2Zmc2V0ICs9IDMgKiBzaXplb2YoZmxvYXQpOwotICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKHNfdGV4Q29vcmRBdHRy
aWJMb2NhdGlvbiwgMiwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwgNSAqIHNpemVv
ZihmbG9hdCksIG9mZnNldCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5lbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShzX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24pKTsKLSAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoc190ZXhDb29yZEF0dHJpYkxvY2F0
aW9uKSk7Ci19Ci0KIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmgKaW5kZXggZmY5ZTVlNWQ4MzFjM2YxM2U5MzA3NmU2YWZjNTU4ZjdjY2E5
OGNkNy4uOGUzMTc2ZDRiOGQ1ZTcwY2FjMTY1NGRkOGYxZjYxZWYyYWRkMWI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaApAQCAtMzgsNyArMzgsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisjaW5jbHVkZSAiUHJvZ3JhbUJpbmRpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJT
dXJmYWNlQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJTaGFkZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
IlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC02MCw3ICs2Miw2IEBAIGNsYXNzIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTsKIC8vIHRoaXMgY2xhc3MuCiBjbGFzcyBMYXllckNocm9taXVtIDogcHVibGlj
IFJlZkNvdW50ZWQ8TGF5ZXJDaHJvbWl1bT4gewogICAgIGZyaWVuZCBjbGFzcyBMYXllclJlbmRl
cmVyQ2hyb21pdW07Ci0gICAgZnJpZW5kIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bTsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NM
YXllckNocm9taXVtKiBvd25lciA9IDApOwogCkBAIC0xNzIsNDUgKzE3MywxNSBAQCBwdWJsaWM6
CiAKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIGNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKIAot
ICAgIC8vIFN0b3JlcyB2YWx1ZXMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4gaW5zdGFuY2VzIG9m
IHRoaXMgY2xhc3MgdGhhdCBhcmUKLSAgICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgTGF5
ZXJSZW5kZXJlckNocm9taXVtIChhbmQgaGVuY2UgdGhlIHNhbWUgR0wKLSAgICAvLyBjb250ZXh0
KS4KLSAgICBjbGFzcyBTaGFyZWRWYWx1ZXMgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGlj
aXQgU2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKik7Ci0gICAgICAgIH5TaGFyZWRWYWx1
ZXMoKTsKLQotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGV4dDsgfQotICAgICAgICB1bnNpZ25lZCBxdWFkVmVydGljZXNWYm8oKSBjb25z
dCB7IHJldHVybiBtX3F1YWRWZXJ0aWNlc1ZibzsgfQotICAgICAgICB1bnNpZ25lZCBxdWFkRWxl
bWVudHNWYm8oKSBjb25zdCB7IHJldHVybiBtX3F1YWRFbGVtZW50c1ZibzsgfQotICAgICAgICBp
bnQgbWF4VGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFRleHR1cmVTaXplOyB9Ci0g
ICAgICAgIHVuc2lnbmVkIGJvcmRlclNoYWRlclByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX2Jv
cmRlclNoYWRlclByb2dyYW07IH0KLSAgICAgICAgaW50IGJvcmRlclNoYWRlck1hdHJpeExvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ib3JkZXJTaGFkZXJNYXRyaXhMb2NhdGlvbjsgfQotICAg
ICAgICBpbnQgYm9yZGVyU2hhZGVyQ29sb3JMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYm9y
ZGVyU2hhZGVyQ29sb3JMb2NhdGlvbjsgfQotICAgICAgICBib29sIGluaXRpYWxpemVkKCkgY29u
c3QgeyByZXR1cm4gbV9pbml0aWFsaXplZDsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKLSAgICAgICAgdW5zaWduZWQgbV9xdWFkVmVydGlj
ZXNWYm87Ci0gICAgICAgIHVuc2lnbmVkIG1fcXVhZEVsZW1lbnRzVmJvOwotICAgICAgICBpbnQg
bV9tYXhUZXh0dXJlU2l6ZTsKLSAgICAgICAgdW5zaWduZWQgbV9ib3JkZXJTaGFkZXJQcm9ncmFt
OwotICAgICAgICBpbnQgbV9ib3JkZXJTaGFkZXJNYXRyaXhMb2NhdGlvbjsKLSAgICAgICAgaW50
IG1fYm9yZGVyU2hhZGVyQ29sb3JMb2NhdGlvbjsKLSAgICAgICAgYm9vbCBtX2luaXRpYWxpemVk
OwotICAgIH07Ci0KLSAgICBzdGF0aWMgdm9pZCBwcmVwYXJlRm9yRHJhdyhjb25zdCBTaGFyZWRW
YWx1ZXMqKTsKLQogICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlci5nZXQoKTsgfQogCi0gICAgc3RhdGljIHVuc2ln
bmVkIGNyZWF0ZVNoYWRlclByb2dyYW0oR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBjaGFyKiB2
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyU291cmNlKTsKICAg
ICBzdGF0aWMgdm9pZCB0b0dMTWF0cml4KGZsb2F0KiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmKTsKIAogICAgIHN0YXRpYyB2b2lkIGRyYXdUZXh0dXJlZFF1YWQoR3JhcGhpY3NDb250ZXh0
M0QqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyTWF0cml4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXRyaXhMb2NhdGlvbiwgaW50IGFs
cGhhTG9jYXRpb24pOwogCisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQ
b3MsIEZyYWdtZW50U2hhZGVyQ29sb3I+IEJvcmRlclByb2dyYW07CiBwcm90ZWN0ZWQ6CiAgICAg
R3JhcGhpY3NMYXllckNocm9taXVtKiBtX293bmVyOwogICAgIExheWVyQ2hyb21pdW0oR3JhcGhp
Y3NMYXllckNocm9taXVtKiBvd25lcik7CkBAIC0yMzcsMTIgKzIwOCw2IEBAIHByb3RlY3RlZDoK
ICAgICAvLyBjb29yZGluYXRlIHN5c3RlbSB0aGUgbGF5ZXIncyB0cmFuc2Zvcm1zIGFyZSByZWxh
dGl2ZSB0by4KICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIG1fdGFyZ2V0UmVuZGVyU3VyZmFj
ZTsKIAotICAgIC8vIEFsbCBsYXllciBzaGFkZXJzIHNoYXJlIHRoZSBzYW1lIGF0dHJpYnV0ZSBs
b2NhdGlvbnMgZm9yIHRoZSB2ZXJ0ZXggcG9zaXRpb25zCi0gICAgLy8gYW5kIHRleHR1cmUgY29v
cmRpbmF0ZXMuIFRoaXMgYWxsb3dzIHN3aXRjaGluZyBzaGFkZXJzIHdpdGhvdXQgcmViaW5kaW5n
IGF0dHJpYnV0ZQotICAgIC8vIGFycmF5cy4KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19w
b3NpdGlvbkF0dHJpYkxvY2F0aW9uOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3RleENv
b3JkQXR0cmliTG9jYXRpb247Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzZXROZWVkc0NvbW1pdCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA1ZTBlYWNhMGQ4
ODFhY2I4NjU1ZjRhYjBjN2VhZWE5MTI4MTI3YTAxLi4wYTVhYTViYTYyODE4MDVlYmYxN2I1ZDk2
NTk4ZTBmYTA1MmFhZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
QEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVy
cyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdAogICAgIEdMQyhtX2Nv
bnRleHQuZ2V0KCksIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgdmlzaWJsZVJlY3RXaWR0aCwg
dmlzaWJsZVJlY3RIZWlnaHQpKTsKIAogICAgIC8vIEJpbmQgdGhlIGNvbW1vbiB2ZXJ0ZXggYXR0
cmlidXRlcyB1c2VkIGZvciBkcmF3aW5nIGFsbCB0aGUgbGF5ZXJzLgotICAgIExheWVyQ2hyb21p
dW06OnByZXBhcmVGb3JEcmF3KGxheWVyU2hhcmVkVmFsdWVzKCkpOworICAgIG1fc2hhcmVkR2Vv
bWV0cnktPnByZXBhcmVGb3JEcmF3KCk7CiAKICAgICAvLyBGSVhNRTogVGhlc2UgY2FsbHMgY2Fu
IGJlIG1hZGUgb25jZSwgd2hlbiB0aGUgY29tcG9zaXRvciBjb250ZXh0IGlzIGluaXRpYWxpemVk
LgogICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0Nv
bnRleHQzRDo6REVQVEhfVEVTVCkpOwpAQCAtNzkzLDE3ICs3OTMsMjIgQEAgYm9vbCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkKICAgICAvLyBDcmVhdGUg
YW4gRkJPIGZvciBkb2luZyBvZmZzY3JlZW4gcmVuZGVyaW5nLgogICAgIEdMQyhtX2NvbnRleHQu
Z2V0KCksIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVi
dWZmZXIoKSk7CiAKLSAgICBtX2xheWVyU2hhcmVkVmFsdWVzID0gYWRvcHRQdHIobmV3IExheWVy
Q2hyb21pdW06OlNoYXJlZFZhbHVlcyhtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICBtX2NvbnRlbnRM
YXllclNoYXJlZFZhbHVlcyA9IGFkb3B0UHRyKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bTo6U2hh
cmVkVmFsdWVzKG1fY29udGV4dC5nZXQoKSkpOwotICAgIG1fY2FudmFzTGF5ZXJTaGFyZWRWYWx1
ZXMgPSBhZG9wdFB0cihuZXcgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzKG1fY29u
dGV4dC5nZXQoKSkpOwotICAgIG1fdmlkZW9MYXllclNoYXJlZFZhbHVlcyA9IGFkb3B0UHRyKG5l
dyBWaWRlb0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyhtX2NvbnRleHQuZ2V0KCkpKTsKLSAg
ICBtX3BsdWdpbkxheWVyU2hhcmVkVmFsdWVzID0gYWRvcHRQdHIobmV3IFBsdWdpbkxheWVyQ2hy
b21pdW06OlNoYXJlZFZhbHVlcyhtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICBtX3JlbmRlclN1cmZh
Y2VTaGFyZWRWYWx1ZXMgPSBhZG9wdFB0cihuZXcgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpTaGFy
ZWRWYWx1ZXMobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgbV90aWxlclNoYXJlZFZhbHVlcyA9IGFk
b3B0UHRyKG5ldyBMYXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyhtX2NvbnRleHQuZ2V0
KCkpKTsKLQotICAgIGlmICghbV9sYXllclNoYXJlZFZhbHVlcy0+aW5pdGlhbGl6ZWQoKSB8fCAh
bV9jb250ZW50TGF5ZXJTaGFyZWRWYWx1ZXMtPmluaXRpYWxpemVkKCkgfHwgIW1fY2FudmFzTGF5
ZXJTaGFyZWRWYWx1ZXMtPmluaXRpYWxpemVkKCkKLSAgICAgICAgfHwgIW1fdmlkZW9MYXllclNo
YXJlZFZhbHVlcy0+aW5pdGlhbGl6ZWQoKSB8fCAhbV9wbHVnaW5MYXllclNoYXJlZFZhbHVlcy0+
aW5pdGlhbGl6ZWQoKSB8fCAhbV9yZW5kZXJTdXJmYWNlU2hhcmVkVmFsdWVzLT5pbml0aWFsaXpl
ZCgpCi0gICAgICAgIHx8ICFtX3RpbGVyU2hhcmVkVmFsdWVzLT5pbml0aWFsaXplZCgpKSB7Cisg
ICAgbV9zaGFyZWRHZW9tZXRyeSA9IGFkb3B0UHRyKG5ldyBHZW9tZXRyeUJpbmRpbmcobV9jb250
ZXh0LmdldCgpKSk7CisgICAgbV9ib3JkZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3IExheWVyQ2hy
b21pdW06OkJvcmRlclByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgbV9jb250ZW50TGF5
ZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3IENvbnRlbnRMYXllckNocm9taXVtOjpQcm9ncmFtKG1f
Y29udGV4dC5nZXQoKSkpOworICAgIG1fY2FudmFzTGF5ZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3
IENhbnZhc0xheWVyQ2hyb21pdW06OlByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgbV92
aWRlb0xheWVyUkdCQVByb2dyYW0gPSBhZG9wdFB0cihuZXcgVmlkZW9MYXllckNocm9taXVtOjpS
R0JBUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFt
ID0gYWRvcHRQdHIobmV3IFZpZGVvTGF5ZXJDaHJvbWl1bTo6WVVWUHJvZ3JhbShtX2NvbnRleHQu
Z2V0KCkpKTsKKyAgICBtX3BsdWdpbkxheWVyUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBQbHVnaW5M
YXllckNocm9taXVtOjpQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgIG1fcmVuZGVyU3Vy
ZmFjZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpQcm9ncmFt
KG1fY29udGV4dC5nZXQoKSkpOworICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtID0gYWRv
cHRQdHIobmV3IFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6TWFza1Byb2dyYW0obV9jb250ZXh0Lmdl
dCgpKSk7CisgICAgbV90aWxlclByb2dyYW0gPSBhZG9wdFB0cihuZXcgTGF5ZXJUaWxlckNocm9t
aXVtOjpQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworCisgICAgaWYgKCFtX3NoYXJlZEdlb21l
dHJ5LT5pbml0aWFsaXplZCgpIHx8ICFtX2JvcmRlclByb2dyYW0tPmluaXRpYWxpemVkKCkKKyAg
ICAgICAgfHwgIW1fY29udGVudExheWVyUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSB8fCAhbV9jYW52
YXNMYXllclByb2dyYW0tPmluaXRpYWxpemVkKCkKKyAgICAgICAgfHwgIW1fdmlkZW9MYXllclJH
QkFQcm9ncmFtLT5pbml0aWFsaXplZCgpIHx8ICFtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtLT5pbml0
aWFsaXplZCgpCisgICAgICAgIHx8ICFtX3BsdWdpbkxheWVyUHJvZ3JhbS0+aW5pdGlhbGl6ZWQo
KSB8fCAhbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKQorICAgICAgICB8fCAh
bV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0tPmluaXRpYWxpemVkKCkgfHwgIW1fdGlsZXJQcm9n
cmFtLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIGNsZWFudXBTaGFyZWRPYmplY3RzKCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC04MTYsMTMgKzgyMSwxNiBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogCi0gICAgbV9sYXllclNoYXJlZFZhbHVlcy5jbGVhcigpOwotICAg
IG1fY29udGVudExheWVyU2hhcmVkVmFsdWVzLmNsZWFyKCk7Ci0gICAgbV9jYW52YXNMYXllclNo
YXJlZFZhbHVlcy5jbGVhcigpOwotICAgIG1fdmlkZW9MYXllclNoYXJlZFZhbHVlcy5jbGVhcigp
OwotICAgIG1fcGx1Z2luTGF5ZXJTaGFyZWRWYWx1ZXMuY2xlYXIoKTsKLSAgICBtX3JlbmRlclN1
cmZhY2VTaGFyZWRWYWx1ZXMuY2xlYXIoKTsKLSAgICBtX3RpbGVyU2hhcmVkVmFsdWVzLmNsZWFy
KCk7CisgICAgbV9zaGFyZWRHZW9tZXRyeS5jbGVhcigpOworICAgIG1fYm9yZGVyUHJvZ3JhbS5j
bGVhcigpOworICAgIG1fY29udGVudExheWVyUHJvZ3JhbS5jbGVhcigpOworICAgIG1fY2FudmFz
TGF5ZXJQcm9ncmFtLmNsZWFyKCk7CisgICAgbV92aWRlb0xheWVyUkdCQVByb2dyYW0uY2xlYXIo
KTsKKyAgICBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtLmNsZWFyKCk7CisgICAgbV9wbHVnaW5MYXll
clByb2dyYW0uY2xlYXIoKTsKKyAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmNsZWFyKCk7Cisg
ICAgbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0uY2xlYXIoKTsKKyAgICBtX3RpbGVyUHJvZ3Jh
bS5jbGVhcigpOwogICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpCiAgICAgICAgIEdM
QyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9vZmZzY3Jl
ZW5GcmFtZWJ1ZmZlcklkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5k
ZXggZTI1NzU5ZDRkNzc2YzA0YzJjYjVkYWIzYTFkYWZjZTA5MzUwYTQzMy4uODdkY2FiZWViODk4
OTc5YjU4MDU4M2FhZTQwNWQ1ZTE2ZDkwY2FhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgKQEAgLTEwNiwxMyArMTA2LDE2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2hlY2tU
ZXh0dXJlU2l6ZShjb25zdCBJbnRTaXplJik7CiAKLSAgICBjb25zdCBMYXllckNocm9taXVtOjpT
aGFyZWRWYWx1ZXMqIGxheWVyU2hhcmVkVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclNo
YXJlZFZhbHVlcy5nZXQoKTsgfQotICAgIGNvbnN0IENvbnRlbnRMYXllckNocm9taXVtOjpTaGFy
ZWRWYWx1ZXMqIGNvbnRlbnRMYXllclNoYXJlZFZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudExheWVyU2hhcmVkVmFsdWVzLmdldCgpOyB9Ci0gICAgY29uc3QgQ2FudmFzTGF5ZXJDaHJv
bWl1bTo6U2hhcmVkVmFsdWVzKiBjYW52YXNMYXllclNoYXJlZFZhbHVlcygpIGNvbnN0IHsgcmV0
dXJuIG1fY2FudmFzTGF5ZXJTaGFyZWRWYWx1ZXMuZ2V0KCk7IH0KLSAgICBjb25zdCBWaWRlb0xh
eWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogdmlkZW9MYXllclNoYXJlZFZhbHVlcygpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW9MYXllclNoYXJlZFZhbHVlcy5nZXQoKTsgfQotICAgIGNvbnN0IFBs
dWdpbkxheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogcGx1Z2luTGF5ZXJTaGFyZWRWYWx1ZXMo
KSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkxheWVyU2hhcmVkVmFsdWVzLmdldCgpOyB9Ci0gICAg
Y29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpTaGFyZWRWYWx1ZXMqIHJlbmRlclN1cmZhY2VT
aGFyZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VTaGFyZWRWYWx1ZXMu
Z2V0KCk7IH0KLSAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogdGls
ZXJTaGFyZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3RpbGVyU2hhcmVkVmFsdWVzLmdldCgp
OyB9CisgICAgY29uc3QgR2VvbWV0cnlCaW5kaW5nKiBzaGFyZWRHZW9tZXRyeSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhcmVkR2VvbWV0cnkuZ2V0KCk7IH0KKyAgICBjb25zdCBMYXllckNocm9taXVt
OjpCb3JkZXJQcm9ncmFtKiBib3JkZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9ib3JkZXJQ
cm9ncmFtLmdldCgpOyB9CisgICAgY29uc3QgQ29udGVudExheWVyQ2hyb21pdW06OlByb2dyYW0q
IGNvbnRlbnRMYXllclByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYXllclByb2dy
YW0uZ2V0KCk7IH0KKyAgICBjb25zdCBDYW52YXNMYXllckNocm9taXVtOjpQcm9ncmFtKiBjYW52
YXNMYXllclByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX2NhbnZhc0xheWVyUHJvZ3JhbS5nZXQo
KTsgfQorICAgIGNvbnN0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6UkdCQVByb2dyYW0qIHZpZGVvTGF5
ZXJSR0JBUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLmdl
dCgpOyB9CisgICAgY29uc3QgVmlkZW9MYXllckNocm9taXVtOjpZVVZQcm9ncmFtKiB2aWRlb0xh
eWVyWVVWUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9MYXllcllVVlByb2dyYW0uZ2V0
KCk7IH0KKyAgICBjb25zdCBQbHVnaW5MYXllckNocm9taXVtOjpQcm9ncmFtKiBwbHVnaW5MYXll
clByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkxheWVyUHJvZ3JhbS5nZXQoKTsgfQor
ICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6UHJvZ3JhbSogcmVuZGVyU3VyZmFjZVBy
b2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmdldCgpOyB9Cisg
ICAgY29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpNYXNrUHJvZ3JhbSogcmVuZGVyU3VyZmFj
ZU1hc2tQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0u
Z2V0KCk7IH0KKyAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qIHRpbGVyUHJv
Z3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZXJQcm9ncmFtLmdldCgpOyB9CiAKICAgICB2b2lk
IHJlc2l6ZU9uc2NyZWVuQ29udGVudChjb25zdCBJbnRTaXplJik7CiAKQEAgLTE4OSwxMyArMTky
LDE2IEBAIHByaXZhdGU6CiAgICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2Ugb2Yg
dGhlIGNvbXBvc2l0b3IuIFNpbmNlIHRoZXJlIGNhbiBiZQogICAgIC8vIG11bHRpcGxlIGluc3Rh
bmNlcyBvZiB0aGUgY29tcG9zaXRvciBydW5uaW5nIGluIHRoZSBzYW1lIHJlbmRlcmVyIHByb2Nl
c3MKICAgICAvLyB3ZSBjYW5ub3Qgc3RvcmUgdGhlc2UgdmFsdWVzIGluIHN0YXRpYyB2YXJpYWJs
ZXMuCi0gICAgT3duUHRyPExheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcz4gbV9sYXllclNoYXJl
ZFZhbHVlczsKLSAgICBPd25QdHI8Q29udGVudExheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcz4g
bV9jb250ZW50TGF5ZXJTaGFyZWRWYWx1ZXM7Ci0gICAgT3duUHRyPENhbnZhc0xheWVyQ2hyb21p
dW06OlNoYXJlZFZhbHVlcz4gbV9jYW52YXNMYXllclNoYXJlZFZhbHVlczsKLSAgICBPd25QdHI8
VmlkZW9MYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXM+IG1fdmlkZW9MYXllclNoYXJlZFZhbHVl
czsKLSAgICBPd25QdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzPiBtX3BsdWdp
bkxheWVyU2hhcmVkVmFsdWVzOwotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlQ2hyb21pdW06OlNo
YXJlZFZhbHVlcz4gbV9yZW5kZXJTdXJmYWNlU2hhcmVkVmFsdWVzOwotICAgIE93blB0cjxMYXll
clRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcz4gbV90aWxlclNoYXJlZFZhbHVlczsKKyAgICBP
d25QdHI8R2VvbWV0cnlCaW5kaW5nPiBtX3NoYXJlZEdlb21ldHJ5OworICAgIE93blB0cjxMYXll
ckNocm9taXVtOjpCb3JkZXJQcm9ncmFtPiBtX2JvcmRlclByb2dyYW07CisgICAgT3duUHRyPENv
bnRlbnRMYXllckNocm9taXVtOjpQcm9ncmFtPiBtX2NvbnRlbnRMYXllclByb2dyYW07CisgICAg
T3duUHRyPENhbnZhc0xheWVyQ2hyb21pdW06OlByb2dyYW0+IG1fY2FudmFzTGF5ZXJQcm9ncmFt
OworICAgIE93blB0cjxWaWRlb0xheWVyQ2hyb21pdW06OlJHQkFQcm9ncmFtPiBtX3ZpZGVvTGF5
ZXJSR0JBUHJvZ3JhbTsKKyAgICBPd25QdHI8VmlkZW9MYXllckNocm9taXVtOjpZVVZQcm9ncmFt
PiBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtOworICAgIE93blB0cjxQbHVnaW5MYXllckNocm9taXVt
OjpQcm9ncmFtPiBtX3BsdWdpbkxheWVyUHJvZ3JhbTsKKyAgICBPd25QdHI8UmVuZGVyU3VyZmFj
ZUNocm9taXVtOjpQcm9ncmFtPiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtOworICAgIE93blB0cjxS
ZW5kZXJTdXJmYWNlQ2hyb21pdW06Ok1hc2tQcm9ncmFtPiBtX3JlbmRlclN1cmZhY2VNYXNrUHJv
Z3JhbTsKKyAgICBPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtPiBtX3RpbGVyUHJv
Z3JhbTsKIAogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV90ZXh0dXJlTWFuYWdlcjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUaWxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKaW5kZXggYzhhYzAyMTY3ODMzMzU1YjNjNzYw
ZDU0YTg3NmQ2ZDZkNDdmY2E2MC4uMWI2MDgyOTE2OWIzMzI5Yjc0NTQzMDg0ZmE2ZTc0NjU3NDVi
OWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCkBAIC0zOTEsOSArMzkxLDkg
QEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXcoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0g
bGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKLSAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlNo
YXJlZFZhbHVlcyogc2hhcmVkVmFsdWVzID0gbGF5ZXJSZW5kZXJlcigpLT50aWxlclNoYXJlZFZh
bHVlcygpOwotICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHNoYXJlZFZhbHVlcy0+dGls
ZXJTaGFkZXJQcm9ncmFtKCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWko
c2hhcmVkVmFsdWVzLT5zaGFkZXJTYW1wbGVyTG9jYXRpb24oKSwgMCkpOworICAgIGNvbnN0IExh
eWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+dGls
ZXJQcm9ncmFtKCk7CisgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJv
Z3JhbSgpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZy
YWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIAogICAgIGludCBsZWZ0LCB0
b3AsIHJpZ2h0LCBib3R0b207CiAgICAgY29udGVudFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRS
ZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQg
TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAg
ICAgICAgICAgZmxvYXQgdGV4U2NhbGVYID0gdGlsZVJlY3Qud2lkdGgoKSAvIHRpbGVXaWR0aDsK
ICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWSA9IHRpbGVSZWN0LmhlaWdodCgpIC8gdGlsZUhl
aWdodDsKIAotICAgICAgICAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRl
cmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgdGlsZU1hdHJpeCwgdGlsZVJlY3Qud2lkdGgoKSwg
dGlsZVJlY3QuaGVpZ2h0KCksIDEsIHRleFRyYW5zbGF0ZVgsIHRleFRyYW5zbGF0ZVksIHRleFNj
YWxlWCwgdGV4U2NhbGVZLCBzaGFyZWRWYWx1ZXMpOworICAgICAgICAgICAgZHJhd1RleHR1cmVk
UXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgdGlsZU1h
dHJpeCwgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIDEsIHRleFRyYW5zbGF0
ZVgsIHRleFRyYW5zbGF0ZVksIHRleFNjYWxlWCwgdGV4U2NhbGVZLCBwcm9ncmFtKTsKIAogICAg
ICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT51bnJlc2VydmUoKTsKICAgICAgICAgfQpAQCAtNDY1
LDcgKzQ2NSw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBUcmFuCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xh
dGVYLCBmbG9hdCB0ZXhUcmFuc2xhdGVZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHRleFNjYWxlWCwgZmxvYXQgdGV4U2NhbGVZLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6U2hhcmVkVmFs
dWVzKiBzdikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXll
clRpbGVyQ2hyb21pdW06OlByb2dyYW0qIHByb2dyYW0pCiB7CiAgICAgc3RhdGljIGZsb2F0IGds
TWF0cml4WzE2XTsKIApAQCAtNDc3LDkzICs0NzcsMTYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OmRyYXdUZXh0dXJlZFF1YWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFRy
YW4KICAgICAvLyBBcHBseSB0aGUgcHJvamVjdGlvbiBtYXRyaXggYmVmb3JlIHNlbmRpbmcgdGhl
IHRyYW5zZm9ybSBvdmVyIHRvIHRoZSBzaGFkZXIuCiAgICAgTGF5ZXJDaHJvbWl1bTo6dG9HTE1h
dHJpeCgmZ2xNYXRyaXhbMF0sIHByb2plY3Rpb25NYXRyaXggKiByZW5kZXJNYXRyaXgpOwogCi0g
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYoc3YtPnNoYWRlck1hdHJp
eExvY2F0aW9uKCksIGZhbHNlLCAmZ2xNYXRyaXhbMF0sIDEpKTsKKyAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhM
b2NhdGlvbigpLCBmYWxzZSwgJmdsTWF0cml4WzBdLCAxKSk7CiAKLSAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dW5pZm9ybTFmKHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCksIG9wYWNpdHkpKTsK
KyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50U2hh
ZGVyKCkuYWxwaGFMb2NhdGlvbigpLCBvcGFjaXR5KSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+dW5pZm9ybTRmKHN2LT5zaGFkZXJUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLAorICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtNGYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkudGV4
VHJhbnNmb3JtTG9jYXRpb24oKSwKICAgICAgICAgdGV4VHJhbnNsYXRlWCwgdGV4VHJhbnNsYXRl
WSwgdGV4U2NhbGVYLCB0ZXhTY2FsZVkpKTsKIAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5k
cmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFUywgNiwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCAwKSk7CiB9CiAKLUxheWVyVGlsZXJDaHJvbWl1bTo6U2hh
cmVkVmFsdWVzOjpTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCi0gICAg
OiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdGlsZXJTaGFkZXJQcm9ncmFtKDApCi0gICAg
LCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbigtMSkKLSAgICAsIG1fc2hhZGVyTWF0cml4TG9jYXRp
b24oLTEpCi0gICAgLCBtX3NoYWRlckFscGhhTG9jYXRpb24oLTEpCi0gICAgLCBtX2luaXRpYWxp
emVkKGZhbHNlKQotewotICAgIC8vIFNoYWRlcnMgZm9yIGRyYXdpbmcgdGhlIGxheWVyIGNvbnRl
bnRzLgotICAgIGNoYXIgdmVydGV4U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAiYXR0cmlidXRl
IHZlYzQgYV9wb3NpdGlvbjsgICBcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29v
cmQ7ICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgbWF0cml4OyAgICAgICAgIFxuIgotICAg
ICAgICAidW5pZm9ybSB2ZWM0IHRleFRyYW5zZm9ybTsgICBcbiIKLSAgICAgICAgInZhcnlpbmcg
dmVjMiB2X3RleENvb3JkOyAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAg
ICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAg
ICAgICAgIiAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOyBcbiIKLSAgICAgICAg
IiAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQgKiB0ZXhUcmFuc2Zvcm0uencgKyB0ZXhUcmFuc2Zv
cm0ueHk7XG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLQot
I2lmIFBMQVRGT1JNKFNLSUEpCi0gICAgLy8gQ29sb3IgaXMgaW4gUkdCQSBvcmRlci4KLSAgICBj
aGFyIHJnYmFGcmFnbWVudFNoYWRlclN0cmluZ1tdID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInZhcnlp
bmcgdmVjMiB2X3RleENvb3JkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAg
ICAgInVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgICBc
biIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgYWxwaGE7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcbiIKLSAgICAgICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgIiAgdmVjNCB0ZXhDb2xvciA9
IHRleHR1cmUyRChzX3RleHR1cmUsIHZfdGV4Q29vcmQpOyBcbiIKLSAgICAgICAgIiAgZ2xfRnJh
Z0NvbG9yID0gdGV4Q29sb3IgKiBhbHBoYTsgXG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotI2VuZGlmCi0KLSAgICAv
LyBDb2xvciBpcyBpbiBCR1JBIG9yZGVyLgotICAgIGNoYXIgYmdyYUZyYWdtZW50U2hhZGVyU3Ry
aW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFxuIgotICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190
ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9h
dCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidm9p
ZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAg
ICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIgotICAgICAgICAiICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90
ZXhDb29yZCk7IFxuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENvbG9yLnos
IHRleENvbG9yLnksIHRleENvbG9yLngsIHRleENvbG9yLncpICogYWxwaGE7IFxuIgotICAgICAg
ICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu
IjsKLQotI2lmIFBMQVRGT1JNKFNLSUEpCi0gICAgLy8gQXNzdW1pbmcgdGhlIHBhY2tpbmcgaXMg
ZWl0aGVyIFNraWEgZGVmYXVsdCBSR0JBIG9yIENocm9taXVtIGRlZmF1bHQgQkdSQS4KLSAgICBj
aGFyKiBmcmFnbWVudFNoYWRlclN0cmluZyA9IFNLX0IzMl9TSElGVCA/IHJnYmFGcmFnbWVudFNo
YWRlclN0cmluZyA6IGJncmFGcmFnbWVudFNoYWRlclN0cmluZzsKLSNlbHNlCi0gICAgY2hhciog
ZnJhZ21lbnRTaGFkZXJTdHJpbmcgPSBiZ3JhRnJhZ21lbnRTaGFkZXJTdHJpbmc7Ci0jZW5kaWYK
LSAgICBtX3RpbGVyU2hhZGVyUHJvZ3JhbSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZVNoYWRlclBy
b2dyYW0obV9jb250ZXh0LCB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5n
KTsKLSAgICBpZiAoIW1fdGlsZXJTaGFkZXJQcm9ncmFtKSB7Ci0gICAgICAgIExPR19FUlJPUigi
TGF5ZXJUaWxlckNocm9taXVtOiBGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBwcm9ncmFtIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1f
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fdGlsZXJTaGFkZXJQcm9ncmFtLCAic190ZXh0
dXJlIik7Ci0gICAgbV9zaGFkZXJNYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKG1fdGlsZXJTaGFkZXJQcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV9zaGFkZXJB
bHBoYUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV90aWxlclNoYWRl
clByb2dyYW0sICJhbHBoYSIpOwotICAgIG1fc2hhZGVyVGV4VHJhbnNmb3JtTG9jYXRpb24gPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3RpbGVyU2hhZGVyUHJvZ3JhbSwgInRleFRy
YW5zZm9ybSIpOwotICAgIEFTU0VSVChtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiAhPSAtMSk7Ci0g
ICAgQVNTRVJUKG1fc2hhZGVyTWF0cml4TG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3No
YWRlckFscGhhTG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3NoYWRlclRleFRyYW5zZm9y
bUxvY2F0aW9uICE9IC0xKTsKLQotICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwotfQotCi1MYXll
clRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6flNoYXJlZFZhbHVlcygpCi17Ci0gICAgaWYg
KG1fdGlsZXJTaGFkZXJQcm9ncmFtKQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmRlbGV0ZVByb2dyYW0obV90aWxlclNoYWRlclByb2dyYW0pKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
aWxlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRpbGVyQ2hyb21pdW0uaAppbmRleCA0YjYzOTlkMDdkNWFlNmYyYWI4ZWZmMmZlOTg0
MTQ4MTBkYTJkZmQzLi4zN2U1MGVmYzY2NGViOTIzNGE4MGYzYzVlZDYzM2RlNGIzYWNmMzUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaApAQCAtNjMsMjcgKzYzLDcgQEAgcHVibGljOgog
ICAgIC8vIENoYW5nZSB0aGUgdGlsZSBzaXplLiAgVGhpcyBtYXkgaW52YWxpZGF0ZSBhbGwgdGhl
IGV4aXN0aW5nIHRpbGVzLgogICAgIHZvaWQgc2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSk7CiAKLSAgICBjbGFzcyBTaGFyZWRWYWx1ZXMgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhw
bGljaXQgU2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKik7Ci0gICAgICAgIH5TaGFyZWRW
YWx1ZXMoKTsKLQotICAgICAgICB1bnNpZ25lZCB0aWxlclNoYWRlclByb2dyYW0oKSBjb25zdCB7
IHJldHVybiBtX3RpbGVyU2hhZGVyUHJvZ3JhbTsgfQotICAgICAgICBpbnQgc2hhZGVyU2FtcGxl
ckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJTYW1wbGVyTG9jYXRpb247IH0KLSAg
ICAgICAgaW50IHNoYWRlck1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJN
YXRyaXhMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyQWxwaGFMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2hhZGVyQWxwaGFMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyVGV4
VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlclRleFRyYW5zZm9ybUxv
Y2F0aW9uOyB9Ci0gICAgICAgIGludCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5p
dGlhbGl6ZWQ7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBt
X2NvbnRleHQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fdGlsZXJTaGFkZXJQcm9ncmFtOwotICAgICAg
ICBpbnQgbV9zaGFkZXJTYW1wbGVyTG9jYXRpb247Ci0gICAgICAgIGludCBtX3NoYWRlck1hdHJp
eExvY2F0aW9uOwotICAgICAgICBpbnQgbV9zaGFkZXJBbHBoYUxvY2F0aW9uOwotICAgICAgICBp
bnQgbV9zaGFkZXJUZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKLSAgICAgICAgaW50IG1faW5pdGlhbGl6
ZWQ7Ci0gICAgfTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1Rl
eFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJUZXhBbHBoYT4gUHJvZ3JhbTsKIAogcHJpdmF0ZToK
ICAgICBMYXllclRpbGVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9uKTsKQEAgLTEwOCw3ICs4OCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQsIGZsb2F0IG9wYWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFRy
YW5zbGF0ZVgsIGZsb2F0IHRleFRyYW5zbGF0ZVksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IHRleFNjYWxlWCwgZmxvYXQgdGV4U2NhbGVZLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyopOworICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qKTsKIAog
ICAgIHZvaWQgcmVzaXplTGF5ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSk7CiAgICAgLy8gR3JvdyBs
YXllciBzaXplIHRvIGNvbnRhaW4gdGhpcyByZWN0YW5nbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDg3OGMxNDJjODc5YTcyZGQ3ZjE5NDhiMmNlZDZlNDVmMmY5YWY5
MTAuLjgwOWViMzc2NDQ5ODI2NDRhNGFiODhmMTZhZmFkMDUzMTk2YzIzYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCkBAIC0zNSw1OCArMzUsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBsdWdpbkxheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6U2hhcmVkVmFs
dWVzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQp
Ci0gICAgLCBtX3NoYWRlclByb2dyYW0oMCkKLSAgICAsIG1fc2hhZGVyU2FtcGxlckxvY2F0aW9u
KC0xKQotICAgICwgbV9zaGFkZXJNYXRyaXhMb2NhdGlvbigtMSkKLSAgICAsIG1fc2hhZGVyQWxw
aGFMb2NhdGlvbigtMSkKLSAgICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCi17Ci0gICAgY2hhciB2
ZXJ0ZXhTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9u
OyAgIFxuIgotICAgICAgICAiYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsgICBcbiIKLSAgICAg
ICAgInVuaWZvcm0gbWF0NCBtYXRyaXg7ICAgICAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZl
YzIgdl90ZXhDb29yZDsgICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAg
ICAgICBcbiIKLSAgICAgICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAg
ICAgICIgIGdsX1Bvc2l0aW9uID0gbWF0cml4ICogYV9wb3NpdGlvbjsgXG4iCi0gICAgICAgICIg
IHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOyAgIFxuIgotICAgICAgICAifSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcbiI7Ci0KLSAgICBjaGFyIGZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFxuIgotICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAg
ICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAg
ICAgICAiICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdmVjMih2X3RleENv
b3JkLngsIHZfdGV4Q29vcmQueSkpOyBcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCh0ZXhDb2xvci54LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFscGhh
OyBcbiIKLSAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcbiI7Ci0KLSAgICBtX3NoYWRlclByb2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9n
cmFtKG1fY29udGV4dCwgdmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZyk7
Ci0gICAgaWYgKCFtX3NoYWRlclByb2dyYW0pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJQbHVnaW5M
YXllckNocm9taXVtOiBGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIpOwotICAg
IG1fc2hhZGVyTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbiht
X3NoYWRlclByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3NoYWRlckFscGhhTG9jYXRpb24gPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJhbHBoYSIpOwot
ICAgIEFTU0VSVChtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1f
c2hhZGVyTWF0cml4TG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3NoYWRlckFscGhhTG9j
YXRpb24gIT0gLTEpOwotCi0gICAgbV9pbml0aWFsaXplZCA9IHRydWU7Ci19Ci0KLVBsdWdpbkxh
eWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6flNoYXJlZFZhbHVlcygpCi17Ci0gICAgaWYgKG1f
c2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVQ
cm9ncmFtKG1fc2hhZGVyUHJvZ3JhbSkpOwotfQotCiBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hy
b21pdW0+IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0q
IG93bmVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luTGF5ZXJDaHJvbWl1bShv
d25lcikpOwpAQCAtMTA5LDggKzU3LDggQEAgdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjp1cGRh
dGVDb250ZW50c0lmRGlydHkoKQogdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpkcmF3KCkKIHsK
ICAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKLSAgICBjb25zdCBQbHVnaW5MYXllckNocm9t
aXVtOjpTaGFyZWRWYWx1ZXMqIHN2ID0gbGF5ZXJSZW5kZXJlcigpLT5wbHVnaW5MYXllclNoYXJl
ZFZhbHVlcygpOwotICAgIEFTU0VSVChzdiAmJiBzdi0+aW5pdGlhbGl6ZWQoKSk7CisgICAgY29u
c3QgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIo
KS0+cGx1Z2luTGF5ZXJQcm9ncmFtKCk7CisgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+
aW5pdGlhbGl6ZWQoKSk7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJl
bmRlcmVyQ29udGV4dCgpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJl
KEdMX1RFWFRVUkUwKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKSk7CkBAIC0xMjIsMTEgKzcwLDEyIEBAIHZvaWQgUGx1
Z2luTGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VE
R0UpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSkpOwogICAgIAotICAgIGxh
eWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5zaGFkZXJQcm9ncmFtKCkpOwotICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc3YtPnNoYWRlclNhbXBsZXJMb2NhdGlvbigpLCAw
KSk7CisgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsK
KyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hh
ZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKICAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRl
eHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLCBkcmF3VHJhbnNmb3JtKCks
CiAgICAgICAgICAgICAgICAgICAgICBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQo
KSwgZHJhd09wYWNpdHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHN2LT5zaGFkZXJNYXRyaXhM
b2NhdGlvbigpLCBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICAg
ICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAg
ICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAppbmRleCA4NTNiMzI4OTc3YzQ0M2Nk
ZjcwN2NjM2E5NWI3OTVmOWRiOTM2ZmRmLi5jMTZiNGU1OWE1OGUyYTYyYzVkNTVlNWNmMTY1M2Yw
YjM3NGY1YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCkBAIC00MywyNSArNDMs
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVy
ZUlkKTsKICAgICAgICAgCi0gICAgY2xhc3MgU2hhcmVkVmFsdWVzIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIFNoYXJlZFZhbHVlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCk7Ci0gICAgICAg
IH5TaGFyZWRWYWx1ZXMoKTsKLQotICAgICAgICB1bnNpZ25lZCBzaGFkZXJQcm9ncmFtKCkgY29u
c3QgeyByZXR1cm4gbV9zaGFkZXJQcm9ncmFtOyB9Ci0gICAgICAgIGludCBzaGFkZXJTYW1wbGVy
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsgfQotICAg
ICAgICBpbnQgc2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlck1h
dHJpeExvY2F0aW9uOyB9Ci0gICAgICAgIGludCBzaGFkZXJBbHBoYUxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zaGFkZXJBbHBoYUxvY2F0aW9uOyB9Ci0gICAgICAgIGJvb2wgaW5pdGlhbGl6
ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9Ci0KLSAgICBwcml2YXRlOgotICAg
ICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwotICAgICAgICB1bnNpZ25lZCBtX3No
YWRlclByb2dyYW07Ci0gICAgICAgIGludCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsKLSAgICAg
ICAgaW50IG1fc2hhZGVyTWF0cml4TG9jYXRpb247Ci0gICAgICAgIGludCBtX3NoYWRlckFscGhh
TG9jYXRpb247Ci0gICAgICAgIGJvb2wgbV9pbml0aWFsaXplZDsKLSAgICB9OworICAgIHR5cGVk
ZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFU
ZXhBbHBoYT4gUHJvZ3JhbTsKIAogcHJpdmF0ZToKICAgICBQbHVnaW5MYXllckNocm9taXVtKEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJv
bWl1bS5jcHAKaW5kZXggYjNjZTlkNzIzNzE2OGM5NTQ3MDE0ZDJjYTUzNGQzMmU5OGMwZjMwYy4u
YmUwMWEzNmQyYTU2MWE5MjZjYzlkNmE1MmM4OTA1ZmI2OTQ4ZGI3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9S
ZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCkBAIC0zNSw5MSArMzUsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlbmRlclN1cmZhY2VDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjpTaGFyZWRW
YWx1ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4
dCkKLSAgICAsIG1fc2hhZGVyUHJvZ3JhbSgwKQotICAgICwgbV9tYXNrU2hhZGVyUHJvZ3JhbSgw
KQotICAgICwgbV9zaGFkZXJTYW1wbGVyTG9jYXRpb24oLTEpCi0gICAgLCBtX3NoYWRlck1hdHJp
eExvY2F0aW9uKC0xKQotICAgICwgbV9zaGFkZXJBbHBoYUxvY2F0aW9uKC0xKQotICAgICwgbV9t
YXNrU2hhZGVyU2FtcGxlckxvY2F0aW9uKC0xKQotICAgICwgbV9tYXNrU2hhZGVyTWFza1NhbXBs
ZXJMb2NhdGlvbigtMSkKLSAgICAsIG1fbWFza1NoYWRlck1hdHJpeExvY2F0aW9uKC0xKQotICAg
ICwgbV9tYXNrU2hhZGVyQWxwaGFMb2NhdGlvbigtMSkKLSAgICAsIG1faW5pdGlhbGl6ZWQoZmFs
c2UpCi17Ci0gICAgY2hhciB2ZXJ0ZXhTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAgICJhdHRyaWJ1
dGUgdmVjNCBhX3Bvc2l0aW9uOyAgIFxuIgotICAgICAgICAiYXR0cmlidXRlIHZlYzIgYV90ZXhD
b29yZDsgICBcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0NCBtYXRyaXg7ICAgICAgICAgXG4iCi0g
ICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgIFxuIgotICAgICAgICAidm9pZCBt
YWluKCkgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gbWF0cml4ICogYV9wb3NpdGlv
bjsgXG4iCi0gICAgICAgICIgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOyAgIFxuIgotICAgICAg
ICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0gICAgY2hhciBmcmFnbWVudFNo
YWRlclN0cmluZ1tdID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3Jk
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxl
cjJEIHNfdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZv
cm0gZmxvYXQgYWxwaGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
biIKLSAgICAgICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcbiIKLSAgICAgICAgIiAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1
cmUsIHZfdGV4Q29vcmQpOyBcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhD
b2xvci54LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFscGhhOyBcbiIK
LSAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcbiI7Ci0gICAgY2hhciBmcmFnbWVudFNoYWRlcldpdGhNYXNrU3RyaW5nW10gPQotICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIgotICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAg
ICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc19tYXNr
OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBh
bHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidm9pZCBt
YWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAg
ICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu
IgotICAgICAgICAiICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhD
b29yZCk7IFxuIgotICAgICAgICAiICB2ZWM0IG1hc2tDb2xvciA9IHRleHR1cmUyRChzX21hc2ss
IHZfdGV4Q29vcmQpOyAgIFxuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENv
bG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9yLncpICogYWxwaGEgKiBtYXNr
Q29sb3IudzsgXG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXG4iOwotCi0gICAgbV9zaGFkZXJQcm9ncmFtID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShtX2NvbnRleHQsIHZlcnRleFNoYWRlclN0cmluZywg
ZnJhZ21lbnRTaGFkZXJTdHJpbmcpOwotICAgIG1fbWFza1NoYWRlclByb2dyYW0gPSBMYXllckNo
cm9taXVtOjpjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29udGV4dCwgdmVydGV4U2hhZGVyU3RyaW5n
LCBmcmFnbWVudFNoYWRlcldpdGhNYXNrU3RyaW5nKTsKLSAgICBpZiAoIW1fc2hhZGVyUHJvZ3Jh
bSB8fCAhbV9tYXNrU2hhZGVyUHJvZ3JhbSkgewotICAgICAgICBMT0dfRVJST1IoIlJlbmRlclN1
cmZhY2VDaHJvbWl1bTogRmFpbGVkIHRvIGNyZWF0ZSBzaGFkZXIgcHJvZ3JhbSIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xDKG1fY29udGV4dCwgbV9zaGFkZXJTYW1wbGVyTG9j
YXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJz
X3RleHR1cmUiKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9zaGFkZXJNYXRyaXhMb2NhdGlvbiA9
IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwgIm1hdHJpeCIp
KTsKLSAgICBHTEMobV9jb250ZXh0LCBtX3NoYWRlckFscGhhTG9jYXRpb24gPSBtX2NvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJhbHBoYSIpKTsKLQotICAgIEdM
QyhtX2NvbnRleHQsIG1fbWFza1NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKG1fbWFza1NoYWRlclByb2dyYW0sICJzX3RleHR1cmUiKSk7Ci0gICAg
R0xDKG1fY29udGV4dCwgbV9tYXNrU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fbWFza1NoYWRlclByb2dyYW0sICJzX21hc2siKSk7Ci0g
ICAgR0xDKG1fY29udGV4dCwgbV9tYXNrU2hhZGVyTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihtX21hc2tTaGFkZXJQcm9ncmFtLCAibWF0cml4IikpOwotICAg
IEdMQyhtX2NvbnRleHQsIG1fbWFza1NoYWRlckFscGhhTG9jYXRpb24gPSBtX2NvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihtX21hc2tTaGFkZXJQcm9ncmFtLCAiYWxwaGEiKSk7Ci0KLSAgICBp
ZiAobV9zaGFkZXJTYW1wbGVyTG9jYXRpb24gPT0gLTEgfHwgbV9zaGFkZXJNYXRyaXhMb2NhdGlv
biA9PSAtMSB8fCBtX3NoYWRlckFscGhhTG9jYXRpb24gPT0gLTEKLSAgICAgICAgfHwgbV9tYXNr
U2hhZGVyU2FtcGxlckxvY2F0aW9uID09IC0xIHx8IG1fbWFza1NoYWRlck1hc2tTYW1wbGVyTG9j
YXRpb24gPT0gLTEgfHwgbV9tYXNrU2hhZGVyTWF0cml4TG9jYXRpb24gPT0gLTEgfHwgbV9tYXNr
U2hhZGVyQWxwaGFMb2NhdGlvbiA9PSAtMSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBpbml0aWFsaXplIHJlbmRlciBzdXJmYWNlIHNoYWRlcnMuIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dyYW0obV9zaGFk
ZXJQcm9ncmFtKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkobV9z
aGFkZXJTYW1wbGVyTG9jYXRpb24sIDApKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PnVzZVByb2dyYW0obV9tYXNrU2hhZGVyUHJvZ3JhbSkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+dW5pZm9ybTFpKG1fbWFza1NoYWRlclNhbXBsZXJMb2NhdGlvbiwgMCkpOwotICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fbWFza1NoYWRlck1hc2tTYW1w
bGVyTG9jYXRpb24sIDEpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dy
YW0oMCkpOwotICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwotfQotCi1SZW5kZXJTdXJmYWNlQ2hy
b21pdW06OlNoYXJlZFZhbHVlczo6flNoYXJlZFZhbHVlcygpCi17Ci0gICAgaWYgKG1fc2hhZGVy
UHJvZ3JhbSkKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFt
KG1fc2hhZGVyUHJvZ3JhbSkpOwotICAgIGlmIChtX21hc2tTaGFkZXJQcm9ncmFtKQotICAgICAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9tYXNrU2hhZGVyUHJv
Z3JhbSkpOwotfQotCiBSZW5kZXJTdXJmYWNlQ2hyb21pdW06OlJlbmRlclN1cmZhY2VDaHJvbWl1
bShMYXllckNocm9taXVtKiBvd25pbmdMYXllcikKICAgICA6IG1fb3duaW5nTGF5ZXIob3duaW5n
TGF5ZXIpCiAgICAgLCBtX21hc2tMYXllcigwKQpAQCAtMTg1LDMwICsxMDAsMzEgQEAgdm9pZCBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW06OmRyYXdTdXJmYWNlKExheWVyQ2hyb21pdW0qIG1hc2tMYXll
ciwgY29uc3QgVHJhbnNmb3IKIAogICAgIGludCBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IC0xOwog
ICAgIGludCBzaGFkZXJBbHBoYUxvY2F0aW9uID0gLTE7Ci0gICAgY29uc3QgUmVuZGVyU3VyZmFj
ZUNocm9taXVtOjpTaGFyZWRWYWx1ZXMqIHN2ID0gbGF5ZXJSZW5kZXJlcigpLT5yZW5kZXJTdXJm
YWNlU2hhcmVkVmFsdWVzKCk7Ci0gICAgQVNTRVJUKHN2ICYmIHN2LT5pbml0aWFsaXplZCgpKTsK
KyAgICBjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06OlByb2dyYW0qIHByb2dyYW0gPSBsYXll
clJlbmRlcmVyKCktPnJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CisgICAgY29uc3QgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtOjpNYXNrUHJvZ3JhbSogbWFza1Byb2dyYW0gPSBsYXllclJlbmRlcmVyKCkt
PnJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSgpOworICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dy
YW0tPmluaXRpYWxpemVkKCkpOwogICAgIGJvb2wgdXNlTWFzayA9IGZhbHNlOwogICAgIGlmICht
YXNrTGF5ZXIgJiYgbWFza0xheWVyLT5kcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBtYXNrTGF5
ZXItPnVwZGF0ZUNvbnRlbnRzSWZEaXJ0eSgpOwogICAgICAgICBpZiAoIW1hc2tMYXllci0+Ym91
bmRzKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjb250ZXh0M0QtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpOwotICAgICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIoc3YtPm1hc2tT
aGFkZXJQcm9ncmFtKCkpOworICAgICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIo
bWFza1Byb2dyYW0tPnByb2dyYW0oKSk7CiAgICAgICAgICAgICBHTEMoY29udGV4dDNELCBjb250
ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAgICAg
ICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+YmluZFRleHR1cmUoKTsKICAgICAgICAgICAgIEdM
Qyhjb250ZXh0M0QsIGNvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRTEpKTsKICAgICAgICAgICAgIG1hc2tMYXllci0+YmluZENvbnRlbnRzVGV4dHVyZSgp
OwogICAgICAgICAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotICAgICAgICAgICAgc2hhZGVyTWF0cml4TG9j
YXRpb24gPSBzdi0+bWFza1NoYWRlck1hdHJpeExvY2F0aW9uKCk7Ci0gICAgICAgICAgICBzaGFk
ZXJBbHBoYUxvY2F0aW9uID0gc3YtPm1hc2tTaGFkZXJBbHBoYUxvY2F0aW9uKCk7CisgICAgICAg
ICAgICBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IG1hc2tQcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5t
YXRyaXhMb2NhdGlvbigpOworICAgICAgICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IG1hc2tQ
cm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKTsKICAgICAgICAgICAgIHVz
ZU1hc2sgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCF1c2VNYXNrKSB7Ci0g
ICAgICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5zaGFkZXJQcm9ncmFtKCkpOwor
ICAgICAgICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihwcm9ncmFtLT5wcm9ncmFtKCkpOwog
ICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+YmluZFRleHR1cmUoKTsKLSAgICAgICAgc2hhZGVy
TWF0cml4TG9jYXRpb24gPSBzdi0+c2hhZGVyTWF0cml4TG9jYXRpb24oKTsKLSAgICAgICAgc2hh
ZGVyQWxwaGFMb2NhdGlvbiA9IHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCk7CisgICAgICAgIHNo
YWRlck1hdHJpeExvY2F0aW9uID0gcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRp
b24oKTsKKyAgICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IHByb2dyYW0tPmZyYWdtZW50U2hh
ZGVyKCkuYWxwaGFMb2NhdGlvbigpOwogICAgIH0KICAgICAKICAgICBMYXllckNocm9taXVtOjpk
cmF3VGV4dHVyZWRRdWFkKGxheWVyUmVuZGVyZXIoKS0+Y29udGV4dCgpLCBsYXllclJlbmRlcmVy
KCktPnByb2plY3Rpb25NYXRyaXgoKSwgZHJhd1RyYW5zZm9ybSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3Vy
ZmFjZUNocm9taXVtLmgKaW5kZXggYjFmNmE1Y2VjODFmMGFjZDMzYzk4OGM4NzczNTRkN2NiMjcy
ODc3Ni4uM2U4OWQ3OTU4NmYxMTRkZDcxNzNjMmYzYTM0MjRmMGQ5NjdlNjEwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTMxLDYgKzMxLDggQEAKIAogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQcm9ncmFtQmlu
ZGluZy5oIgorI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
bmFnZXIuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNjAsMzkgKzYyLDggQEAgcHVibGljOgogCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggZHJhd1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd1RyYW5z
Zm9ybTsgfQogCi0gICAgLy8gU3RvcmVzIHZhbHVlcyB0aGF0IGFyZSBzaGFyZWQgYmV0d2VlbiBp
bnN0YW5jZXMgb2YgdGhpcyBjbGFzcyB0aGF0IGFyZQotICAgIC8vIGFzc29jaWF0ZWQgd2l0aCB0
aGUgc2FtZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gKGFuZCBoZW5jZSB0aGUgc2FtZSBHTAotICAg
IC8vIGNvbnRleHQpLgotICAgIGNsYXNzIFNoYXJlZFZhbHVlcyB7Ci0gICAgcHVibGljOgotICAg
ICAgICBleHBsaWNpdCBTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKLSAgICAgICAg
flNoYXJlZFZhbHVlcygpOwotCi0gICAgICAgIHVuc2lnbmVkIHNoYWRlclByb2dyYW0oKSBjb25z
dCB7IHJldHVybiBtX3NoYWRlclByb2dyYW07IH0KLSAgICAgICAgdW5zaWduZWQgbWFza1NoYWRl
clByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX21hc2tTaGFkZXJQcm9ncmFtOyB9Ci0gICAgICAg
IGludCBzaGFkZXJTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlclNhbXBs
ZXJMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3NoYWRlck1hdHJpeExvY2F0aW9uOyB9Ci0gICAgICAgIGludCBzaGFkZXJBbHBo
YUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJBbHBoYUxvY2F0aW9uOyB9Ci0gICAg
ICAgIGludCBtYXNrU2hhZGVyU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXNr
U2hhZGVyU2FtcGxlckxvY2F0aW9uOyB9Ci0gICAgICAgIGludCBtYXNrU2hhZGVyTWFza1NhbXBs
ZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1NoYWRlck1hc2tTYW1wbGVyTG9jYXRp
b247IH0KLSAgICAgICAgaW50IG1hc2tTaGFkZXJNYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbWFza1NoYWRlck1hdHJpeExvY2F0aW9uOyB9Ci0gICAgICAgIGludCBtYXNrU2hhZGVy
QWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1NoYWRlckFscGhhTG9jYXRpb247
IH0KLSAgICAgICAgYm9vbCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6
ZWQ7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRl
eHQ7Ci0KLSAgICAgICAgdW5zaWduZWQgbV9zaGFkZXJQcm9ncmFtOwotICAgICAgICB1bnNpZ25l
ZCBtX21hc2tTaGFkZXJQcm9ncmFtOwotICAgICAgICBpbnQgbV9zaGFkZXJTYW1wbGVyTG9jYXRp
b247Ci0gICAgICAgIGludCBtX3NoYWRlck1hdHJpeExvY2F0aW9uOwotICAgICAgICBpbnQgbV9z
aGFkZXJBbHBoYUxvY2F0aW9uOwotICAgICAgICBpbnQgbV9tYXNrU2hhZGVyU2FtcGxlckxvY2F0
aW9uOwotICAgICAgICBpbnQgbV9tYXNrU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbjsKLSAgICAg
ICAgaW50IG1fbWFza1NoYWRlck1hdHJpeExvY2F0aW9uOwotICAgICAgICBpbnQgbV9tYXNrU2hh
ZGVyQWxwaGFMb2NhdGlvbjsKLSAgICAgICAgYm9vbCBtX2luaXRpYWxpemVkOwotICAgIH07Cisg
ICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hh
ZGVyUkdCQVRleEFscGhhPiBQcm9ncmFtOworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s+IE1hc2tQcm9n
cmFtOwogCiBwcml2YXRlOgogICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJl
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNDFjZDE4MDJkMDI3MmFh
YWVlY2MwZTQ1MTc4ZWFjY2I3ZTY0ZWI2NS4uMzZkZTBiNDczMWRmOGZmMjFlMTYyMmM3M2UzNjUw
YmM3NjA5MjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC01MSwxMjUg
KzUxLDYgQEAgY29uc3QgZmxvYXQgVmlkZW9MYXllckNocm9taXVtOjp5dXYyUkdCWzldID0gewog
ICAgIDEuNDAzZiwgLS43MTRmLCAwLmYsCiB9OwogCi1WaWRlb0xheWVyQ2hyb21pdW06OlNoYXJl
ZFZhbHVlczo6U2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQotICAgIDog
bV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3l1dlNoYWRlclByb2dyYW0oMCkKLSAgICAsIG1f
cmdiYVNoYWRlclByb2dyYW0oMCkKLSAgICAsIG1feXV2U2hhZGVyTWF0cml4TG9jYXRpb24oMCkK
LSAgICAsIG1feXV2V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKDApCi0gICAgLCBtX3JnYmFTaGFk
ZXJNYXRyaXhMb2NhdGlvbigwKQotICAgICwgbV9yZ2JhV2lkdGhTY2FsZUZhY3RvckxvY2F0aW9u
KDApCi0gICAgLCBtX2NjTWF0cml4TG9jYXRpb24oMCkKLSAgICAsIG1fc2lnbkFkakxvY2F0aW9u
KDApCi0gICAgLCBtX3lUZXh0dXJlTG9jYXRpb24oMCkKLSAgICAsIG1fdVRleHR1cmVMb2NhdGlv
bigwKQotICAgICwgbV92VGV4dHVyZUxvY2F0aW9uKDApCi0gICAgLCBtX3JnYmFUZXh0dXJlTG9j
YXRpb24oMCkKLSAgICAsIG1feXV2QWxwaGFMb2NhdGlvbigwKQotICAgICwgbV9yZ2JhQWxwaGFM
b2NhdGlvbigwKQotICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKLXsKLSAgICAvLyBGcmFtZSB0
ZXh0dXJlcyBhcmUgYWxsb2NhdGVkIGJhc2VkIG9uIHN0cmlkZSB3aWR0aCwgbm90IHZpc2libGUg
ZnJhbWUKLSAgICAvLyB3aWR0aCwgc3VjaCB0aGF0IHRoZXJlIGlzIGEgZ3VhcmFudGVlIHRoYXQg
dGhlIGZyYW1lIHJvd3MgbGluZSB1cAotICAgIC8vIHByb3Blcmx5IGFuZCBhcmUgbm90IHNoaWZ0
ZWQgYnkgKHN0cmlkZSAtIHdpZHRoKSBwaXhlbHMuIFRvIGhpZGUgdGhlCi0gICAgLy8gInBhZGRp
bmciIHBpeGVscyBiZXR3ZWVuIHRoZSBlZGdlIG9mIHRoZSB2aXNpYmxlIGZyYW1lIHdpZHRoIGFu
ZCB0aGUgZW5kCi0gICAgLy8gb2YgdGhlIHN0cmlkZSwgd2UgZ2l2ZSB0aGUgc2hhZGVyIGEgd2lk
dGhTY2FsZUZhY3RvciAoPD0xLjApIG9mIGhvdyBtdWNoCi0gICAgLy8gb2YgdGhlIHdpZHRoIG9m
IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBzaG93biB3aGVuIGRyYXdpbmcgdGhlIHRleHR1cmUgb250
bwotICAgIC8vIHRoZSB2ZXJ0aWNlcy4KLSAgICBjaGFyIHZlcnRleFNoYWRlclN0cmluZ1tdID0K
LSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyAgICAgXG4iCi0gICAgICAgICJhdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOyAgIFxuIgotICAgICAgICAiYXR0cmlidXRlIHZlYzIgYV90
ZXhDb29yZDsgICBcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0NCBtYXRyaXg7ICAgICAgICAgXG4i
Ci0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgIFxuIgotICAgICAgICAidW5p
Zm9ybSBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yOyAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAg
ICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOyBcbiIK
LSAgICAgICAgIiAgdl90ZXhDb29yZCA9IHZlYzIod2lkdGhTY2FsZUZhY3RvciAqIGFfdGV4Q29v
cmQueCwgYV90ZXhDb29yZC55KTsgXG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFxuIjsKLQotICAgIGNoYXIgeXV2RnJhZ21lbnRTaGFkZXJTdHJpbmdbXSA9Ci0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgaW50OyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB5X3Rl
eHR1cmU7ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBzYW1w
bGVyMkQgdV90ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVu
aWZvcm0gc2FtcGxlcjJEIHZfdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0g
ICAgICAgICJ1bmlmb3JtIGZsb2F0IGFscGhhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhZGo7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0MyBjY19tYXRyaXg7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAg
IiAgZmxvYXQgeSA9IHRleHR1cmUyRCh5X3RleHR1cmUsIHZfdGV4Q29vcmQpLng7ICAgICAgXG4i
Ci0gICAgICAgICIgIGZsb2F0IHUgPSB0ZXh0dXJlMkQodV90ZXh0dXJlLCB2X3RleENvb3JkKS54
IC0gYWRqOyBcbiIKLSAgICAgICAgIiAgZmxvYXQgdiA9IHRleHR1cmUyRCh2X3RleHR1cmUsIHZf
dGV4Q29vcmQpLnggLSBhZGo7IFxuIgotICAgICAgICAiICB2ZWMzIHJnYiA9IGNjX21hdHJpeCAq
IHZlYzMoeSwgdSwgdik7ICAgICAgICAgICAgICBcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNChyZ2IsIGZsb2F0KDEpKSAqIGFscGhhOyAgICAgICAgXG4iCi0gICAgICAgICJ9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLQot
ICAgIGNoYXIgcmdiYUZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAg
InZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4i
Ci0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCByZ2JhX3RleHR1cmU7ICAgICAgICAgICAgICAg
ICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICB2ZWM0
IHRleENvbG9yID0gdGV4dHVyZTJEKHJnYmFfdGV4dHVyZSwgdmVjMih2X3RleENvb3JkLngsIGZs
b2F0KDEpIC0gdl90ZXhDb29yZC55KSk7IFxuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9yLncpICogYWxw
aGE7IFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcbiI7Ci0KLSAgICBtX3JnYmFTaGFkZXJQcm9ncmFtID0gY3JlYXRlU2hh
ZGVyUHJvZ3JhbShtX2NvbnRleHQsIHZlcnRleFNoYWRlclN0cmluZywgcmdiYUZyYWdtZW50U2hh
ZGVyU3RyaW5nKTsKLSAgICBpZiAoIW1fcmdiYVNoYWRlclByb2dyYW0pIHsKLSAgICAgICAgTE9H
X0VSUk9SKCJWaWRlb0xheWVyQ2hyb21pdW06IEZhaWxlZCB0byBjcmVhdGUgcmdiYSBzaGFkZXIg
cHJvZ3JhbSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV95dXZTaGFkZXJQcm9n
cmFtID0gY3JlYXRlU2hhZGVyUHJvZ3JhbShtX2NvbnRleHQsIHZlcnRleFNoYWRlclN0cmluZywg
eXV2RnJhZ21lbnRTaGFkZXJTdHJpbmcpOwotICAgIGlmICghbV95dXZTaGFkZXJQcm9ncmFtKSB7
Ci0gICAgICAgIExPR19FUlJPUigiVmlkZW9MYXllckNocm9taXVtOiBGYWlsZWQgdG8gY3JlYXRl
IHl1diBzaGFkZXIgcHJvZ3JhbSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV95
dXZTaGFkZXJNYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1f
eXV2U2hhZGVyUHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIG1feXV2V2lkdGhTY2FsZUZhY3Rvckxv
Y2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZTaGFkZXJQcm9ncmFt
LCAid2lkdGhTY2FsZUZhY3RvciIpOwotICAgIG1feVRleHR1cmVMb2NhdGlvbiA9IG1fY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1feXV2U2hhZGVyUHJvZ3JhbSwgInlfdGV4dHVyZSIpOwot
ICAgIG1fdVRleHR1cmVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1f
eXV2U2hhZGVyUHJvZ3JhbSwgInVfdGV4dHVyZSIpOwotICAgIG1fdlRleHR1cmVMb2NhdGlvbiA9
IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1feXV2U2hhZGVyUHJvZ3JhbSwgInZfdGV4
dHVyZSIpOwotICAgIG1fY2NNYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1feXV2U2hhZGVyUHJvZ3JhbSwgImNjX21hdHJpeCIpOwotICAgIG1fc2lnbkFkakxv
Y2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZTaGFkZXJQcm9ncmFt
LCAiYWRqIik7Ci0gICAgbV95dXZBbHBoYUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24obV95dXZTaGFkZXJQcm9ncmFtLCAiYWxwaGEiKTsKLQotICAgIEFTU0VSVChtX3l1
dlNoYWRlck1hdHJpeExvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV95dXZXaWR0aFNjYWxl
RmFjdG9yTG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3lUZXh0dXJlTG9jYXRpb24gIT0g
LTEpOwotICAgIEFTU0VSVChtX3VUZXh0dXJlTG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVCht
X3ZUZXh0dXJlTG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX2NjTWF0cml4TG9jYXRpb24g
IT0gLTEpOwotICAgIEFTU0VSVChtX3NpZ25BZGpMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJU
KG1feXV2QWxwaGFMb2NhdGlvbiAhPSAtMSk7Ci0KLSAgICBtX3JnYmFTaGFkZXJNYXRyaXhMb2Nh
dGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcmdiYVNoYWRlclByb2dyYW0s
ICJtYXRyaXgiKTsKLSAgICBtX3JnYmFUZXh0dXJlTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihtX3JnYmFTaGFkZXJQcm9ncmFtLCAicmdiYV90ZXh0dXJlIik7Ci0gICAg
bV9yZ2JhV2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24obV9yZ2JhU2hhZGVyUHJvZ3JhbSwgIndpZHRoU2NhbGVGYWN0b3IiKTsKLSAgICBtX3Jn
YmFBbHBoYUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9yZ2JhU2hh
ZGVyUHJvZ3JhbSwgImFscGhhIik7Ci0KLSAgICBBU1NFUlQobV9yZ2JhU2hhZGVyTWF0cml4TG9j
YXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3JnYmFUZXh0dXJlTG9jYXRpb24gIT0gLTEpOwot
ICAgIEFTU0VSVChtX3JnYmFXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24gIT0gLTEpOwotICAgIEFT
U0VSVChtX3JnYmFBbHBoYUxvY2F0aW9uICE9IC0xKTsKLQotICAgIG1faW5pdGlhbGl6ZWQgPSB0
cnVlOwotfQotCi1WaWRlb0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6flNoYXJlZFZhbHVl
cygpCi17Ci0gICAgaWYgKG1feXV2U2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1feXV2U2hhZGVyUHJvZ3JhbSkpOwotICAgIGlm
IChtX3JnYmFTaGFkZXJQcm9ncmFtKQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmRlbGV0ZVByb2dyYW0obV9yZ2JhU2hhZGVyUHJvZ3JhbSkpOwotfQotCiBQYXNzUmVmUHRyPFZp
ZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXll
ckNocm9taXVtKiBvd25lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogewpAQCAt
MzMwLDE2ICsyMTEsMTggQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmRyYXcoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKLSAgICBjb25zdCBWaWRl
b0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogc3YgPSBsYXllclJlbmRlcmVyKCktPnZpZGVv
TGF5ZXJTaGFyZWRWYWx1ZXMoKTsKLSAgICBBU1NFUlQoc3YgJiYgc3YtPmluaXRpYWxpemVkKCkp
OworICAgIGNvbnN0IFJHQkFQcm9ncmFtKiByZ2JhUHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+
dmlkZW9MYXllclJHQkFQcm9ncmFtKCk7CisgICAgQVNTRVJUKHJnYmFQcm9ncmFtICYmIHJnYmFQ
cm9ncmFtLT5pbml0aWFsaXplZCgpKTsKKyAgICBjb25zdCBZVVZQcm9ncmFtKiB5dXZQcm9ncmFt
ID0gbGF5ZXJSZW5kZXJlcigpLT52aWRlb0xheWVyWVVWUHJvZ3JhbSgpOworICAgIEFTU0VSVCh5
dXZQcm9ncmFtICYmIHl1dlByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogCiAgICAgc3dpdGNoICht
X2ZyYW1lRm9ybWF0KSB7CiAgICAgY2FzZSBWaWRlb0ZyYW1lQ2hyb21pdW06OllWMTI6CiAgICAg
Y2FzZSBWaWRlb0ZyYW1lQ2hyb21pdW06OllWMTY6Ci0gICAgICAgIGRyYXdZVVYoc3YpOworICAg
ICAgICBkcmF3WVVWKHl1dlByb2dyYW0pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZpZGVv
RnJhbWVDaHJvbWl1bTo6UkdCQToKLSAgICAgICAgZHJhd1JHQkEoc3YpOworICAgICAgICBkcmF3
UkdCQShyZ2JhUHJvZ3JhbSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgb3RoZXIgcGF0aHMuCkBAIC0zNTksNyArMjQyLDcgQEAgdm9p
ZCBWaWRlb0xheWVyQ2hyb21pdW06OnJlbGVhc2VDdXJyZW50RnJhbWUoKQogICAgIHJlc2V0RnJh
bWVQYXJhbWV0ZXJzKCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3WVVWKGNv
bnN0IFNoYXJlZFZhbHVlcyogc3YpCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhd1lVVihj
b25zdCBWaWRlb0xheWVyQ2hyb21pdW06OllVVlByb2dyYW0qIHByb2dyYW0pCiB7CiAgICAgR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwogICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFMSkpOwpAQCAtMzY5LDQ5ICsyNTIsNTEgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmRy
YXdZVVYoY29uc3QgU2hhcmVkVmFsdWVzKiBzdikKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTMpKTsKICAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IG1fdGV4dHVyZXNbVmlkZW9GcmFtZUNocm9taXVtOjp2UGxhbmVdKSk7CiAKLSAgICBsYXllclJl
bmRlcmVyKCktPnVzZVNoYWRlcihzdi0+eXV2U2hhZGVyUHJvZ3JhbSgpKTsKKyAgICBsYXllclJl
bmRlcmVyKCktPnVzZVNoYWRlcihwcm9ncmFtLT5wcm9ncmFtKCkpOwogICAgIHVuc2lnbmVkIGZy
YW1lV2lkdGggPSBtX2ZyYW1lU2l6ZXNbVmlkZW9GcmFtZUNocm9taXVtOjp5UGxhbmVdLndpZHRo
KCk7CiAgICAgdW5zaWduZWQgdGV4dHVyZVdpZHRoID0gbV90ZXh0dXJlU2l6ZXNbVmlkZW9GcmFt
ZUNocm9taXVtOjp5UGxhbmVdLndpZHRoKCk7CiAgICAgZmxvYXQgd2lkdGhTY2FsZUZhY3RvciA9
IHN0YXRpY19jYXN0PGZsb2F0PihmcmFtZVdpZHRoKSAvIHRleHR1cmVXaWR0aDsKLSAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHN2LT55dXZXaWR0aFNjYWxlRmFjdG9yTG9jYXRp
b24oKSwgd2lkdGhTY2FsZUZhY3RvcikpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlm
b3JtMWYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkud2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCks
IHdpZHRoU2NhbGVGYWN0b3IpKTsKIAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3Jt
MWkoc3YtPnlUZXh0dXJlTG9jYXRpb24oKSwgMSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT51bmlmb3JtMWkoc3YtPnVUZXh0dXJlTG9jYXRpb24oKSwgMikpOwotICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT51bmlmb3JtMWkoc3YtPnZUZXh0dXJlTG9jYXRpb24oKSwgMykpOworICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS55
VGV4dHVyZUxvY2F0aW9uKCksIDEpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9y
bTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkudVRleHR1cmVMb2NhdGlvbigpLCAyKSk7Cisg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLnZUZXh0dXJlTG9jYXRpb24oKSwgMykpOwogCiAgICAgLy8gVGhpcyB2YWx1ZSBvZiAwLjUg
bWFwcyB0byAxMjguIEl0IGlzIHVzZWQgaW4gdGhlIFlVViB0byBSR0IgY29udmVyc2lvbgogICAg
IC8vIGZvcm11bGEgdG8gdHVybiB1bnNpZ25lZCB1IGFuZCB2IHZhbHVlcyB0byBzaWduZWQgdSBh
bmQgdiB2YWx1ZXMuCiAgICAgLy8gVGhpcyBpcyBsb2FkZWQgYXMgYSB1bmlmb3JtIGJlY2F1c2Ug
Y2VydGFpbiBkcml2ZXJzIGhhdmUgcHJvYmxlbXMKICAgICAvLyByZWFkaW5nIGxpdGVyYWwgZmxv
YXQgdmFsdWVzLgotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWYoc3YtPnNpZ25B
ZGpMb2NhdGlvbigpLCAwLjUpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFm
KHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2lnbkFkakxvY2F0aW9uKCksIDAuNSkpOwogCi0g
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYoc3YtPmNjTWF0cml4TG9j
YXRpb24oKSwgMCwgY29uc3RfY2FzdDxmbG9hdCo+KHl1djJSR0IpLCAxKSk7CisgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KS5jY01hdHJpeExvY2F0aW9uKCksIDAsIGNvbnN0X2Nhc3Q8ZmxvYXQqPih5dXYyUkdCKSwgMSkp
OwogCiAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2pl
Y3Rpb25NYXRyaXgoKSwgZHJhd1RyYW5zZm9ybSgpLAogICAgICAgICAgICAgICAgICAgICAgYm91
bmRzKCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksCi0gICAgICAg
ICAgICAgICAgICAgICBzdi0+eXV2U2hhZGVyTWF0cml4TG9jYXRpb24oKSwgc3YtPnl1dkFscGhh
TG9jYXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIo
KS5tYXRyaXhMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCkpOwogCiAgICAgLy8gUmVzZXQgYWN0aXZlIHRleHR1
cmUgYmFjayB0byB0ZXh0dXJlIDAuCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiB9CiAKLXZvaWQgVmlkZW9MYXll
ckNocm9taXVtOjpkcmF3UkdCQShjb25zdCBTaGFyZWRWYWx1ZXMqIHN2KQordm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OmRyYXdSR0JBKGNvbnN0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6UkdCQVByb2dy
YW0qIHByb2dyYW0pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJl
bmRlcmVyQ29udGV4dCgpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlc1tW
aWRlb0ZyYW1lQ2hyb21pdW06OnJnYlBsYW5lXSkpOwogCi0gICAgbGF5ZXJSZW5kZXJlcigpLT51
c2VTaGFkZXIoc3YtPnJnYmFTaGFkZXJQcm9ncmFtKCkpOworICAgIGxheWVyUmVuZGVyZXIoKS0+
dXNlU2hhZGVyKHByb2dyYW0tPnByb2dyYW0oKSk7CiAgICAgdW5zaWduZWQgZnJhbWVXaWR0aCA9
IG1fZnJhbWVTaXplc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnJnYlBsYW5lXS53aWR0aCgpOwogICAg
IHVuc2lnbmVkIHRleHR1cmVXaWR0aCA9IG1fdGV4dHVyZVNpemVzW1ZpZGVvRnJhbWVDaHJvbWl1
bTo6cmdiUGxhbmVdLndpZHRoKCk7CiAgICAgZmxvYXQgd2lkdGhTY2FsZUZhY3RvciA9IHN0YXRp
Y19jYXN0PGZsb2F0PihmcmFtZVdpZHRoKSAvIHRleHR1cmVXaWR0aDsKLSAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dW5pZm9ybTFmKHN2LT5yZ2JhV2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCks
IHdpZHRoU2NhbGVGYWN0b3IpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFm
KHByb2dyYW0tPnZlcnRleFNoYWRlcigpLndpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbigpLCB3aWR0
aFNjYWxlRmFjdG9yKSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHN2
LT5yZ2JhVGV4dHVyZUxvY2F0aW9uKCksIDApKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDAp
KTsKIAogICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9q
ZWN0aW9uTWF0cml4KCksIGRyYXdUcmFuc2Zvcm0oKSwKICAgICAgICAgICAgICAgICAgICAgIGJv
dW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdodCgpLCBkcmF3T3BhY2l0eSgpLAotICAgICAg
ICAgICAgICAgICAgICAgc3YtPnJnYmFTaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBzdi0+cmdiYUFs
cGhhTG9jYXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFk
ZXIoKS5tYXRyaXhMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJh
Z21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCkpOwogfQogCiB2b2lkIFZpZGVvTGF5ZXJDaHJv
bWl1bTo6cmVzZXRGcmFtZVBhcmFtZXRlcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApp
bmRleCBhYzNiY2E5YTZkYjkwZDZlYTk5ODIzYzg2NjBhNGI3M2E4NWJhZGEzLi43YTc2NGU4ODc4
ZThjMDE4NzFkNTZjOTkxNDhjZTM2ZDgwNDI1MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uaApAQCAtNTMsNDMgKzUzLDggQEAgcHVibGljOgogICAgIC8vIHB1dEN1cnJlbnRGcmFtZSgp
IG11c3QgYmUgY2FsbGVkIHRvIHJldHVybiB0aGUgZnJhbWUgY3VycmVudGx5IGhlbGQuCiAgICAg
dm9pZCByZWxlYXNlQ3VycmVudEZyYW1lKCk7CiAKLSAgICBjbGFzcyBTaGFyZWRWYWx1ZXMgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgU2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4
dDNEKik7Ci0gICAgICAgIH5TaGFyZWRWYWx1ZXMoKTsKLSAgICAgICAgdW5zaWduZWQgeXV2U2hh
ZGVyUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1feXV2U2hhZGVyUHJvZ3JhbTsgfQotICAgICAg
ICB1bnNpZ25lZCByZ2JhU2hhZGVyUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmdiYVNoYWRl
clByb2dyYW07IH0KLSAgICAgICAgaW50IHl1dlNoYWRlck1hdHJpeExvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV95dXZTaGFkZXJNYXRyaXhMb2NhdGlvbjsgfQotICAgICAgICBpbnQgcmdiYVNo
YWRlck1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZ2JhU2hhZGVyTWF0cml4TG9j
YXRpb247IH0KLSAgICAgICAgaW50IHl1dldpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1feXV2V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uOyB9Ci0gICAgICAgIGludCBy
Z2JhV2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZ2JhV2lkdGhT
Y2FsZUZhY3RvckxvY2F0aW9uOyB9Ci0gICAgICAgIGludCB5VGV4dHVyZUxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV95VGV4dHVyZUxvY2F0aW9uOyB9Ci0gICAgICAgIGludCB1VGV4dHVyZUxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91VGV4dHVyZUxvY2F0aW9uOyB9Ci0gICAgICAgIGlu
dCB2VGV4dHVyZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92VGV4dHVyZUxvY2F0aW9uOyB9
Ci0gICAgICAgIGludCB5dXZBbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV95dXZBbHBo
YUxvY2F0aW9uOyB9Ci0gICAgICAgIGludCByZ2JhQWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmdiYUFscGhhTG9jYXRpb247IH0KLSAgICAgICAgaW50IHJnYmFUZXh0dXJlTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3JnYmFUZXh0dXJlTG9jYXRpb247IH0KLSAgICAgICAgaW50
IGNjTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NjTWF0cml4TG9jYXRpb247IH0K
LSAgICAgICAgaW50IHNpZ25BZGpMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbkFkakxv
Y2F0aW9uOyB9Ci0gICAgICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lu
aXRpYWxpemVkOyB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1f
Y29udGV4dDsKLSAgICAgICAgdW5zaWduZWQgbV95dXZTaGFkZXJQcm9ncmFtOwotICAgICAgICB1
bnNpZ25lZCBtX3JnYmFTaGFkZXJQcm9ncmFtOwotICAgICAgICBpbnQgbV95dXZTaGFkZXJNYXRy
aXhMb2NhdGlvbjsKLSAgICAgICAgaW50IG1feXV2V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uOwot
ICAgICAgICBpbnQgbV9yZ2JhU2hhZGVyTWF0cml4TG9jYXRpb247Ci0gICAgICAgIGludCBtX3Jn
YmFXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb247Ci0gICAgICAgIGludCBtX2NjTWF0cml4TG9jYXRp
b247Ci0gICAgICAgIGludCBtX3NpZ25BZGpMb2NhdGlvbjsKLSAgICAgICAgaW50IG1feVRleHR1
cmVMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fdVRleHR1cmVMb2NhdGlvbjsKLSAgICAgICAgaW50
IG1fdlRleHR1cmVMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fcmdiYVRleHR1cmVMb2NhdGlvbjsK
LSAgICAgICAgaW50IG1feXV2QWxwaGFMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fcmdiYUFscGhh
TG9jYXRpb247Ci0gICAgICAgIGJvb2wgbV9pbml0aWFsaXplZDsKLSAgICB9OworICAgIHR5cGVk
ZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4U3RyZXRjaCwgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4RmxpcEFscGhhPiBSR0JBUHJvZ3JhbTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5k
aW5nPFZlcnRleFNoYWRlclBvc1RleFN0cmV0Y2gsIEZyYWdtZW50U2hhZGVyWVVWPiBZVVZQcm9n
cmFtOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsK
QEAgLTEwMyw4ICs2OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVSR0JBQ29udGVudHMo
R3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qKTsKICAgICB2b2lk
IGFsbG9jYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHRleHR1cmVJZCwg
Y29uc3QgSW50U2l6ZSYgZGltZW5zaW9ucywgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCk7CiAgICAg
dm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgdGV4dHVyZUlk
LCBjb25zdCBJbnRTaXplJiBkaW1lbnNpb25zLCB1bnNpZ25lZCB0ZXh0dXJlRm9ybWF0LCBjb25z
dCB2b2lkKiBkYXRhKTsKLSAgICB2b2lkIGRyYXdZVVYoY29uc3QgU2hhcmVkVmFsdWVzKik7Ci0g
ICAgdm9pZCBkcmF3UkdCQShjb25zdCBTaGFyZWRWYWx1ZXMqKTsKKyAgICB2b2lkIGRyYXdZVVYo
Y29uc3QgWVVWUHJvZ3JhbSopOworICAgIHZvaWQgZHJhd1JHQkEoY29uc3QgUkdCQVByb2dyYW0q
KTsKICAgICB2b2lkIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7CiAgICAgdm9pZCBzYXZlQ3VycmVu
dEZyYW1lKFZpZGVvRnJhbWVDaHJvbWl1bSopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82503</attachid>
            <date>2011-02-15 12:24:14 -0800</date>
            <delta_ts>2011-02-18 15:05:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54484-20110215122413.patch</filename>
            <type>text/plain</type>
            <size>107565</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMjRmNzY2Y2JmMzhiYmNlOGYwNmYzM2UzMGI2YmFiMWUwNjg4NTZiLi44
MzVmZDI4NjJjYjY5OWYxMzE3ODAyM2FmMTY3MmU0MDQwZWNmZjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTI0IEBACisyMDExLTAyLTE1ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2No
cm9taXVtXSBDbGVhbiB1cCBzaGFkZXIgY29kZSBmcm9tIExheWVyQ2hyb21pdW0gY2xhc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ0ODQKKwor
ICAgICAgICBUaGlzIGlzIGEgcmVmYWN0b3JpbmcgYW5kIHRoZXJlIHNob3VsZCBiZSBubyBjaGFu
Z2UgaW4gZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgQWxsIHNoYWRlciBjb2RlIGlzIHB1bGxlZCBv
dXQgaW50byBjbGFzc2VzIGluIFNoYWRlckNocm9taXVtLgorICAgICAgICBUaGUgU2hhcmVkVmFs
dWVzIGNsYXNzZXMgYXJlIG5vdyB0dXJuZWQgaW50byBQcm9ncmFtQmluZGluZywgb25lIHBlcgor
ICAgICAgICBzaGFkZXIgcHJvZ3JhbS4gIFRoZXNlIGNvbnRhaW4gc2hhZGVyIGNsYXNzZXMgdGhh
dCBrbm93IGFib3V0IHdoYXQKKyAgICAgICAgdmFyaWFibGVzIHRoZXkgY2FuIGJpbmQuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXll
ckNocm9taXVtOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXNMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExh
eWVyQ2hyb21pdW06OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjpkcmF3RGVidWdCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNoYXJlZEdlb21ldHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Ym9yZGVyUHJvZ3JhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvbnRlbnRMYXllclByb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjYW52YXNMYXllclBy
b2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xh
eWVyUkdCQVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp2aWRlb0xheWVyWVVWUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OnBsdWdpbkxheWVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVkUXVhZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpkcmF3KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6R2VvbWV0cnlCaW5kaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6fkdlb21ldHJ5QmluZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9tZXRyeUJpbmRpbmc6OnByZXBhcmVGb3JEcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6OmxvYWRTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2hhZGVyUHJv
Z3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGluZ0Jhc2U6OlByb2dyYW1CaW5k
aW5nQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGluZ0Jhc2U6On5Qcm9ncmFt
QmluZGluZ0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3JhbUJpbmRpbmdCYXNlOjppbml0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6aW5pdGlhbGl6ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbWV0cnlCaW5kaW5nOjpjb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6cXVhZFZlcnRpY2VzVmJvKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb21ldHJ5QmluZGluZzo6cXVhZEVsZW1lbnRzVmJvKToKKyAgICAgICAgKFdlYkNv
cmU6OlByb2dyYW1CaW5kaW5nQmFzZTo6cHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9n
cmFtQmluZGluZ0Jhc2U6OmluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1C
aW5kaW5nOjpQcm9ncmFtQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGlu
Zzo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGluZzo6dmVydGV4U2hhZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nOjpmcmFnbWVudFNoYWRlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6ZHJhd1N1cmZh
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VD
aHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNo
cm9taXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXg6
OlZlcnRleFNoYWRlclBvc1RleCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NU
ZXg6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4OjpnZXRTaGFk
ZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4U3RyZXRjaDo6
VmVydGV4U2hhZGVyUG9zVGV4U3RyZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFk
ZXJQb3NUZXhTdHJldGNoOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBv
c1RleFN0cmV0Y2g6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhT
aGFkZXJQb3M6OlZlcnRleFNoYWRlclBvcyk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFk
ZXJQb3M6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zOjpnZXRTaGFk
ZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3Jt
OjpWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4
U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNo
YWRlclBvc1RleFRyYW5zZm9ybTo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYWdtZW50VGV4QWxwaGFCaW5kaW5nOjpGcmFnbWVudFRleEFscGhhQmluZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFRleEFscGhhQmluZGluZzo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE6OmdldFNoYWRlclN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYTo6Z2V0U2hhZGVy
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyQkdSQVRleEFscGhhOjpn
ZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4
QWxwaGFNYXNrOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2spOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrOjppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6Z2V0U2hhZGVyU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyWVVWOjpGcmFnbWVudFNoYWRlcllVVik6
CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlcllVVjo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFnbWVudFNoYWRlcllVVjo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50U2hhZGVyQ29sb3I6OkZyYWdtZW50U2hhZGVyQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDb2xvcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudFNoYWRlckNvbG9yOjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4OjptYXRyaXhMb2NhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhTdHJldGNoOjptYXRyaXhMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhTdHJldGNoOjp3aWR0aFNjYWxlRmFjdG9y
TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zOjptYXRyaXhMb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06Om1h
dHJpeExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleFRyYW5z
Zm9ybTo6dGV4VHJhbnNmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRU
ZXhBbHBoYUJpbmRpbmc6OmFscGhhTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRUZXhBbHBoYUJpbmRpbmc6OnNhbXBsZXJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6OmFscGhhTG9jYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrOjpzYW1wbGVyTG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrOjptYXNr
U2FtcGxlckxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyWVVWOjp5
VGV4dHVyZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyWVVWOjp1
VGV4dHVyZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyWVVWOjp2
VGV4dHVyZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyWVVWOjph
bHBoYUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyWVVWOjp5dXZB
bHBoYUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyWVVWOjpjY01h
dHJpeExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyWVVWOjpzaWdu
QWRqTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDb2xvcjo6Y29s
b3JMb2NhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9M
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmRyYXdZVVYpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpkcmF3UkdCQSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmg6CisKIDIw
MTEtMDItMTQgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlYjgwMTZjNzkw
ODM3MmQ0ZmRlYWM2OGRlNDIzMWU2Zjk5NTY5ZGE5Li42MGJiOGI1Y2UyZTZjYzkyY2M4MWJkMjEy
M2RmMTVhM2IzNmMxZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNjEyLDggKzI2MTIsMTIgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUljb24uaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJv
bWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUHJvZ3JhbUJpbmRpbmcuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaW1wbGVGb250RGF0YUNo
cm9taXVtV2luLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2ltcGxlRm9udERhdGFMaW51eC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDRhZWYyNWIxNWFlZmU5NDQwNTIyMTc0NDRiOWFkY2EwY2YyYTFmZGYuLjQy
MjM4NzY1OWIzN2YyYjI2NjM3NzY0YjhmZDI5Yzc1YzU4NTkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyQ2hyb21pdW0uY3BwCkBAIC00MSw2MCArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVuc2lnbmVkIENhbnZhc0xheWVyQ2hyb21pdW06Om1fc2hhZGVyUHJvZ3JhbUlkID0gMDsK
IAotQ2FudmFzTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjpTaGFyZWRWYWx1ZXMoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1f
Y2FudmFzU2hhZGVyUHJvZ3JhbSgwKQotICAgICwgbV9zaGFkZXJTYW1wbGVyTG9jYXRpb24oLTEp
Ci0gICAgLCBtX3NoYWRlck1hdHJpeExvY2F0aW9uKC0xKQotICAgICwgbV9zaGFkZXJBbHBoYUxv
Y2F0aW9uKC0xKQotICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKLXsKLSAgICBjaGFyIHZlcnRl
eFNoYWRlclN0cmluZ1tdID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247ICAg
XG4iCi0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOyAgIFxuIgotICAgICAgICAi
dW5pZm9ybSBtYXQ0IG1hdHJpeDsgICAgICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2
X3RleENvb3JkOyAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAg
IFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAg
IiAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOyBcbiIKLSAgICAgICAgIiAgdl90
ZXhDb29yZCA9IGFfdGV4Q29vcmQ7ICAgXG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFxuIjsKLQotICAgIC8vIENhbnZhcyBsYXllcnMgbmVlZCB0byBiZSBmbGlwcGVk
IHZlcnRpY2FsbHkgYW5kIHRoZWlyIGNvbG9ycyBzaG91bGRuJ3QgYmUKLSAgICAvLyBzd2l6emxl
ZC4KLSAgICBjaGFyIGZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAi
dmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgot
ICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAg
ICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICB2ZWM0IHRleENv
bG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdmVjMih2X3RleENvb3JkLngsIDEuMCAtIHZfdGV4
Q29vcmQueSkpOyBcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci54
LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFscGhhOyBcbiIKLSAgICAg
ICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
biI7Ci0KLSAgICBtX2NhbnZhc1NoYWRlclByb2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFtKG1f
Y29udGV4dCwgdmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZyk7Ci0gICAg
aWYgKCFtX2NhbnZhc1NoYWRlclByb2dyYW0pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDYW52YXNM
YXllckNocm9taXVtOiBGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fY2FudmFzU2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIp
OwotICAgIG1fc2hhZGVyTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihtX2NhbnZhc1NoYWRlclByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3NoYWRlckFscGhh
TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX2NhbnZhc1NoYWRlclBy
b2dyYW0sICJhbHBoYSIpOwotICAgIEFTU0VSVChtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiAhPSAt
MSk7Ci0gICAgQVNTRVJUKG1fc2hhZGVyTWF0cml4TG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VS
VChtX3NoYWRlckFscGhhTG9jYXRpb24gIT0gLTEpOwotCi0gICAgbV9pbml0aWFsaXplZCA9IHRy
dWU7Ci19Ci0KLUNhbnZhc0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6flNoYXJlZFZhbHVl
cygpCi17Ci0gICAgaWYgKG1fY2FudmFzU2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fY2FudmFzU2hhZGVyUHJvZ3JhbSkpOwot
fQotCiBDYW52YXNMYXllckNocm9taXVtOjpDYW52YXNMYXllckNocm9taXVtKEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bSogb3duZXIpCiAgICAgOiBMYXllckNocm9taXVtKG93bmVyKQogICAgICwgbV90
ZXh0dXJlQ2hhbmdlZCh0cnVlKQpAQCAtMTA5LDE2ICs1NSwxNyBAQCBDYW52YXNMYXllckNocm9t
aXVtOjp+Q2FudmFzTGF5ZXJDaHJvbWl1bSgpCiB2b2lkIENhbnZhc0xheWVyQ2hyb21pdW06OmRy
YXcoKQogewogICAgIEFTU0VSVChsYXllclJlbmRlcmVyKCkpOwotICAgIGNvbnN0IENhbnZhc0xh
eWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogc3YgPSBsYXllclJlbmRlcmVyKCktPmNhbnZhc0xh
eWVyU2hhcmVkVmFsdWVzKCk7Ci0gICAgQVNTRVJUKHN2ICYmIHN2LT5pbml0aWFsaXplZCgpKTsK
KyAgICBjb25zdCBDYW52YXNMYXllckNocm9taXVtOjpQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJS
ZW5kZXJlcigpLT5jYW52YXNMYXllclByb2dyYW0oKTsKKyAgICBBU1NFUlQocHJvZ3JhbSAmJiBw
cm9ncmFtLT5pbml0aWFsaXplZCgpKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9
IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3Rl
eHR1cmVJZCkpOwotICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5jYW52YXNTaGFk
ZXJQcm9ncmFtKCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc3YtPnNo
YWRlclNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CisgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFk
ZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9y
bTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKICAg
ICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1h
dHJpeCgpLCBkcmF3VHJhbnNmb3JtKCksCiAgICAgICAgICAgICAgICAgICAgICBib3VuZHMoKS53
aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSwgZHJhd09wYWNpdHkoKSwKLSAgICAgICAgICAgICAg
ICAgICAgIHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBzdi0+c2hhZGVyQWxwaGFMb2NhdGlv
bigpKTsKKyAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJp
eExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLmFscGhhTG9jYXRpb24oKSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5o
CmluZGV4IDY1MjBiNTViNjhkM2YzNDJjZmQyNGQ2NDM0ZDE3MTYxZjZjZDEwYmUuLjk4MTFiMDY1
Y2JjNjE5MDYxNTg5OGZhNjg0Y2JhMzlkY2Y4YTFlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNo
cm9taXVtLmgKQEAgLTQ1LDI1ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBk
cmF3KCk7CiAKLSAgICBjbGFzcyBTaGFyZWRWYWx1ZXMgewotICAgIHB1YmxpYzoKLSAgICAgICAg
ZXhwbGljaXQgU2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKik7Ci0gICAgICAgIH5TaGFy
ZWRWYWx1ZXMoKTsKLQotICAgICAgICB1bnNpZ25lZCBjYW52YXNTaGFkZXJQcm9ncmFtKCkgY29u
c3QgeyByZXR1cm4gbV9jYW52YXNTaGFkZXJQcm9ncmFtOyB9Ci0gICAgICAgIGludCBzaGFkZXJT
YW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsg
fQotICAgICAgICBpbnQgc2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3No
YWRlck1hdHJpeExvY2F0aW9uOyB9Ci0gICAgICAgIGludCBzaGFkZXJBbHBoYUxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFkZXJBbHBoYUxvY2F0aW9uOyB9Ci0gICAgICAgIGJvb2wgaW5p
dGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9Ci0KLSAgICBwcml2YXRl
OgotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwotICAgICAgICB1bnNpZ25l
ZCBtX2NhbnZhc1NoYWRlclByb2dyYW07Ci0gICAgICAgIGludCBtX3NoYWRlclNhbXBsZXJMb2Nh
dGlvbjsKLSAgICAgICAgaW50IG1fc2hhZGVyTWF0cml4TG9jYXRpb247Ci0gICAgICAgIGludCBt
X3NoYWRlckFscGhhTG9jYXRpb247Ci0gICAgICAgIGJvb2wgbV9pbml0aWFsaXplZDsKLSAgICB9
OworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVu
dFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IFByb2dyYW07CiAKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBDYW52YXNMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGEzOGY2YmQyMTI2OTBhMjhm
OTgzOGRiODk2MzVhODQxNGNiNmQ3N2UuLjJhN2M1OWI2OTliZmM2YzU0ZWM5OWFkNGMyNzM2NjRi
YjliNzQxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUwLDgx
ICs1MCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ29udGVudExheWVyQ2hyb21pdW06
OlNoYXJlZFZhbHVlczo6U2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQot
ICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2NvbnRlbnRTaGFkZXJQcm9ncmFtKDAp
Ci0gICAgLCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbigtMSkKLSAgICAsIG1fc2hhZGVyTWF0cml4
TG9jYXRpb24oLTEpCi0gICAgLCBtX3NoYWRlckFscGhhTG9jYXRpb24oLTEpCi0gICAgLCBtX2lu
aXRpYWxpemVkKGZhbHNlKQotewotICAgIC8vIFNoYWRlcnMgZm9yIGRyYXdpbmcgdGhlIGxheWVy
IGNvbnRlbnRzLgotICAgIGNoYXIgdmVydGV4U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAiYXR0
cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsgICBcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFf
dGV4Q29vcmQ7ICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgbWF0cml4OyAgICAgICAgIFxu
IgotICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICBcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFxuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IG1hdHJpeCAqIGFfcG9z
aXRpb247IFxuIgotICAgICAgICAiICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsgICBcbiIKLSAg
ICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotCi0jaWYgUExBVEZPUk0o
U0tJQSkKLSAgICAvLyBDb2xvciBpcyBpbiBSR0JBIG9yZGVyLgotICAgIGNoYXIgcmdiYUZyYWdt
ZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4
Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBz
YW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAi
dW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgot
ICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFxuIgotICAgICAgICAiICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNf
dGV4dHVyZSwgdl90ZXhDb29yZCk7IFxuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB0ZXhD
b2xvciAqIGFscGhhOyBcbiIKLSAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0jZW5kaWYKLQotICAgIC8vIENvbG9yIGlzIGlu
IEJHUkEgb3JkZXIuCi0gICAgY2hhciBiZ3JhRnJhZ21lbnRTaGFkZXJTdHJpbmdbXSA9Ci0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7ICAgICAg
ICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGFscGhhOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAg
ICIgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsgXG4i
Ci0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQodGV4Q29sb3IueiwgdGV4Q29sb3IueSwg
dGV4Q29sb3IueCwgdGV4Q29sb3IudykgKiBhbHBoYTsgXG4iCi0gICAgICAgICJ9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotCi0jaWYgUExB
VEZPUk0oU0tJQSkKLSAgICAvLyBBc3N1bWluZyB0aGUgcGFja2luZyBpcyBlaXRoZXIgU2tpYSBk
ZWZhdWx0IFJHQkEgb3IgQ2hyb21pdW0gZGVmYXVsdCBCR1JBLgotICAgIGNoYXIqIGZyYWdtZW50
U2hhZGVyU3RyaW5nID0gU0tfQjMyX1NISUZUID8gcmdiYUZyYWdtZW50U2hhZGVyU3RyaW5nIDog
YmdyYUZyYWdtZW50U2hhZGVyU3RyaW5nOwotI2Vsc2UKLSAgICBjaGFyKiBmcmFnbWVudFNoYWRl
clN0cmluZyA9IGJncmFGcmFnbWVudFNoYWRlclN0cmluZzsKLSNlbmRpZgotICAgIG1fY29udGVu
dFNoYWRlclByb2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29udGV4dCwgdmVydGV4U2hh
ZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZyk7Ci0gICAgaWYgKCFtX2NvbnRlbnRTaGFk
ZXJQcm9ncmFtKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ29udGVudExheWVyQ2hyb21pdW06IEZh
aWxlZCB0byBjcmVhdGUgc2hhZGVyIHByb2dyYW0iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIG1fc2hhZGVyU2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24obV9jb250ZW50U2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIpOwotICAgIG1fc2hhZGVy
TWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX2NvbnRlbnRT
aGFkZXJQcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV9zaGFkZXJBbHBoYUxvY2F0aW9uID0gbV9j
b250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9jb250ZW50U2hhZGVyUHJvZ3JhbSwgImFscGhh
Iik7Ci0gICAgQVNTRVJUKG1fc2hhZGVyU2FtcGxlckxvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NF
UlQobV9zaGFkZXJNYXRyaXhMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fc2hhZGVyQWxw
aGFMb2NhdGlvbiAhPSAtMSk7Ci0KLSAgICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKLX0KLQotQ29u
dGVudExheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6flNoYXJlZFZhbHVlcygpCi17Ci0gICAg
aWYgKG1fY29udGVudFNoYWRlclByb2dyYW0pCi0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+ZGVsZXRlUHJvZ3JhbShtX2NvbnRlbnRTaGFkZXJQcm9ncmFtKSk7Ci19Ci0KLQogUGFz
c1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0
ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ29udGVudExheWVyQ2hyb21pdW0ob3duZXIpKTsKQEAgLTMzOSwxMyArMjY0LDEzIEBAIHZv
aWQgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXcoKQogCiAgICAgQVNTRVJUKGxheWVyUmVuZGVy
ZXIoKSk7CiAKLSAgICBjb25zdCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzKiBz
diA9IGxheWVyUmVuZGVyZXIoKS0+Y29udGVudExheWVyU2hhcmVkVmFsdWVzKCk7Ci0gICAgQVNT
RVJUKHN2ICYmIHN2LT5pbml0aWFsaXplZCgpKTsKKyAgICBjb25zdCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+Y29udGVudExheWVyUHJv
Z3JhbSgpOworICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwog
ICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsK
ICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRTApKTsKICAgICBiaW5kQ29udGVudHNUZXh0dXJlKCk7Ci0gICAgbGF5ZXJSZW5k
ZXJlcigpLT51c2VTaGFkZXIoc3YtPmNvbnRlbnRTaGFkZXJQcm9ncmFtKCkpOwotICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc3YtPnNoYWRlclNhbXBsZXJMb2NhdGlvbigpLCAw
KSk7CisgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsK
KyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hh
ZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIAogICAgIGlmIChyZXF1aXJlc0NsaXBwZWRV
cGRhdGVSZWN0KCkpIHsKICAgICAgICAgZmxvYXQgbTQzID0gZHJhd1RyYW5zZm9ybSgpLm00Mygp
OwpAQCAtMzU0LDEyICsyNzksMTMgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygp
CiAgICAgICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9q
ZWN0aW9uTWF0cml4KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLCBtX3Zp
c2libGVSZWN0SW5MYXllckNvb3Jkcy53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
IG1fdmlzaWJsZVJlY3RJbkxheWVyQ29vcmRzLmhlaWdodCgpLCBkcmF3T3BhY2l0eSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBzdi0+c2hh
ZGVyQWxwaGFMb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52
ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAg
IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJv
amVjdGlvbk1hdHJpeCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdUcmFuc2Zvcm0o
KSwgbV9ib3VuZHMud2lkdGgoKSwgbV9ib3VuZHMuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgZHJhd09wYWNpdHkoKSwgc3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgc3YtPnNoYWRlckFscGhhTG9jYXRpb24oKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCku
bWF0cml4TG9jYXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFn
bWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSk7CiAgICAgfQogICAgIHVucmVzZXJ2ZUNvbnRl
bnRzVGV4dHVyZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggMzM2
MzUxOGRhNTMxYWM2MGQzMGQ3ZjgwZTdmNWM3NjAzYzMyYTM4MC4uYmQwOTNlZDMwZjI3N2FmNzQ3
NGUxNzJhNjQ4OTI1NmM4MGMxNmEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5o
CkBAIC01NiwyOCArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgeyByZXR1cm4gbV9vd25lciAmJiBtX293bmVy
LT5kcmF3c0NvbnRlbnQoKTsgfQogCi0gICAgLy8gU3RvcmVzIHZhbHVlcyB0aGF0IGFyZSBzaGFy
ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyB0aGF0IGFyZQotICAgIC8vIGFzc29j
aWF0ZWQgd2l0aCB0aGUgc2FtZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gKGFuZCBoZW5jZSB0aGUg
c2FtZSBHTAotICAgIC8vIGNvbnRleHQpLgotICAgIGNsYXNzIFNoYXJlZFZhbHVlcyB7Ci0gICAg
cHVibGljOgotICAgICAgICBleHBsaWNpdCBTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0M0Qq
KTsKLSAgICAgICAgflNoYXJlZFZhbHVlcygpOwotCi0gICAgICAgIHVuc2lnbmVkIGNvbnRlbnRT
aGFkZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2hhZGVyUHJvZ3JhbTsgfQot
ICAgICAgICBpbnQgc2hhZGVyU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFk
ZXJTYW1wbGVyTG9jYXRpb247IH0KLSAgICAgICAgaW50IHNoYWRlck1hdHJpeExvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFkZXJNYXRyaXhMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hh
ZGVyQWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVyQWxwaGFMb2NhdGlvbjsg
fQotICAgICAgICBpbnQgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVk
OyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0
OwotICAgICAgICB1bnNpZ25lZCBtX2NvbnRlbnRTaGFkZXJQcm9ncmFtOwotICAgICAgICBpbnQg
bV9zaGFkZXJTYW1wbGVyTG9jYXRpb247Ci0gICAgICAgIGludCBtX3NoYWRlck1hdHJpeExvY2F0
aW9uOwotICAgICAgICBpbnQgbV9zaGFkZXJBbHBoYUxvY2F0aW9uOwotICAgICAgICBpbnQgbV9p
bml0aWFsaXplZDsKLSAgICB9OworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hh
ZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclRleEFscGhhPiBQcm9ncmFtOwogCiBwcm90ZWN0ZWQ6
CiAgICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVt
KiBvd25lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDhkMDFkOWJkOWFhNDllNjFjOTZh
OWVjY2I3NjZkY2IxMDFlMzZlZTMuLjlkZDViYjRjYTgwZDE0NzQ3ZTJmMmE5N2M5YjY1ODQ1ZTg0
ZWI0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC00OCw5MyArNDgsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLWNvbnN0IHVuc2lnbmVkIExh
eWVyQ2hyb21pdW06OnNfcG9zaXRpb25BdHRyaWJMb2NhdGlvbiA9IDA7Ci1jb25zdCB1bnNpZ25l
ZCBMYXllckNocm9taXVtOjpzX3RleENvb3JkQXR0cmliTG9jYXRpb24gPSAxOwotCi1zdGF0aWMg
dW5zaWduZWQgbG9hZFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQg
dHlwZSwgY29uc3QgY2hhciogc2hhZGVyU291cmNlKQotewotICAgIHVuc2lnbmVkIHNoYWRlciA9
IGNvbnRleHQtPmNyZWF0ZVNoYWRlcih0eXBlKTsKLSAgICBpZiAoIXNoYWRlcikKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgU3RyaW5nIHNvdXJjZVN0cmluZyhzaGFkZXJTb3VyY2UpOwotICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzb3VyY2VTdHJpbmcpKTsK
LSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+Y29tcGlsZVNoYWRlcihzaGFkZXIpKTsKLSAgICBp
bnQgY29tcGlsZWQgPSAwOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5nZXRTaGFkZXJpdihz
aGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QSUxFX1NUQVRVUywgJmNvbXBpbGVkKSk7Ci0g
ICAgaWYgKCFjb21waWxlZCkgewotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRl
U2hhZGVyKHNoYWRlcikpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIHNo
YWRlcjsKLX0KLQotTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjpTaGFyZWRWYWx1ZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAs
IG1fcXVhZFZlcnRpY2VzVmJvKDApCi0gICAgLCBtX3F1YWRFbGVtZW50c1ZibygwKQotICAgICwg
bV9tYXhUZXh0dXJlU2l6ZSgwKQotICAgICwgbV9ib3JkZXJTaGFkZXJQcm9ncmFtKDApCi0gICAg
LCBtX2JvcmRlclNoYWRlck1hdHJpeExvY2F0aW9uKC0xKQotICAgICwgbV9ib3JkZXJTaGFkZXJD
b2xvckxvY2F0aW9uKC0xKQotICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKLXsKLSAgICAvLyBW
ZXJ0ZXggcG9zaXRpb25zIGFuZCB0ZXh0dXJlIGNvb3JkaW5hdGVzIGZvciB0aGUgNCBjb3JuZXJz
IG9mIGEgMXgxIHF1YWQuCi0gICAgZmxvYXQgdmVydGljZXNbXSA9IHsgLTAuNWYsICAwLjVmLCAw
LjBmLCAwLjBmLCAgMS4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAtMC41ZiwgLTAuNWYs
IDAuMGYsIDAuMGYsICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgIDAuNWYsIC0wLjVm
LCAwLjBmLCAxLjBmLCAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAwLjVmLCAgMC41
ZiwgMC4wZiwgMS4wZiwgIDEuMGYgfTsKLSAgICB1aW50MTZfdCBpbmRpY2VzW10gPSB7IDAsIDEs
IDIsIDAsIDIsIDMsIC8vIFRoZSB0d28gdHJpYW5nbGVzIHRoYXQgbWFrZSB1cCB0aGUgbGF5ZXIg
cXVhZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDIsIDN9OyAvLyBBIGxpbmUg
cGF0aCBmb3IgZHJhd2luZyB0aGUgbGF5ZXIgYm9yZGVyLgotCi0gICAgR0xDKG1fY29udGV4dCwg
bV9xdWFkVmVydGljZXNWYm8gPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpKTsKLSAgICBHTEMo
bV9jb250ZXh0LCBtX3F1YWRFbGVtZW50c1ZibyA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCkp
OwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6QVJSQVlfQlVGRkVSLCBtX3F1YWRWZXJ0aWNlc1ZibykpOwotICAgIEdMQyhtX2NvbnRl
eHQsIG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVS
LCBzaXplb2YodmVydGljZXMpLCB2ZXJ0aWNlcywgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19E
UkFXKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiwgbV9xdWFkRWxlbWVudHNWYm8pKTsKLSAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6
OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoaW5kaWNlcyksIGluZGljZXMsIEdyYXBoaWNz
Q29udGV4dDNEOjpTVEFUSUNfRFJBVykpOwotCi0gICAgLy8gR2V0IHRoZSBtYXggdGV4dHVyZSBz
aXplIHN1cHBvcnRlZCBieSB0aGUgc3lzdGVtLgotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUsICZtX21h
eFRleHR1cmVTaXplKSk7Ci0KLSAgICAvLyBTaGFkZXJzIGZvciBkcmF3aW5nIHRoZSBkZWJ1ZyBi
b3JkZXJzIGFyb3VuZCB0aGUgbGF5ZXJzLgotICAgIGNoYXIgYm9yZGVyVmVydGV4U2hhZGVyU3Ry
aW5nW10gPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsgICBcbiIKLSAgICAg
ICAgInVuaWZvcm0gbWF0NCBtYXRyaXg7ICAgICAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcbiIKLSAgICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gbWF0cml4ICogYV9wb3NpdGlvbjsg
XG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLSAgICBjaGFy
IGJvcmRlckZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9y
bSB2ZWM0IGNvbG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAg
ICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu
IgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFxuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLnh5eiAqIGNv
bG9yLncsIGNvbG9yLncpO1xuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLQotICAgIG1fYm9yZGVyU2hhZGVyUHJvZ3Jh
bSA9IGNyZWF0ZVNoYWRlclByb2dyYW0obV9jb250ZXh0LCBib3JkZXJWZXJ0ZXhTaGFkZXJTdHJp
bmcsIGJvcmRlckZyYWdtZW50U2hhZGVyU3RyaW5nKTsKLSAgICBpZiAoIW1fYm9yZGVyU2hhZGVy
UHJvZ3JhbSkgewotICAgICAgICBMT0dfRVJST1IoIkNvbnRlbnRMYXllckNocm9taXVtOiBGYWls
ZWQgdG8gY3JlYXRlIHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBtX2JvcmRlclNoYWRlck1hdHJpeExvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24obV9ib3JkZXJTaGFkZXJQcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV9ib3JkZXJT
aGFkZXJDb2xvckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9ib3Jk
ZXJTaGFkZXJQcm9ncmFtLCAiY29sb3IiKTsKLSAgICBBU1NFUlQobV9ib3JkZXJTaGFkZXJNYXRy
aXhMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fYm9yZGVyU2hhZGVyQ29sb3JMb2NhdGlv
biAhPSAtMSk7Ci0KLSAgICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKLX0KLQotTGF5ZXJDaHJvbWl1
bTo6U2hhcmVkVmFsdWVzOjp+U2hhcmVkVmFsdWVzKCkKLXsKLSAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihtX3F1YWRWZXJ0aWNlc1ZibykpOwotICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKG1fcXVhZEVsZW1lbnRzVmJvKSk7Ci0gICAg
aWYgKG1fYm9yZGVyU2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT5kZWxldGVQcm9ncmFtKG1fYm9yZGVyU2hhZGVyUHJvZ3JhbSkpOwotfQotCi0KIFBhc3NS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bSogb3duZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVt
KG93bmVyKSk7CkBAIC0yMDEsNDggKzExNCw2IEBAIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlUmVuZGVyU3VyZmFjZSgpCiAgICAgcmV0dXJuIG1fcmVuZGVyU3Vy
ZmFjZS5nZXQoKTsKIH0KIAotdW5zaWduZWQgTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlU2hhZGVyUHJv
Z3JhbShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgY2hhciogdmVydGV4U2hhZGVy
U291cmNlLCBjb25zdCBjaGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZSkKLXsKLSAgICB1bnNpZ25l
ZCB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDNEOjpW
RVJURVhfU0hBREVSLCB2ZXJ0ZXhTaGFkZXJTb3VyY2UpOwotICAgIGlmICghdmVydGV4U2hhZGVy
KSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSB2ZXJ0ZXggc2hhZGVyIik7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGZyYWdtZW50U2hhZGVy
ID0gbG9hZFNoYWRlcihjb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6RlJBR01FTlRfU0hBREVS
LCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgaWYgKCFmcmFnbWVudFNoYWRlcikgewotICAg
ICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcikpOwot
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZnJhZ21lbnQgc2hhZGVyIik7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHByb2dyYW1PYmplY3QgPSBj
b250ZXh0LT5jcmVhdGVQcm9ncmFtKCk7Ci0gICAgaWYgKCFwcm9ncmFtT2JqZWN0KSB7Ci0gICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBzaGFkZXIgcHJvZ3JhbSIpOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YXR0YWNoU2hh
ZGVyKHByb2dyYW1PYmplY3QsIHZlcnRleFNoYWRlcikpOwotICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5hdHRhY2hTaGFkZXIocHJvZ3JhbU9iamVjdCwgZnJhZ21lbnRTaGFkZXIpKTsKLQotICAg
IC8vIEJpbmQgdGhlIGNvbW1vbiBhdHRyaWIgbG9jYXRpb25zLgotICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbU9iamVjdCwgc19wb3NpdGlvbkF0dHJp
YkxvY2F0aW9uLCAiYV9wb3NpdGlvbiIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+Ymlu
ZEF0dHJpYkxvY2F0aW9uKHByb2dyYW1PYmplY3QsIHNfdGV4Q29vcmRBdHRyaWJMb2NhdGlvbiwg
ImFfdGV4Q29vcmQiKSk7Ci0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+bGlua1Byb2dyYW0o
cHJvZ3JhbU9iamVjdCkpOwotICAgIGludCBsaW5rZWQgPSAwOwotICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbU9iamVjdCwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJ
TktfU1RBVFVTLCAmbGlua2VkKSk7Ci0gICAgaWYgKCFsaW5rZWQpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gbGluayBzaGFkZXIgcHJvZ3JhbSIpOwotICAgICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShwcm9ncmFtT2JqZWN0KSk7Ci0gICAgICAgIHJldHVy
biAwOwotICAgIH0KLQotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFkZXIodmVy
dGV4U2hhZGVyKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVNoYWRlcihmcmFn
bWVudFNoYWRlcikpOwotICAgIHJldHVybiBwcm9ncmFtT2JqZWN0OwotfQotCiB2b2lkIExheWVy
Q2hyb21pdW06OnNldE5lZWRzQ29tbWl0KCkKIHsKICAgICAvLyBDYWxsIG5vdGlmeVN5bmNSZXF1
aXJlZCgpLCB3aGljaCBmb3Igbm9uLXJvb3QgbGF5ZXJzIHBsdW1icyB0aHJvdWdoIHRvCkBAIC00
NTIsMTYgKzMyMywxNiBAQCB2b2lkIExheWVyQ2hyb21pdW06OmRyYXdEZWJ1Z0JvcmRlcigpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChsYXllclJlbmRlcmVyKCkpOwotICAgIGNvbnN0
IFNoYXJlZFZhbHVlcyogc3YgPSBsYXllclJlbmRlcmVyKCktPmxheWVyU2hhcmVkVmFsdWVzKCk7
Ci0gICAgQVNTRVJUKHN2ICYmIHN2LT5pbml0aWFsaXplZCgpKTsKLSAgICBsYXllclJlbmRlcmVy
KCktPnVzZVNoYWRlcihzdi0+Ym9yZGVyU2hhZGVyUHJvZ3JhbSgpKTsKKyAgICBjb25zdCBCb3Jk
ZXJQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlcigpLT5ib3JkZXJQcm9ncmFtKCk7Cisg
ICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CisgICAgbGF5ZXJS
ZW5kZXJlcigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCByZW5kZXJNYXRyaXggPSBkcmF3VHJhbnNmb3JtKCk7CiAgICAgcmVuZGVyTWF0
cml4LnNjYWxlM2QoYm91bmRzKCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIDEpOwogICAg
IHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRy
aXgoKSAqIHJlbmRlck1hdHJpeCk7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBs
YXllclJlbmRlcmVyQ29udGV4dCgpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3Jt
TWF0cml4NGZ2KHN2LT5ib3JkZXJTaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBmYWxzZSwgJmdsTWF0
cml4WzBdLCAxKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYo
cHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwgZmFsc2UsICZnbE1hdHJp
eFswXSwgMSkpOwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm00Zihzdi0+Ym9y
ZGVyU2hhZGVyQ29sb3JMb2NhdGlvbigpLCBib3JkZXJDb2xvcigpLnJlZCgpIC8gMjU1LjAsIGJv
cmRlckNvbG9yKCkuZ3JlZW4oKSAvIDI1NS4wLCBib3JkZXJDb2xvcigpLmJsdWUoKSAvIDI1NS4w
LCAxKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm00Zihwcm9ncmFtLT5mcmFn
bWVudFNoYWRlcigpLmNvbG9yTG9jYXRpb24oKSwgYm9yZGVyQ29sb3IoKS5yZWQoKSAvIDI1NS4w
LCBib3JkZXJDb2xvcigpLmdyZWVuKCkgLyAyNTUuMCwgYm9yZGVyQ29sb3IoKS5ibHVlKCkgLyAy
NTUuMCwgMSkpOwogCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmxpbmVXaWR0aChib3JkZXJX
aWR0aCgpKSk7CiAKQEAgLTUwMSwxOSArMzcyLDUgQEAgYm9vbCBMYXllckNocm9taXVtOjpkZXNj
ZW5kYW50c0RyYXdDb250ZW50UmVjdXJzaXZlKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLS8v
IHN0YXRpYwotdm9pZCBMYXllckNocm9taXVtOjpwcmVwYXJlRm9yRHJhdyhjb25zdCBTaGFyZWRW
YWx1ZXMqIHN2KQotewotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gc3YtPmNvbnRl
eHQoKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6QVJSQVlfQlVGRkVSLCBzdi0+cXVhZFZlcnRpY2VzVmJvKCkpKTsKLSAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJB
WV9CVUZGRVIsIHN2LT5xdWFkRWxlbWVudHNWYm8oKSkpOwotICAgIHVuc2lnbmVkIG9mZnNldCA9
IDA7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoc19wb3Np
dGlvbkF0dHJpYkxvY2F0aW9uLCAzLCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCA1
ICogc2l6ZW9mKGZsb2F0KSwgb2Zmc2V0KSk7Ci0gICAgb2Zmc2V0ICs9IDMgKiBzaXplb2YoZmxv
YXQpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKHNfdGV4
Q29vcmRBdHRyaWJMb2NhdGlvbiwgMiwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwg
NSAqIHNpemVvZihmbG9hdCksIG9mZnNldCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShzX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24pKTsKLSAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoc190ZXhDb29yZEF0
dHJpYkxvY2F0aW9uKSk7Ci19Ci0KIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggZmY5ZTVlNWQ4MzFjM2YxM2U5MzA3NmU2YWZj
NTU4ZjdjY2E5OGNkNy4uOGUzMTc2ZDRiOGQ1ZTcwY2FjMTY1NGRkOGYxZjYxZWYyYWRkMWI4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMzgsNyArMzgsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUHJvZ3JhbUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJSZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJTaGFkZXJDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC02MCw3ICs2Miw2IEBAIGNsYXNzIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTsKIC8vIHRoaXMgY2xhc3MuCiBjbGFzcyBMYXllckNocm9taXVt
IDogcHVibGljIFJlZkNvdW50ZWQ8TGF5ZXJDaHJvbWl1bT4gewogICAgIGZyaWVuZCBjbGFzcyBM
YXllclJlbmRlcmVyQ2hyb21pdW07Ci0gICAgZnJpZW5kIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1
bTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBjcmVhdGUo
R3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDApOwogCkBAIC0xNzIsNDUgKzE3MywxNSBA
QCBwdWJsaWM6CiAKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIGNyZWF0ZVJlbmRlclN1cmZh
Y2UoKTsKIAotICAgIC8vIFN0b3JlcyB2YWx1ZXMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4gaW5z
dGFuY2VzIG9mIHRoaXMgY2xhc3MgdGhhdCBhcmUKLSAgICAvLyBhc3NvY2lhdGVkIHdpdGggdGhl
IHNhbWUgTGF5ZXJSZW5kZXJlckNocm9taXVtIChhbmQgaGVuY2UgdGhlIHNhbWUgR0wKLSAgICAv
LyBjb250ZXh0KS4KLSAgICBjbGFzcyBTaGFyZWRWYWx1ZXMgewotICAgIHB1YmxpYzoKLSAgICAg
ICAgZXhwbGljaXQgU2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKik7Ci0gICAgICAgIH5T
aGFyZWRWYWx1ZXMoKTsKLQotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQotICAgICAgICB1bnNpZ25lZCBxdWFkVmVydGljZXNW
Ym8oKSBjb25zdCB7IHJldHVybiBtX3F1YWRWZXJ0aWNlc1ZibzsgfQotICAgICAgICB1bnNpZ25l
ZCBxdWFkRWxlbWVudHNWYm8oKSBjb25zdCB7IHJldHVybiBtX3F1YWRFbGVtZW50c1ZibzsgfQot
ICAgICAgICBpbnQgbWF4VGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFRleHR1cmVT
aXplOyB9Ci0gICAgICAgIHVuc2lnbmVkIGJvcmRlclNoYWRlclByb2dyYW0oKSBjb25zdCB7IHJl
dHVybiBtX2JvcmRlclNoYWRlclByb2dyYW07IH0KLSAgICAgICAgaW50IGJvcmRlclNoYWRlck1h
dHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ib3JkZXJTaGFkZXJNYXRyaXhMb2NhdGlv
bjsgfQotICAgICAgICBpbnQgYm9yZGVyU2hhZGVyQ29sb3JMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYm9yZGVyU2hhZGVyQ29sb3JMb2NhdGlvbjsgfQotICAgICAgICBib29sIGluaXRpYWxp
emVkKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplZDsgfQotCi0gICAgcHJpdmF0ZToKLSAg
ICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKLSAgICAgICAgdW5zaWduZWQgbV9x
dWFkVmVydGljZXNWYm87Ci0gICAgICAgIHVuc2lnbmVkIG1fcXVhZEVsZW1lbnRzVmJvOwotICAg
ICAgICBpbnQgbV9tYXhUZXh0dXJlU2l6ZTsKLSAgICAgICAgdW5zaWduZWQgbV9ib3JkZXJTaGFk
ZXJQcm9ncmFtOwotICAgICAgICBpbnQgbV9ib3JkZXJTaGFkZXJNYXRyaXhMb2NhdGlvbjsKLSAg
ICAgICAgaW50IG1fYm9yZGVyU2hhZGVyQ29sb3JMb2NhdGlvbjsKLSAgICAgICAgYm9vbCBtX2lu
aXRpYWxpemVkOwotICAgIH07Ci0KLSAgICBzdGF0aWMgdm9pZCBwcmVwYXJlRm9yRHJhdyhjb25z
dCBTaGFyZWRWYWx1ZXMqKTsKLQogICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5k
ZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlci5nZXQoKTsgfQogCi0gICAgc3Rh
dGljIHVuc2lnbmVkIGNyZWF0ZVNoYWRlclByb2dyYW0oR3JhcGhpY3NDb250ZXh0M0QqLCBjb25z
dCBjaGFyKiB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyU291
cmNlKTsKICAgICBzdGF0aWMgdm9pZCB0b0dMTWF0cml4KGZsb2F0KiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmKTsKIAogICAgIHN0YXRpYyB2b2lkIGRyYXdUZXh0dXJlZFF1YWQoR3JhcGhp
Y3NDb250ZXh0M0QqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJp
eCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyTWF0cml4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3Bh
Y2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXRyaXhMb2NhdGlv
biwgaW50IGFscGhhTG9jYXRpb24pOwogCisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0
ZXhTaGFkZXJQb3MsIEZyYWdtZW50U2hhZGVyQ29sb3I+IEJvcmRlclByb2dyYW07CiBwcm90ZWN0
ZWQ6CiAgICAgR3JhcGhpY3NMYXllckNocm9taXVtKiBtX293bmVyOwogICAgIExheWVyQ2hyb21p
dW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CkBAIC0yMzcsMTIgKzIwOCw2IEBAIHBy
b3RlY3RlZDoKICAgICAvLyBjb29yZGluYXRlIHN5c3RlbSB0aGUgbGF5ZXIncyB0cmFuc2Zvcm1z
IGFyZSByZWxhdGl2ZSB0by4KICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIG1fdGFyZ2V0UmVu
ZGVyU3VyZmFjZTsKIAotICAgIC8vIEFsbCBsYXllciBzaGFkZXJzIHNoYXJlIHRoZSBzYW1lIGF0
dHJpYnV0ZSBsb2NhdGlvbnMgZm9yIHRoZSB2ZXJ0ZXggcG9zaXRpb25zCi0gICAgLy8gYW5kIHRl
eHR1cmUgY29vcmRpbmF0ZXMuIFRoaXMgYWxsb3dzIHN3aXRjaGluZyBzaGFkZXJzIHdpdGhvdXQg
cmViaW5kaW5nIGF0dHJpYnV0ZQotICAgIC8vIGFycmF5cy4KLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19wb3NpdGlvbkF0dHJpYkxvY2F0aW9uOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX3RleENvb3JkQXR0cmliTG9jYXRpb247Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzZXROZWVk
c0NvbW1pdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA1
ZTBlYWNhMGQ4ODFhY2I4NjU1ZjRhYjBjN2VhZWE5MTI4MTI3YTAxLi4wYTVhYTViYTYyODE4MDVl
YmYxN2I1ZDk2NTk4ZTBmYTA1MmFhZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd0xheWVycyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdAogICAg
IEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgdmlzaWJsZVJl
Y3RXaWR0aCwgdmlzaWJsZVJlY3RIZWlnaHQpKTsKIAogICAgIC8vIEJpbmQgdGhlIGNvbW1vbiB2
ZXJ0ZXggYXR0cmlidXRlcyB1c2VkIGZvciBkcmF3aW5nIGFsbCB0aGUgbGF5ZXJzLgotICAgIExh
eWVyQ2hyb21pdW06OnByZXBhcmVGb3JEcmF3KGxheWVyU2hhcmVkVmFsdWVzKCkpOworICAgIG1f
c2hhcmVkR2VvbWV0cnktPnByZXBhcmVGb3JEcmF3KCk7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ug
Y2FsbHMgY2FuIGJlIG1hZGUgb25jZSwgd2hlbiB0aGUgY29tcG9zaXRvciBjb250ZXh0IGlzIGlu
aXRpYWxpemVkLgogICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGlzYWJsZShH
cmFwaGljc0NvbnRleHQzRDo6REVQVEhfVEVTVCkpOwpAQCAtNzkzLDE3ICs3OTMsMjIgQEAgYm9v
bCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkKICAgICAv
LyBDcmVhdGUgYW4gRkJPIGZvciBkb2luZyBvZmZzY3JlZW4gcmVuZGVyaW5nLgogICAgIEdMQyht
X2NvbnRleHQuZ2V0KCksIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCA9IG1fY29udGV4dC0+Y3Jl
YXRlRnJhbWVidWZmZXIoKSk7CiAKLSAgICBtX2xheWVyU2hhcmVkVmFsdWVzID0gYWRvcHRQdHIo
bmV3IExheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyhtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICBt
X2NvbnRlbnRMYXllclNoYXJlZFZhbHVlcyA9IGFkb3B0UHRyKG5ldyBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6U2hhcmVkVmFsdWVzKG1fY29udGV4dC5nZXQoKSkpOwotICAgIG1fY2FudmFzTGF5ZXJT
aGFyZWRWYWx1ZXMgPSBhZG9wdFB0cihuZXcgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFs
dWVzKG1fY29udGV4dC5nZXQoKSkpOwotICAgIG1fdmlkZW9MYXllclNoYXJlZFZhbHVlcyA9IGFk
b3B0UHRyKG5ldyBWaWRlb0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyhtX2NvbnRleHQuZ2V0
KCkpKTsKLSAgICBtX3BsdWdpbkxheWVyU2hhcmVkVmFsdWVzID0gYWRvcHRQdHIobmV3IFBsdWdp
bkxheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyhtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICBtX3Jl
bmRlclN1cmZhY2VTaGFyZWRWYWx1ZXMgPSBhZG9wdFB0cihuZXcgUmVuZGVyU3VyZmFjZUNocm9t
aXVtOjpTaGFyZWRWYWx1ZXMobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgbV90aWxlclNoYXJlZFZh
bHVlcyA9IGFkb3B0UHRyKG5ldyBMYXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyhtX2Nv
bnRleHQuZ2V0KCkpKTsKLQotICAgIGlmICghbV9sYXllclNoYXJlZFZhbHVlcy0+aW5pdGlhbGl6
ZWQoKSB8fCAhbV9jb250ZW50TGF5ZXJTaGFyZWRWYWx1ZXMtPmluaXRpYWxpemVkKCkgfHwgIW1f
Y2FudmFzTGF5ZXJTaGFyZWRWYWx1ZXMtPmluaXRpYWxpemVkKCkKLSAgICAgICAgfHwgIW1fdmlk
ZW9MYXllclNoYXJlZFZhbHVlcy0+aW5pdGlhbGl6ZWQoKSB8fCAhbV9wbHVnaW5MYXllclNoYXJl
ZFZhbHVlcy0+aW5pdGlhbGl6ZWQoKSB8fCAhbV9yZW5kZXJTdXJmYWNlU2hhcmVkVmFsdWVzLT5p
bml0aWFsaXplZCgpCi0gICAgICAgIHx8ICFtX3RpbGVyU2hhcmVkVmFsdWVzLT5pbml0aWFsaXpl
ZCgpKSB7CisgICAgbV9zaGFyZWRHZW9tZXRyeSA9IGFkb3B0UHRyKG5ldyBHZW9tZXRyeUJpbmRp
bmcobV9jb250ZXh0LmdldCgpKSk7CisgICAgbV9ib3JkZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3
IExheWVyQ2hyb21pdW06OkJvcmRlclByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgbV9j
b250ZW50TGF5ZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3IENvbnRlbnRMYXllckNocm9taXVtOjpQ
cm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgIG1fY2FudmFzTGF5ZXJQcm9ncmFtID0gYWRv
cHRQdHIobmV3IENhbnZhc0xheWVyQ2hyb21pdW06OlByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7
CisgICAgbV92aWRlb0xheWVyUkdCQVByb2dyYW0gPSBhZG9wdFB0cihuZXcgVmlkZW9MYXllckNo
cm9taXVtOjpSR0JBUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBtX3ZpZGVvTGF5ZXJZ
VVZQcm9ncmFtID0gYWRvcHRQdHIobmV3IFZpZGVvTGF5ZXJDaHJvbWl1bTo6WVVWUHJvZ3JhbSht
X2NvbnRleHQuZ2V0KCkpKTsKKyAgICBtX3BsdWdpbkxheWVyUHJvZ3JhbSA9IGFkb3B0UHRyKG5l
dyBQbHVnaW5MYXllckNocm9taXVtOjpQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgIG1f
cmVuZGVyU3VyZmFjZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyU3VyZmFjZUNocm9taXVt
OjpQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9n
cmFtID0gYWRvcHRQdHIobmV3IFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6TWFza1Byb2dyYW0obV9j
b250ZXh0LmdldCgpKSk7CisgICAgbV90aWxlclByb2dyYW0gPSBhZG9wdFB0cihuZXcgTGF5ZXJU
aWxlckNocm9taXVtOjpQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworCisgICAgaWYgKCFtX3No
YXJlZEdlb21ldHJ5LT5pbml0aWFsaXplZCgpIHx8ICFtX2JvcmRlclByb2dyYW0tPmluaXRpYWxp
emVkKCkKKyAgICAgICAgfHwgIW1fY29udGVudExheWVyUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSB8
fCAhbV9jYW52YXNMYXllclByb2dyYW0tPmluaXRpYWxpemVkKCkKKyAgICAgICAgfHwgIW1fdmlk
ZW9MYXllclJHQkFQcm9ncmFtLT5pbml0aWFsaXplZCgpIHx8ICFtX3ZpZGVvTGF5ZXJZVVZQcm9n
cmFtLT5pbml0aWFsaXplZCgpCisgICAgICAgIHx8ICFtX3BsdWdpbkxheWVyUHJvZ3JhbS0+aW5p
dGlhbGl6ZWQoKSB8fCAhbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKQorICAg
ICAgICB8fCAhbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0tPmluaXRpYWxpemVkKCkgfHwgIW1f
dGlsZXJQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7CiAgICAgICAgIGNsZWFudXBTaGFyZWRPYmpl
Y3RzKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC04MTYsMTMgKzgyMSwxNiBA
QCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCi0gICAgbV9sYXllclNoYXJlZFZhbHVlcy5jbGVh
cigpOwotICAgIG1fY29udGVudExheWVyU2hhcmVkVmFsdWVzLmNsZWFyKCk7Ci0gICAgbV9jYW52
YXNMYXllclNoYXJlZFZhbHVlcy5jbGVhcigpOwotICAgIG1fdmlkZW9MYXllclNoYXJlZFZhbHVl
cy5jbGVhcigpOwotICAgIG1fcGx1Z2luTGF5ZXJTaGFyZWRWYWx1ZXMuY2xlYXIoKTsKLSAgICBt
X3JlbmRlclN1cmZhY2VTaGFyZWRWYWx1ZXMuY2xlYXIoKTsKLSAgICBtX3RpbGVyU2hhcmVkVmFs
dWVzLmNsZWFyKCk7CisgICAgbV9zaGFyZWRHZW9tZXRyeS5jbGVhcigpOworICAgIG1fYm9yZGVy
UHJvZ3JhbS5jbGVhcigpOworICAgIG1fY29udGVudExheWVyUHJvZ3JhbS5jbGVhcigpOworICAg
IG1fY2FudmFzTGF5ZXJQcm9ncmFtLmNsZWFyKCk7CisgICAgbV92aWRlb0xheWVyUkdCQVByb2dy
YW0uY2xlYXIoKTsKKyAgICBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtLmNsZWFyKCk7CisgICAgbV9w
bHVnaW5MYXllclByb2dyYW0uY2xlYXIoKTsKKyAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmNs
ZWFyKCk7CisgICAgbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0uY2xlYXIoKTsKKyAgICBtX3Rp
bGVyUHJvZ3JhbS5jbGVhcigpOwogICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpCiAg
ICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIo
bV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgKaW5kZXggZTI1NzU5ZDRkNzc2YzA0YzJjYjVkYWIzYTFkYWZjZTA5MzUwYTQzMy4uODdk
Y2FiZWViODk4OTc5YjU4MDU4M2FhZTQwNWQ1ZTE2ZDkwY2FhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgKQEAgLTEwNiwxMyArMTA2LDE2IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgY2hlY2tUZXh0dXJlU2l6ZShjb25zdCBJbnRTaXplJik7CiAKLSAgICBjb25zdCBMYXllckNo
cm9taXVtOjpTaGFyZWRWYWx1ZXMqIGxheWVyU2hhcmVkVmFsdWVzKCkgY29uc3QgeyByZXR1cm4g
bV9sYXllclNoYXJlZFZhbHVlcy5nZXQoKTsgfQotICAgIGNvbnN0IENvbnRlbnRMYXllckNocm9t
aXVtOjpTaGFyZWRWYWx1ZXMqIGNvbnRlbnRMYXllclNoYXJlZFZhbHVlcygpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGVudExheWVyU2hhcmVkVmFsdWVzLmdldCgpOyB9Ci0gICAgY29uc3QgQ2FudmFz
TGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzKiBjYW52YXNMYXllclNoYXJlZFZhbHVlcygpIGNv
bnN0IHsgcmV0dXJuIG1fY2FudmFzTGF5ZXJTaGFyZWRWYWx1ZXMuZ2V0KCk7IH0KLSAgICBjb25z
dCBWaWRlb0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogdmlkZW9MYXllclNoYXJlZFZhbHVl
cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9MYXllclNoYXJlZFZhbHVlcy5nZXQoKTsgfQotICAg
IGNvbnN0IFBsdWdpbkxheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogcGx1Z2luTGF5ZXJTaGFy
ZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkxheWVyU2hhcmVkVmFsdWVzLmdldCgp
OyB9Ci0gICAgY29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpTaGFyZWRWYWx1ZXMqIHJlbmRl
clN1cmZhY2VTaGFyZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VTaGFy
ZWRWYWx1ZXMuZ2V0KCk7IH0KLSAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZh
bHVlcyogdGlsZXJTaGFyZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3RpbGVyU2hhcmVkVmFs
dWVzLmdldCgpOyB9CisgICAgY29uc3QgR2VvbWV0cnlCaW5kaW5nKiBzaGFyZWRHZW9tZXRyeSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkR2VvbWV0cnkuZ2V0KCk7IH0KKyAgICBjb25zdCBMYXll
ckNocm9taXVtOjpCb3JkZXJQcm9ncmFtKiBib3JkZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4g
bV9ib3JkZXJQcm9ncmFtLmdldCgpOyB9CisgICAgY29uc3QgQ29udGVudExheWVyQ2hyb21pdW06
OlByb2dyYW0qIGNvbnRlbnRMYXllclByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRM
YXllclByb2dyYW0uZ2V0KCk7IH0KKyAgICBjb25zdCBDYW52YXNMYXllckNocm9taXVtOjpQcm9n
cmFtKiBjYW52YXNMYXllclByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX2NhbnZhc0xheWVyUHJv
Z3JhbS5nZXQoKTsgfQorICAgIGNvbnN0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6UkdCQVByb2dyYW0q
IHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9MYXllclJHQkFQ
cm9ncmFtLmdldCgpOyB9CisgICAgY29uc3QgVmlkZW9MYXllckNocm9taXVtOjpZVVZQcm9ncmFt
KiB2aWRlb0xheWVyWVVWUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9MYXllcllVVlBy
b2dyYW0uZ2V0KCk7IH0KKyAgICBjb25zdCBQbHVnaW5MYXllckNocm9taXVtOjpQcm9ncmFtKiBw
bHVnaW5MYXllclByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkxheWVyUHJvZ3JhbS5n
ZXQoKTsgfQorICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6UHJvZ3JhbSogcmVuZGVy
U3VyZmFjZVByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmdl
dCgpOyB9CisgICAgY29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpNYXNrUHJvZ3JhbSogcmVu
ZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlTWFz
a1Byb2dyYW0uZ2V0KCk7IH0KKyAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0q
IHRpbGVyUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZXJQcm9ncmFtLmdldCgpOyB9CiAK
ICAgICB2b2lkIHJlc2l6ZU9uc2NyZWVuQ29udGVudChjb25zdCBJbnRTaXplJik7CiAKQEAgLTE4
OSwxMyArMTkyLDE2IEBAIHByaXZhdGU6CiAgICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5z
dGFuY2Ugb2YgdGhlIGNvbXBvc2l0b3IuIFNpbmNlIHRoZXJlIGNhbiBiZQogICAgIC8vIG11bHRp
cGxlIGluc3RhbmNlcyBvZiB0aGUgY29tcG9zaXRvciBydW5uaW5nIGluIHRoZSBzYW1lIHJlbmRl
cmVyIHByb2Nlc3MKICAgICAvLyB3ZSBjYW5ub3Qgc3RvcmUgdGhlc2UgdmFsdWVzIGluIHN0YXRp
YyB2YXJpYWJsZXMuCi0gICAgT3duUHRyPExheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcz4gbV9s
YXllclNoYXJlZFZhbHVlczsKLSAgICBPd25QdHI8Q29udGVudExheWVyQ2hyb21pdW06OlNoYXJl
ZFZhbHVlcz4gbV9jb250ZW50TGF5ZXJTaGFyZWRWYWx1ZXM7Ci0gICAgT3duUHRyPENhbnZhc0xh
eWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcz4gbV9jYW52YXNMYXllclNoYXJlZFZhbHVlczsKLSAg
ICBPd25QdHI8VmlkZW9MYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXM+IG1fdmlkZW9MYXllclNo
YXJlZFZhbHVlczsKLSAgICBPd25QdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVz
PiBtX3BsdWdpbkxheWVyU2hhcmVkVmFsdWVzOwotICAgIE93blB0cjxSZW5kZXJTdXJmYWNlQ2hy
b21pdW06OlNoYXJlZFZhbHVlcz4gbV9yZW5kZXJTdXJmYWNlU2hhcmVkVmFsdWVzOwotICAgIE93
blB0cjxMYXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcz4gbV90aWxlclNoYXJlZFZhbHVl
czsKKyAgICBPd25QdHI8R2VvbWV0cnlCaW5kaW5nPiBtX3NoYXJlZEdlb21ldHJ5OworICAgIE93
blB0cjxMYXllckNocm9taXVtOjpCb3JkZXJQcm9ncmFtPiBtX2JvcmRlclByb2dyYW07CisgICAg
T3duUHRyPENvbnRlbnRMYXllckNocm9taXVtOjpQcm9ncmFtPiBtX2NvbnRlbnRMYXllclByb2dy
YW07CisgICAgT3duUHRyPENhbnZhc0xheWVyQ2hyb21pdW06OlByb2dyYW0+IG1fY2FudmFzTGF5
ZXJQcm9ncmFtOworICAgIE93blB0cjxWaWRlb0xheWVyQ2hyb21pdW06OlJHQkFQcm9ncmFtPiBt
X3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbTsKKyAgICBPd25QdHI8VmlkZW9MYXllckNocm9taXVtOjpZ
VVZQcm9ncmFtPiBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtOworICAgIE93blB0cjxQbHVnaW5MYXll
ckNocm9taXVtOjpQcm9ncmFtPiBtX3BsdWdpbkxheWVyUHJvZ3JhbTsKKyAgICBPd25QdHI8UmVu
ZGVyU3VyZmFjZUNocm9taXVtOjpQcm9ncmFtPiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtOworICAg
IE93blB0cjxSZW5kZXJTdXJmYWNlQ2hyb21pdW06Ok1hc2tQcm9ncmFtPiBtX3JlbmRlclN1cmZh
Y2VNYXNrUHJvZ3JhbTsKKyAgICBPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtPiBt
X3RpbGVyUHJvZ3JhbTsKIAogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV90ZXh0dXJlTWFu
YWdlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKaW5kZXggYzhhYzAyMTY3ODMz
MzU1YjNjNzYwZDU0YTg3NmQ2ZDZkNDdmY2E2MC4uMWI2MDgyOTE2OWIzMzI5Yjc0NTQzMDg0ZmE2
ZTc0NjU3NDViOWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCkBAIC0zOTEs
OSArMzkxLDkgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXcoY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKLSAgICBjb25zdCBMYXllclRpbGVyQ2hy
b21pdW06OlNoYXJlZFZhbHVlcyogc2hhcmVkVmFsdWVzID0gbGF5ZXJSZW5kZXJlcigpLT50aWxl
clNoYXJlZFZhbHVlcygpOwotICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHNoYXJlZFZh
bHVlcy0+dGlsZXJTaGFkZXJQcm9ncmFtKCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51
bmlmb3JtMWkoc2hhcmVkVmFsdWVzLT5zaGFkZXJTYW1wbGVyTG9jYXRpb24oKSwgMCkpOworICAg
IGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVy
ZXIoKS0+dGlsZXJQcm9ncmFtKCk7CisgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIocHJv
Z3JhbS0+cHJvZ3JhbSgpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHBy
b2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIAogICAgIGlu
dCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgY29udGVudFJlY3RUb1RpbGVJbmRpY2Vz
KGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwpAQCAtNDIxLDcgKzQyMSw3
IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0KQogICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVYID0gdGlsZVJlY3Qud2lkdGgoKSAvIHRp
bGVXaWR0aDsKICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWSA9IHRpbGVSZWN0LmhlaWdodCgp
IC8gdGlsZUhlaWdodDsKIAotICAgICAgICAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBs
YXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgdGlsZU1hdHJpeCwgdGlsZVJlY3Qu
d2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIDEsIHRleFRyYW5zbGF0ZVgsIHRleFRyYW5zbGF0
ZVksIHRleFNjYWxlWCwgdGV4U2NhbGVZLCBzaGFyZWRWYWx1ZXMpOworICAgICAgICAgICAgZHJh
d1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgo
KSwgdGlsZU1hdHJpeCwgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIDEsIHRl
eFRyYW5zbGF0ZVgsIHRleFRyYW5zbGF0ZVksIHRleFNjYWxlWCwgdGV4U2NhbGVZLCBwcm9ncmFt
KTsKIAogICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT51bnJlc2VydmUoKTsKICAgICAgICAg
fQpAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVy
ZWRRdWFkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBUcmFuCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxv
YXQgb3BhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0
ZXhUcmFuc2xhdGVYLCBmbG9hdCB0ZXhUcmFuc2xhdGVZLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCwgZmxvYXQgdGV4U2NhbGVZLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6
U2hhcmVkVmFsdWVzKiBzdikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qIHByb2dyYW0pCiB7CiAgICAgc3RhdGlj
IGZsb2F0IGdsTWF0cml4WzE2XTsKIApAQCAtNDc3LDkzICs0NzcsMTYgQEAgdm9pZCBMYXllclRp
bGVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IGNvbnN0IFRyYW4KICAgICAvLyBBcHBseSB0aGUgcHJvamVjdGlvbiBtYXRyaXggYmVmb3JlIHNl
bmRpbmcgdGhlIHRyYW5zZm9ybSBvdmVyIHRvIHRoZSBzaGFkZXIuCiAgICAgTGF5ZXJDaHJvbWl1
bTo6dG9HTE1hdHJpeCgmZ2xNYXRyaXhbMF0sIHByb2plY3Rpb25NYXRyaXggKiByZW5kZXJNYXRy
aXgpOwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYoc3YtPnNo
YWRlck1hdHJpeExvY2F0aW9uKCksIGZhbHNlLCAmZ2xNYXRyaXhbMF0sIDEpKTsKKyAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIo
KS5tYXRyaXhMb2NhdGlvbigpLCBmYWxzZSwgJmdsTWF0cml4WzBdLCAxKSk7CiAKLSAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCksIG9w
YWNpdHkpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHByb2dyYW0tPmZy
YWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCBvcGFjaXR5KSk7CiAKLSAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHN2LT5zaGFkZXJUZXhUcmFuc2Zvcm1Mb2NhdGlvbigp
LAorICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtNGYocHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkudGV4VHJhbnNmb3JtTG9jYXRpb24oKSwKICAgICAgICAgdGV4VHJhbnNsYXRlWCwgdGV4
VHJhbnNsYXRlWSwgdGV4U2NhbGVYLCB0ZXhTY2FsZVkpKTsKIAogICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFUywgNiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCAwKSk7CiB9CiAKLUxheWVyVGlsZXJDaHJv
bWl1bTo6U2hhcmVkVmFsdWVzOjpTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdGlsZXJTaGFkZXJQcm9ncmFt
KDApCi0gICAgLCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbigtMSkKLSAgICAsIG1fc2hhZGVyTWF0
cml4TG9jYXRpb24oLTEpCi0gICAgLCBtX3NoYWRlckFscGhhTG9jYXRpb24oLTEpCi0gICAgLCBt
X2luaXRpYWxpemVkKGZhbHNlKQotewotICAgIC8vIFNoYWRlcnMgZm9yIGRyYXdpbmcgdGhlIGxh
eWVyIGNvbnRlbnRzLgotICAgIGNoYXIgdmVydGV4U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAi
YXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsgICBcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMy
IGFfdGV4Q29vcmQ7ICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgbWF0cml4OyAgICAgICAg
IFxuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHRleFRyYW5zZm9ybTsgICBcbiIKLSAgICAgICAg
InZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAg
ICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOyBcbiIK
LSAgICAgICAgIiAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQgKiB0ZXhUcmFuc2Zvcm0uencgKyB0
ZXhUcmFuc2Zvcm0ueHk7XG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIjsKLQotI2lmIFBMQVRGT1JNKFNLSUEpCi0gICAgLy8gQ29sb3IgaXMgaW4gUkdCQSBvcmRl
ci4KLSAgICBjaGFyIHJnYmFGcmFnbWVudFNoYWRlclN0cmluZ1tdID0KLSAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAg
ICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
biIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsgICAgICAgICAgICAgICAg
ICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgYWxwaGE7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgIiAgdmVjNCB0
ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZfdGV4Q29vcmQpOyBcbiIKLSAgICAgICAg
IiAgZ2xfRnJhZ0NvbG9yID0gdGV4Q29sb3IgKiBhbHBoYTsgXG4iCi0gICAgICAgICJ9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotI2VuZGlm
Ci0KLSAgICAvLyBDb2xvciBpcyBpbiBCR1JBIG9yZGVyLgotICAgIGNoYXIgYmdyYUZyYWdtZW50
U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29v
cmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBzYW1w
bGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5p
Zm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAg
ICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFxuIgotICAgICAgICAiICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4
dHVyZSwgdl90ZXhDb29yZCk7IFxuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRl
eENvbG9yLnosIHRleENvbG9yLnksIHRleENvbG9yLngsIHRleENvbG9yLncpICogYWxwaGE7IFxu
IgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFxuIjsKLQotI2lmIFBMQVRGT1JNKFNLSUEpCi0gICAgLy8gQXNzdW1pbmcgdGhlIHBh
Y2tpbmcgaXMgZWl0aGVyIFNraWEgZGVmYXVsdCBSR0JBIG9yIENocm9taXVtIGRlZmF1bHQgQkdS
QS4KLSAgICBjaGFyKiBmcmFnbWVudFNoYWRlclN0cmluZyA9IFNLX0IzMl9TSElGVCA/IHJnYmFG
cmFnbWVudFNoYWRlclN0cmluZyA6IGJncmFGcmFnbWVudFNoYWRlclN0cmluZzsKLSNlbHNlCi0g
ICAgY2hhciogZnJhZ21lbnRTaGFkZXJTdHJpbmcgPSBiZ3JhRnJhZ21lbnRTaGFkZXJTdHJpbmc7
Ci0jZW5kaWYKLSAgICBtX3RpbGVyU2hhZGVyUHJvZ3JhbSA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZVNoYWRlclByb2dyYW0obV9jb250ZXh0LCB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hh
ZGVyU3RyaW5nKTsKLSAgICBpZiAoIW1fdGlsZXJTaGFkZXJQcm9ncmFtKSB7Ci0gICAgICAgIExP
R19FUlJPUigiTGF5ZXJUaWxlckNocm9taXVtOiBGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBwcm9n
cmFtIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3NoYWRlclNhbXBsZXJMb2Nh
dGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fdGlsZXJTaGFkZXJQcm9ncmFt
LCAic190ZXh0dXJlIik7Ci0gICAgbV9zaGFkZXJNYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKG1fdGlsZXJTaGFkZXJQcm9ncmFtLCAibWF0cml4Iik7Ci0gICAg
bV9zaGFkZXJBbHBoYUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV90
aWxlclNoYWRlclByb2dyYW0sICJhbHBoYSIpOwotICAgIG1fc2hhZGVyVGV4VHJhbnNmb3JtTG9j
YXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3RpbGVyU2hhZGVyUHJvZ3Jh
bSwgInRleFRyYW5zZm9ybSIpOwotICAgIEFTU0VSVChtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiAh
PSAtMSk7Ci0gICAgQVNTRVJUKG1fc2hhZGVyTWF0cml4TG9jYXRpb24gIT0gLTEpOwotICAgIEFT
U0VSVChtX3NoYWRlckFscGhhTG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3NoYWRlclRl
eFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xKTsKLQotICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwot
fQotCi1MYXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6flNoYXJlZFZhbHVlcygpCi17
Ci0gICAgaWYgKG1fdGlsZXJTaGFkZXJQcm9ncmFtKQotICAgICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV90aWxlclNoYWRlclByb2dyYW0pKTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUaWxlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAppbmRleCA0YjYzOTlkMDdkNWFlNmYyYWI4
ZWZmMmZlOTg0MTQ4MTBkYTJkZmQzLi4zN2U1MGVmYzY2NGViOTIzNGE4MGYzYzVlZDYzM2RlNGIz
YWNmMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaApAQCAtNjMsMjcgKzYzLDcgQEAg
cHVibGljOgogICAgIC8vIENoYW5nZSB0aGUgdGlsZSBzaXplLiAgVGhpcyBtYXkgaW52YWxpZGF0
ZSBhbGwgdGhlIGV4aXN0aW5nIHRpbGVzLgogICAgIHZvaWQgc2V0VGlsZVNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSk7CiAKLSAgICBjbGFzcyBTaGFyZWRWYWx1ZXMgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgZXhwbGljaXQgU2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKik7Ci0gICAgICAg
IH5TaGFyZWRWYWx1ZXMoKTsKLQotICAgICAgICB1bnNpZ25lZCB0aWxlclNoYWRlclByb2dyYW0o
KSBjb25zdCB7IHJldHVybiBtX3RpbGVyU2hhZGVyUHJvZ3JhbTsgfQotICAgICAgICBpbnQgc2hh
ZGVyU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJTYW1wbGVyTG9jYXRp
b247IH0KLSAgICAgICAgaW50IHNoYWRlck1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zaGFkZXJNYXRyaXhMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyQWxwaGFMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVyQWxwaGFMb2NhdGlvbjsgfQotICAgICAgICBpbnQg
c2hhZGVyVGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlclRleFRy
YW5zZm9ybUxvY2F0aW9uOyB9Ci0gICAgICAgIGludCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5pdGlhbGl6ZWQ7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIEdyYXBoaWNzQ29u
dGV4dDNEKiBtX2NvbnRleHQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fdGlsZXJTaGFkZXJQcm9ncmFt
OwotICAgICAgICBpbnQgbV9zaGFkZXJTYW1wbGVyTG9jYXRpb247Ci0gICAgICAgIGludCBtX3No
YWRlck1hdHJpeExvY2F0aW9uOwotICAgICAgICBpbnQgbV9zaGFkZXJBbHBoYUxvY2F0aW9uOwot
ICAgICAgICBpbnQgbV9zaGFkZXJUZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKLSAgICAgICAgaW50IG1f
aW5pdGlhbGl6ZWQ7Ci0gICAgfTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNo
YWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJUZXhBbHBoYT4gUHJvZ3JhbTsKIAog
cHJpdmF0ZToKICAgICBMYXllclRpbGVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtKiwg
Y29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9uKTsKQEAgLTEwOCw3ICs4
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHRleFRyYW5zbGF0ZVgsIGZsb2F0IHRleFRyYW5zbGF0ZVksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCwgZmxvYXQgdGV4U2NhbGVZLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyopOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dy
YW0qKTsKIAogICAgIHZvaWQgcmVzaXplTGF5ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSk7CiAgICAg
Ly8gR3JvdyBsYXllciBzaXplIHRvIGNvbnRhaW4gdGhpcyByZWN0YW5nbGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Bs
dWdpbkxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDg3OGMxNDJjODc5YTcyZGQ3ZjE5NDhiMmNlZDZl
NDVmMmY5YWY5MTAuLjgwOWViMzc2NDQ5ODI2NDRhNGFiODhmMTZhZmFkMDUzMTk2YzIzYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCkBAIC0zNSw1OCArMzUsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBsdWdpbkxheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6
U2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQotICAgIDogbV9jb250ZXh0
KGNvbnRleHQpCi0gICAgLCBtX3NoYWRlclByb2dyYW0oMCkKLSAgICAsIG1fc2hhZGVyU2FtcGxl
ckxvY2F0aW9uKC0xKQotICAgICwgbV9zaGFkZXJNYXRyaXhMb2NhdGlvbigtMSkKLSAgICAsIG1f
c2hhZGVyQWxwaGFMb2NhdGlvbigtMSkKLSAgICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCi17Ci0g
ICAgY2hhciB2ZXJ0ZXhTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBh
X3Bvc2l0aW9uOyAgIFxuIgotICAgICAgICAiYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsgICBc
biIKLSAgICAgICAgInVuaWZvcm0gbWF0NCBtYXRyaXg7ICAgICAgICAgXG4iCi0gICAgICAgICJ2
YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkgICAg
ICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gbWF0cml4ICogYV9wb3NpdGlvbjsgXG4iCi0g
ICAgICAgICIgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOyAgIFxuIgotICAgICAgICAifSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSAgICBjaGFyIGZyYWdtZW50U2hhZGVyU3Ry
aW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFxuIgotICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190
ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9h
dCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidm9p
ZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAg
ICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIgotICAgICAgICAiICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdmVj
Mih2X3RleENvb3JkLngsIHZfdGV4Q29vcmQueSkpOyBcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCh0ZXhDb2xvci54LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53
KSAqIGFscGhhOyBcbiIKLSAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSAgICBtX3NoYWRlclByb2dyYW0gPSBjcmVhdGVT
aGFkZXJQcm9ncmFtKG1fY29udGV4dCwgdmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRl
clN0cmluZyk7Ci0gICAgaWYgKCFtX3NoYWRlclByb2dyYW0pIHsKLSAgICAgICAgTE9HX0VSUk9S
KCJQbHVnaW5MYXllckNocm9taXVtOiBGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBwcm9ncmFtIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9
IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVy
ZSIpOwotICAgIG1fc2hhZGVyTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3NoYWRlckFscGhhTG9j
YXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJh
bHBoYSIpOwotICAgIEFTU0VSVChtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiAhPSAtMSk7Ci0gICAg
QVNTRVJUKG1fc2hhZGVyTWF0cml4TG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3NoYWRl
ckFscGhhTG9jYXRpb24gIT0gLTEpOwotCi0gICAgbV9pbml0aWFsaXplZCA9IHRydWU7Ci19Ci0K
LVBsdWdpbkxheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6flNoYXJlZFZhbHVlcygpCi17Ci0g
ICAgaWYgKG1fc2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT5kZWxldGVQcm9ncmFtKG1fc2hhZGVyUHJvZ3JhbSkpOwotfQotCiBQYXNzUmVmUHRyPFBsdWdp
bkxheWVyQ2hyb21pdW0+IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0xheWVy
Q2hyb21pdW0qIG93bmVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luTGF5ZXJD
aHJvbWl1bShvd25lcikpOwpAQCAtMTA5LDggKzU3LDggQEAgdm9pZCBQbHVnaW5MYXllckNocm9t
aXVtOjp1cGRhdGVDb250ZW50c0lmRGlydHkoKQogdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpk
cmF3KCkKIHsKICAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKLSAgICBjb25zdCBQbHVnaW5M
YXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMqIHN2ID0gbGF5ZXJSZW5kZXJlcigpLT5wbHVnaW5M
YXllclNoYXJlZFZhbHVlcygpOwotICAgIEFTU0VSVChzdiAmJiBzdi0+aW5pdGlhbGl6ZWQoKSk7
CisgICAgY29uc3QgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVy
UmVuZGVyZXIoKS0+cGx1Z2luTGF5ZXJQcm9ncmFtKCk7CisgICAgQVNTRVJUKHByb2dyYW0gJiYg
cHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQg
PSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3Rp
dmVUZXh0dXJlKEdMX1RFWFRVUkUwKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKSk7CkBAIC0xMjIsMTEgKzcwLDEyIEBA
IHZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NM
QU1QX1RPX0VER0UpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSkpOwogICAg
IAotICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5zaGFkZXJQcm9ncmFtKCkpOwot
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc3YtPnNoYWRlclNhbXBsZXJMb2Nh
dGlvbigpLCAwKSk7CisgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJv
Z3JhbSgpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZy
YWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKICAgICBkcmF3VGV4dHVyZWRR
dWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLCBkcmF3VHJh
bnNmb3JtKCksCiAgICAgICAgICAgICAgICAgICAgICBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMo
KS5oZWlnaHQoKSwgZHJhd09wYWNpdHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHN2LT5zaGFk
ZXJNYXRyaXhMb2NhdGlvbigpLCBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisg
ICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRp
b24oKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAppbmRleCA4NTNiMzI4
OTc3YzQ0M2NkZjcwN2NjM2E5NWI3OTVmOWRiOTM2ZmRmLi5jMTZiNGU1OWE1OGUyYTYyYzVkNTVl
NWNmMTY1M2YwYjM3NGY1YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCkBAIC00
MywyNSArNDMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWdu
ZWQgdGV4dHVyZUlkKTsKICAgICAgICAgCi0gICAgY2xhc3MgU2hhcmVkVmFsdWVzIHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIFNoYXJlZFZhbHVlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCk7
Ci0gICAgICAgIH5TaGFyZWRWYWx1ZXMoKTsKLQotICAgICAgICB1bnNpZ25lZCBzaGFkZXJQcm9n
cmFtKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJQcm9ncmFtOyB9Ci0gICAgICAgIGludCBzaGFk
ZXJTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlclNhbXBsZXJMb2NhdGlv
bjsgfQotICAgICAgICBpbnQgc2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3NoYWRlck1hdHJpeExvY2F0aW9uOyB9Ci0gICAgICAgIGludCBzaGFkZXJBbHBoYUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJBbHBoYUxvY2F0aW9uOyB9Ci0gICAgICAgIGJvb2wg
aW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9Ci0KLSAgICBwcml2
YXRlOgotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwotICAgICAgICB1bnNp
Z25lZCBtX3NoYWRlclByb2dyYW07Ci0gICAgICAgIGludCBtX3NoYWRlclNhbXBsZXJMb2NhdGlv
bjsKLSAgICAgICAgaW50IG1fc2hhZGVyTWF0cml4TG9jYXRpb247Ci0gICAgICAgIGludCBtX3No
YWRlckFscGhhTG9jYXRpb247Ci0gICAgICAgIGJvb2wgbV9pbml0aWFsaXplZDsKLSAgICB9Owor
ICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYT4gUHJvZ3JhbTsKIAogcHJpdmF0ZToKICAgICBQbHVnaW5MYXllckNo
cm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdiOWYxNjI0NjhiMDZhMmQ0ZTY4MjdmMjU1OTA3ZDkzNDU0ODgyZTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Qcm9ncmFtQmluZGluZy5jcHAKQEAgLTAsMCArMSwxNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNs
dWRlICJQcm9ncmFtQmluZGluZy5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hy
b21pdW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBbGwgbGF5ZXIgc2hhZGVycyBz
aGFyZSB0aGUgc2FtZSBhdHRyaWJ1dGUgbG9jYXRpb25zIGZvciB0aGUgdmVydGV4IHBvc2l0aW9u
cworLy8gYW5kIHRleHR1cmUgY29vcmRpbmF0ZXMuIFRoaXMgYWxsb3dzIHN3aXRjaGluZyBzaGFk
ZXJzIHdpdGhvdXQgcmViaW5kaW5nIGF0dHJpYnV0ZQorLy8gYXJyYXlzLgorc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHNfcG9zaXRpb25BdHRyaWJMb2NhdGlvbiA9IDA7CitzdGF0aWMgY29uc3QgdW5z
aWduZWQgc190ZXhDb29yZEF0dHJpYkxvY2F0aW9uID0gMTsKKworR2VvbWV0cnlCaW5kaW5nOjpH
ZW9tZXRyeUJpbmRpbmcoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKKyAgICAsIG1fcXVhZFZlcnRpY2VzVmJvKDApCisgICAgLCBtX3F1YWRFbGVt
ZW50c1ZibygwKQorICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKK3sKKyAgICAvLyBWZXJ0ZXgg
cG9zaXRpb25zIGFuZCB0ZXh0dXJlIGNvb3JkaW5hdGVzIGZvciB0aGUgNCBjb3JuZXJzIG9mIGEg
MXgxIHF1YWQuCisgICAgZmxvYXQgdmVydGljZXNbXSA9IHsgLTAuNWYsICAwLjVmLCAwLjBmLCAw
LjBmLCAgMS4wZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAtMC41ZiwgLTAuNWYsIDAuMGYs
IDAuMGYsICAwLjBmLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAuNWYsIC0wLjVmLCAwLjBm
LCAxLjBmLCAgMC4wZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAwLjVmLCAgMC41ZiwgMC4w
ZiwgMS4wZiwgIDEuMGYgfTsKKyAgICB1aW50MTZfdCBpbmRpY2VzW10gPSB7IDAsIDEsIDIsIDAs
IDIsIDMsIC8vIFRoZSB0d28gdHJpYW5nbGVzIHRoYXQgbWFrZSB1cCB0aGUgbGF5ZXIgcXVhZC4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDIsIDN9OyAvLyBBIGxpbmUgcGF0aCBm
b3IgZHJhd2luZyB0aGUgbGF5ZXIgYm9yZGVyLgorCisgICAgR0xDKG1fY29udGV4dCwgbV9xdWFk
VmVydGljZXNWYm8gPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpKTsKKyAgICBHTEMobV9jb250
ZXh0LCBtX3F1YWRFbGVtZW50c1ZibyA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCkpOworICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
QVJSQVlfQlVGRkVSLCBtX3F1YWRWZXJ0aWNlc1ZibykpOworICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBzaXpl
b2YodmVydGljZXMpLCB2ZXJ0aWNlcywgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKSk7
CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiwgbV9xdWFkRWxlbWVudHNWYm8pKTsKKyAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1F
TlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoaW5kaWNlcyksIGluZGljZXMsIEdyYXBoaWNzQ29udGV4
dDNEOjpTVEFUSUNfRFJBVykpOworCisgICAgbV9pbml0aWFsaXplZCA9IHRydWU7Cit9CisKK0dl
b21ldHJ5QmluZGluZzo6fkdlb21ldHJ5QmluZGluZygpCit7CisgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV9xdWFkVmVydGljZXNWYm8pKTsKKyAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihtX3F1YWRFbGVtZW50c1ZibykpOworfQor
Cit2b2lkIEdlb21ldHJ5QmluZGluZzo6cHJlcGFyZUZvckRyYXcoKQoreworICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVG
RkVSLCBxdWFkVmVydGljZXNWYm8oKSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIsIHF1YWRF
bGVtZW50c1ZibygpKSk7CisgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKKyAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoc19wb3NpdGlvbkF0dHJpYkxvY2F0
aW9uLCAzLCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCA1ICogc2l6ZW9mKGZsb2F0
KSwgb2Zmc2V0KSk7CisgICAgb2Zmc2V0ICs9IDMgKiBzaXplb2YoZmxvYXQpOworICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihzX3RleENvb3JkQXR0cmli
TG9jYXRpb24sIDIsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIDUgKiBzaXplb2Yo
ZmxvYXQpLCBvZmZzZXQpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KHNfcG9zaXRpb25BdHRyaWJMb2NhdGlvbikpOworICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoc190ZXhDb29yZEF0dHJp
YkxvY2F0aW9uKSk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb2FkU2hhZGVyKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCB0eXBlLCBjb25zdCBjaGFyKiBzaGFkZXJTb3VyY2Up
Cit7CisgICAgdW5zaWduZWQgc2hhZGVyID0gY29udGV4dC0+Y3JlYXRlU2hhZGVyKHR5cGUpOwor
ICAgIGlmICghc2hhZGVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICBTdHJpbmcgc291cmNlU3Ry
aW5nKHNoYWRlclNvdXJjZSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnNoYWRlclNvdXJj
ZShzaGFkZXIsIHNvdXJjZVN0cmluZykpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5jb21w
aWxlU2hhZGVyKHNoYWRlcikpOworICAgIGludCBjb21waWxlZCA9IDA7CisgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJ
TEVfU1RBVFVTLCAmY29tcGlsZWQpKTsKKyAgICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFkZXIoc2hhZGVyKSk7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyAgICByZXR1cm4gc2hhZGVyOworfQorCitzdGF0aWMgdW5zaWduZWQgY3Jl
YXRlU2hhZGVyUHJvZ3JhbShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgY2hhciog
dmVydGV4U2hhZGVyU291cmNlLCBjb25zdCBjaGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZSkKK3sK
KyAgICB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdyYXBoaWNz
Q29udGV4dDNEOjpWRVJURVhfU0hBREVSLCB2ZXJ0ZXhTaGFkZXJTb3VyY2UpOworICAgIGlmICgh
dmVydGV4U2hhZGVyKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSB2ZXJ0
ZXggc2hhZGVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHVuc2lnbmVkIGZy
YWdtZW50U2hhZGVyID0gbG9hZFNoYWRlcihjb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6RlJB
R01FTlRfU0hBREVSLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgaWYgKCFmcmFnbWVudFNo
YWRlcikgeworICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRl
eFNoYWRlcikpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZnJhZ21lbnQg
c2hhZGVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHVuc2lnbmVkIHByb2dy
YW1PYmplY3QgPSBjb250ZXh0LT5jcmVhdGVQcm9ncmFtKCk7CisgICAgaWYgKCFwcm9ncmFtT2Jq
ZWN0KSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBzaGFkZXIgcHJvZ3Jh
bSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+YXR0YWNoU2hhZGVyKHByb2dyYW1PYmplY3QsIHZlcnRleFNoYWRlcikpOworICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT5hdHRhY2hTaGFkZXIocHJvZ3JhbU9iamVjdCwgZnJhZ21lbnRTaGFk
ZXIpKTsKKworICAgIC8vIEJpbmQgdGhlIGNvbW1vbiBhdHRyaWIgbG9jYXRpb25zLgorICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbU9iamVjdCwgc19w
b3NpdGlvbkF0dHJpYkxvY2F0aW9uLCAiYV9wb3NpdGlvbiIpKTsKKyAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW1PYmplY3QsIHNfdGV4Q29vcmRBdHRy
aWJMb2NhdGlvbiwgImFfdGV4Q29vcmQiKSk7CisKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
bGlua1Byb2dyYW0ocHJvZ3JhbU9iamVjdCkpOworICAgIGludCBsaW5rZWQgPSAwOworICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbU9iamVjdCwgR3JhcGhpY3ND
b250ZXh0M0Q6OkxJTktfU1RBVFVTLCAmbGlua2VkKSk7CisgICAgaWYgKCFsaW5rZWQpIHsKKyAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbGluayBzaGFkZXIgcHJvZ3JhbSIpOworICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShwcm9ncmFtT2JqZWN0KSk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxl
dGVTaGFkZXIodmVydGV4U2hhZGVyKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0
ZVNoYWRlcihmcmFnbWVudFNoYWRlcikpOworICAgIHJldHVybiBwcm9ncmFtT2JqZWN0OworfQor
CitQcm9ncmFtQmluZGluZ0Jhc2U6OlByb2dyYW1CaW5kaW5nQmFzZShHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9wcm9ncmFtKDAp
CisgICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQoreworfQorCitQcm9ncmFtQmluZGluZ0Jhc2U6
On5Qcm9ncmFtQmluZGluZ0Jhc2UoKQoreworICAgIGlmIChtX3Byb2dyYW0pCisgICAgICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShtX3Byb2dyYW0pKTsKK30KKwor
Ym9vbCBQcm9ncmFtQmluZGluZ0Jhc2U6OmluaXQoY29uc3QgY2hhciogdmVydGV4U2hhZGVyLCBj
b25zdCBjaGFyKiBmcmFnbWVudFNoYWRlcikKK3sKKyAgICBtX3Byb2dyYW0gPSBjcmVhdGVTaGFk
ZXJQcm9ncmFtKG1fY29udGV4dCwgdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcik7CisgICAg
aWYgKCFtX3Byb2dyYW0pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHNo
YWRlciBwcm9ncmFtIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1N2Iw
ZDE4NDU1Y2JlYjU1MzVlNDYwODgyMjBmYWQyNDAzODg2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5o
CkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQcm9ncmFtQmluZGluZ19oCisjZGVm
aW5lIFByb2dyYW1CaW5kaW5nX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKKworY2xh
c3MgR2VvbWV0cnlCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHZW9tZXRyeUJpbmRp
bmcoR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICB+R2VvbWV0cnlCaW5kaW5nKCk7CisKKyAgICBi
b29sIGluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplZDsgfQorCisgICAg
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0K
KyAgICB1bnNpZ25lZCBxdWFkVmVydGljZXNWYm8oKSBjb25zdCB7IHJldHVybiBtX3F1YWRWZXJ0
aWNlc1ZibzsgfQorICAgIHVuc2lnbmVkIHF1YWRFbGVtZW50c1ZibygpIGNvbnN0IHsgcmV0dXJu
IG1fcXVhZEVsZW1lbnRzVmJvOyB9CisKKyAgICB2b2lkIHByZXBhcmVGb3JEcmF3KCk7CisKK3By
aXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAgICB1bnNpZ25lZCBt
X3F1YWRWZXJ0aWNlc1ZibzsKKyAgICB1bnNpZ25lZCBtX3F1YWRFbGVtZW50c1ZibzsKKyAgICBi
b29sIG1faW5pdGlhbGl6ZWQ7Cit9OworCitjbGFzcyBQcm9ncmFtQmluZGluZ0Jhc2UgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IFByb2dyYW1CaW5kaW5nQmFzZShHcmFwaGljc0NvbnRleHQzRCop
OworICAgIH5Qcm9ncmFtQmluZGluZ0Jhc2UoKTsKKworICAgIGJvb2wgaW5pdChjb25zdCBjaGFy
KiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyKTsKKworICAgIHVuc2ln
bmVkIHByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW07IH0KKyAgICBib29sIGluaXRp
YWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplZDsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAgICB1bnNpZ25lZCBtX3Byb2dyYW07
CisgICAgYm9vbCBtX2luaXRpYWxpemVkOworfTsKKwordGVtcGxhdGU8Y2xhc3MgVmVydGV4U2hh
ZGVyLCBjbGFzcyBGcmFnbWVudFNoYWRlcj4KK2NsYXNzIFByb2dyYW1CaW5kaW5nIDogcHVibGlj
IFByb2dyYW1CaW5kaW5nQmFzZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUHJvZ3JhbUJpbmRp
bmcoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgICAgIDogUHJvZ3JhbUJpbmRpbmdC
YXNlKGNvbnRleHQpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaW5pdCgpCisgICAgeworICAg
ICAgICBpZiAoIVByb2dyYW1CaW5kaW5nQmFzZTo6aW5pdChtX3ZlcnRleFNoYWRlci5nZXRTaGFk
ZXJTdHJpbmcoKSwgbV9mcmFnbWVudFNoYWRlci5nZXRTaGFkZXJTdHJpbmcoKSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghbV92ZXJ0ZXhTaGFkZXIuaW5pdChtX2Nv
bnRleHQsIG1fcHJvZ3JhbSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBtX2ZyYWdtZW50U2hhZGVyLmluaXQobV9jb250ZXh0LCBtX3Byb2dyYW0pOworICAgIH0K
KworICAgIGNvbnN0IFZlcnRleFNoYWRlciYgdmVydGV4U2hhZGVyKCkgY29uc3QgeyByZXR1cm4g
bV92ZXJ0ZXhTaGFkZXI7IH0KKyAgICBjb25zdCBGcmFnbWVudFNoYWRlciYgZnJhZ21lbnRTaGFk
ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyOyB9CisKK3ByaXZhdGU6CisKKyAg
ICBWZXJ0ZXhTaGFkZXIgbV92ZXJ0ZXhTaGFkZXI7CisgICAgRnJhZ21lbnRTaGFkZXIgbV9mcmFn
bWVudFNoYWRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3Vy
ZmFjZUNocm9taXVtLmNwcAppbmRleCBiM2NlOWQ3MjM3MTY4Yzk1NDcwMTRkMmNhNTM0ZDMyZTk4
YzBmMzBjLi5iZTAxYTM2ZDJhNTYxYTkyNmNjOWQ2YTUyYzg5MDVmYjY5NDhkYjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJm
YWNlQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKQEAgLTM1LDkxICszNSw2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU3VyZmFjZUNocm9taXVtOjpTaGFyZWRWYWx1ZXM6
OlNoYXJlZFZhbHVlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKLSAgICA6IG1fY29udGV4
dChjb250ZXh0KQotICAgICwgbV9zaGFkZXJQcm9ncmFtKDApCi0gICAgLCBtX21hc2tTaGFkZXJQ
cm9ncmFtKDApCi0gICAgLCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbigtMSkKLSAgICAsIG1fc2hh
ZGVyTWF0cml4TG9jYXRpb24oLTEpCi0gICAgLCBtX3NoYWRlckFscGhhTG9jYXRpb24oLTEpCi0g
ICAgLCBtX21hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb24oLTEpCi0gICAgLCBtX21hc2tTaGFkZXJN
YXNrU2FtcGxlckxvY2F0aW9uKC0xKQotICAgICwgbV9tYXNrU2hhZGVyTWF0cml4TG9jYXRpb24o
LTEpCi0gICAgLCBtX21hc2tTaGFkZXJBbHBoYUxvY2F0aW9uKC0xKQotICAgICwgbV9pbml0aWFs
aXplZChmYWxzZSkKLXsKLSAgICBjaGFyIHZlcnRleFNoYWRlclN0cmluZ1tdID0KLSAgICAgICAg
ImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247ICAgXG4iCi0gICAgICAgICJhdHRyaWJ1dGUgdmVj
MiBhX3RleENvb3JkOyAgIFxuIgotICAgICAgICAidW5pZm9ybSBtYXQ0IG1hdHJpeDsgICAgICAg
ICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAgXG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBh
X3Bvc2l0aW9uOyBcbiIKLSAgICAgICAgIiAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7ICAgXG4i
Ci0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLSAgICBjaGFyIGZy
YWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidmFyeWluZyB2ZWMyIHZf
dGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9y
bSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAg
ICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu
IgotICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJE
KHNfdGV4dHVyZSwgdl90ZXhDb29yZCk7IFxuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9yLncpICogYWxw
aGE7IFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFxuIjsKLSAgICBjaGFyIGZyYWdtZW50U2hhZGVyV2l0aE1hc2tTdHJpbmdb
XSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1
cmU7ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIy
RCBzX21hc2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3Jt
IGZsb2F0IGFscGhhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4i
Ci0gICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXG4iCi0gICAgICAgICIgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJl
LCB2X3RleENvb3JkKTsgXG4iCi0gICAgICAgICIgIHZlYzQgbWFza0NvbG9yID0gdGV4dHVyZTJE
KHNfbWFzaywgdl90ZXhDb29yZCk7ICAgXG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZl
YzQodGV4Q29sb3IueCwgdGV4Q29sb3IueSwgdGV4Q29sb3IueiwgdGV4Q29sb3IudykgKiBhbHBo
YSAqIG1hc2tDb2xvci53OyBcbiIKLSAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSAgICBtX3NoYWRlclByb2dyYW0gPSBM
YXllckNocm9taXVtOjpjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29udGV4dCwgdmVydGV4U2hhZGVy
U3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZyk7Ci0gICAgbV9tYXNrU2hhZGVyUHJvZ3JhbSA9
IExheWVyQ2hyb21pdW06OmNyZWF0ZVNoYWRlclByb2dyYW0obV9jb250ZXh0LCB2ZXJ0ZXhTaGFk
ZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyV2l0aE1hc2tTdHJpbmcpOwotICAgIGlmICghbV9zaGFk
ZXJQcm9ncmFtIHx8ICFtX21hc2tTaGFkZXJQcm9ncmFtKSB7Ci0gICAgICAgIExPR19FUlJPUigi
UmVuZGVyU3VyZmFjZUNocm9taXVtOiBGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBwcm9ncmFtIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTEMobV9jb250ZXh0LCBtX3NoYWRlclNh
bXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fc2hhZGVyUHJv
Z3JhbSwgInNfdGV4dHVyZSIpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX3NoYWRlck1hdHJpeExv
Y2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9zaGFkZXJQcm9ncmFtLCAi
bWF0cml4IikpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fc2hhZGVyQWxwaGFMb2NhdGlvbiA9IG1f
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwgImFscGhhIikpOwot
Ci0gICAgR0xDKG1fY29udGV4dCwgbV9tYXNrU2hhZGVyU2FtcGxlckxvY2F0aW9uID0gbV9jb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9tYXNrU2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIp
KTsKLSAgICBHTEMobV9jb250ZXh0LCBtX21hc2tTaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uID0g
bV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9tYXNrU2hhZGVyUHJvZ3JhbSwgInNfbWFz
ayIpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX21hc2tTaGFkZXJNYXRyaXhMb2NhdGlvbiA9IG1f
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fbWFza1NoYWRlclByb2dyYW0sICJtYXRyaXgi
KSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9tYXNrU2hhZGVyQWxwaGFMb2NhdGlvbiA9IG1fY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fbWFza1NoYWRlclByb2dyYW0sICJhbHBoYSIpKTsK
LQotICAgIGlmIChtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9PSAtMSB8fCBtX3NoYWRlck1hdHJp
eExvY2F0aW9uID09IC0xIHx8IG1fc2hhZGVyQWxwaGFMb2NhdGlvbiA9PSAtMQotICAgICAgICB8
fCBtX21hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb24gPT0gLTEgfHwgbV9tYXNrU2hhZGVyTWFza1Nh
bXBsZXJMb2NhdGlvbiA9PSAtMSB8fCBtX21hc2tTaGFkZXJNYXRyaXhMb2NhdGlvbiA9PSAtMSB8
fCBtX21hc2tTaGFkZXJBbHBoYUxvY2F0aW9uID09IC0xKSB7Ci0gICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGluaXRpYWxpemUgcmVuZGVyIHN1cmZhY2Ugc2hhZGVycy4iKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3Jh
bShtX3NoYWRlclByb2dyYW0pKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZv
cm0xaShtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiwgMCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+dXNlUHJvZ3JhbShtX21hc2tTaGFkZXJQcm9ncmFtKSk7Ci0gICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkobV9tYXNrU2hhZGVyU2FtcGxlckxvY2F0aW9uLCAw
KSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkobV9tYXNrU2hhZGVy
TWFza1NhbXBsZXJMb2NhdGlvbiwgMSkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
dXNlUHJvZ3JhbSgwKSk7Ci0gICAgbV9pbml0aWFsaXplZCA9IHRydWU7Ci19Ci0KLVJlbmRlclN1
cmZhY2VDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjp+U2hhcmVkVmFsdWVzKCkKLXsKLSAgICBpZiAo
bV9zaGFkZXJQcm9ncmFtKQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0
ZVByb2dyYW0obV9zaGFkZXJQcm9ncmFtKSk7Ci0gICAgaWYgKG1fbWFza1NoYWRlclByb2dyYW0p
Ci0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShtX21hc2tT
aGFkZXJQcm9ncmFtKSk7Ci19Ci0KIFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6UmVuZGVyU3VyZmFj
ZUNocm9taXVtKExheWVyQ2hyb21pdW0qIG93bmluZ0xheWVyKQogICAgIDogbV9vd25pbmdMYXll
cihvd25pbmdMYXllcikKICAgICAsIG1fbWFza0xheWVyKDApCkBAIC0xODUsMzAgKzEwMCwzMSBA
QCB2b2lkIFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6ZHJhd1N1cmZhY2UoTGF5ZXJDaHJvbWl1bSog
bWFza0xheWVyLCBjb25zdCBUcmFuc2ZvcgogCiAgICAgaW50IHNoYWRlck1hdHJpeExvY2F0aW9u
ID0gLTE7CiAgICAgaW50IHNoYWRlckFscGhhTG9jYXRpb24gPSAtMTsKLSAgICBjb25zdCBSZW5k
ZXJTdXJmYWNlQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogc3YgPSBsYXllclJlbmRlcmVyKCktPnJl
bmRlclN1cmZhY2VTaGFyZWRWYWx1ZXMoKTsKLSAgICBBU1NFUlQoc3YgJiYgc3YtPmluaXRpYWxp
emVkKCkpOworICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6UHJvZ3JhbSogcHJvZ3Jh
bSA9IGxheWVyUmVuZGVyZXIoKS0+cmVuZGVyU3VyZmFjZVByb2dyYW0oKTsKKyAgICBjb25zdCBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW06Ok1hc2tQcm9ncmFtKiBtYXNrUHJvZ3JhbSA9IGxheWVyUmVu
ZGVyZXIoKS0+cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7CisgICAgQVNTRVJUKHByb2dyYW0g
JiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CiAgICAgYm9vbCB1c2VNYXNrID0gZmFsc2U7CiAg
ICAgaWYgKG1hc2tMYXllciAmJiBtYXNrTGF5ZXItPmRyYXdzQ29udGVudCgpKSB7CiAgICAgICAg
IG1hc2tMYXllci0+dXBkYXRlQ29udGVudHNJZkRpcnR5KCk7CiAgICAgICAgIGlmICghbWFza0xh
eWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNvbnRleHQzRC0+bWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0gICAgICAgICAgICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihz
di0+bWFza1NoYWRlclByb2dyYW0oKSk7CisgICAgICAgICAgICBsYXllclJlbmRlcmVyKCktPnVz
ZVNoYWRlcihtYXNrUHJvZ3JhbS0+cHJvZ3JhbSgpKTsKICAgICAgICAgICAgIEdMQyhjb250ZXh0
M0QsIGNvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTAp
KTsKICAgICAgICAgICAgIG1fY29udGVudHNUZXh0dXJlLT5iaW5kVGV4dHVyZSgpOwogICAgICAg
ICAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFMSkpOwogICAgICAgICAgICAgbWFza0xheWVyLT5iaW5kQ29udGVudHNU
ZXh0dXJlKCk7CiAgICAgICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmFjdGl2ZVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgICAgICAgICBzaGFkZXJN
YXRyaXhMb2NhdGlvbiA9IHN2LT5tYXNrU2hhZGVyTWF0cml4TG9jYXRpb24oKTsKLSAgICAgICAg
ICAgIHNoYWRlckFscGhhTG9jYXRpb24gPSBzdi0+bWFza1NoYWRlckFscGhhTG9jYXRpb24oKTsK
KyAgICAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uID0gbWFza1Byb2dyYW0tPnZlcnRleFNo
YWRlcigpLm1hdHJpeExvY2F0aW9uKCk7CisgICAgICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9u
ID0gbWFza1Byb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOwogICAgICAg
ICAgICAgdXNlTWFzayA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXVzZU1h
c2spIHsKLSAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIoc3YtPnNoYWRlclByb2dy
YW0oKSk7CisgICAgICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHByb2dyYW0tPnByb2dy
YW0oKSk7CiAgICAgICAgIG1fY29udGVudHNUZXh0dXJlLT5iaW5kVGV4dHVyZSgpOwotICAgICAg
ICBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpOwotICAg
ICAgICBzaGFkZXJBbHBoYUxvY2F0aW9uID0gc3YtPnNoYWRlckFscGhhTG9jYXRpb24oKTsKKyAg
ICAgICAgc2hhZGVyTWF0cml4TG9jYXRpb24gPSBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRy
aXhMb2NhdGlvbigpOworICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJh
Z21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCk7CiAgICAgfQogICAgIAogICAgIExheWVyQ2hy
b21pdW06OmRyYXdUZXh0dXJlZFF1YWQobGF5ZXJSZW5kZXJlcigpLT5jb250ZXh0KCksIGxheWVy
UmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLCBkcmF3VHJhbnNmb3JtLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9S
ZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAppbmRleCBiMWY2YTVjZWM4MWYwYWNkMzNjOTg4Yzg3NzM1
NGQ3Y2IyNzI4Nzc2Li4zZTg5ZDc5NTg2ZjExNGRkNzE3M2MyZjNhMzQyNGYwZDk2N2U2MTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5k
ZXJTdXJmYWNlQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaApAQCAtMzEsNiArMzEsOCBAQAogCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBy
b2dyYW1CaW5kaW5nLmgiCisjaW5jbHVkZSAiU2hhZGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJU
ZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC02MCwzOSArNjIsOCBAQCBwdWJsaWM6CiAKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9k
cmF3VHJhbnNmb3JtOyB9CiAKLSAgICAvLyBTdG9yZXMgdmFsdWVzIHRoYXQgYXJlIHNoYXJlZCBi
ZXR3ZWVuIGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHRoYXQgYXJlCi0gICAgLy8gYXNzb2NpYXRl
ZCB3aXRoIHRoZSBzYW1lIExheWVyUmVuZGVyZXJDaHJvbWl1bSAoYW5kIGhlbmNlIHRoZSBzYW1l
IEdMCi0gICAgLy8gY29udGV4dCkuCi0gICAgY2xhc3MgU2hhcmVkVmFsdWVzIHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIGV4cGxpY2l0IFNoYXJlZFZhbHVlcyhHcmFwaGljc0NvbnRleHQzRCopOwot
ICAgICAgICB+U2hhcmVkVmFsdWVzKCk7Ci0KLSAgICAgICAgdW5zaWduZWQgc2hhZGVyUHJvZ3Jh
bSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVyUHJvZ3JhbTsgfQotICAgICAgICB1bnNpZ25lZCBt
YXNrU2hhZGVyUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1NoYWRlclByb2dyYW07IH0K
LSAgICAgICAgaW50IHNoYWRlclNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hh
ZGVyU2FtcGxlckxvY2F0aW9uOyB9Ci0gICAgICAgIGludCBzaGFkZXJNYXRyaXhMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVyTWF0cml4TG9jYXRpb247IH0KLSAgICAgICAgaW50IHNo
YWRlckFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlckFscGhhTG9jYXRpb247
IH0KLSAgICAgICAgaW50IG1hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX21hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb247IH0KLSAgICAgICAgaW50IG1hc2tTaGFkZXJN
YXNrU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrU2hhZGVyTWFza1NhbXBs
ZXJMb2NhdGlvbjsgfQotICAgICAgICBpbnQgbWFza1NoYWRlck1hdHJpeExvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9tYXNrU2hhZGVyTWF0cml4TG9jYXRpb247IH0KLSAgICAgICAgaW50IG1h
c2tTaGFkZXJBbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrU2hhZGVyQWxwaGFM
b2NhdGlvbjsgfQotICAgICAgICBib29sIGluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9p
bml0aWFsaXplZDsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Qq
IG1fY29udGV4dDsKLQotICAgICAgICB1bnNpZ25lZCBtX3NoYWRlclByb2dyYW07Ci0gICAgICAg
IHVuc2lnbmVkIG1fbWFza1NoYWRlclByb2dyYW07Ci0gICAgICAgIGludCBtX3NoYWRlclNhbXBs
ZXJMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fc2hhZGVyTWF0cml4TG9jYXRpb247Ci0gICAgICAg
IGludCBtX3NoYWRlckFscGhhTG9jYXRpb247Ci0gICAgICAgIGludCBtX21hc2tTaGFkZXJTYW1w
bGVyTG9jYXRpb247Ci0gICAgICAgIGludCBtX21hc2tTaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9u
OwotICAgICAgICBpbnQgbV9tYXNrU2hhZGVyTWF0cml4TG9jYXRpb247Ci0gICAgICAgIGludCBt
X21hc2tTaGFkZXJBbHBoYUxvY2F0aW9uOwotICAgICAgICBib29sIG1faW5pdGlhbGl6ZWQ7Ci0g
ICAgfTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJh
Z21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFByb2dyYW07CisgICAgdHlwZWRlZiBQcm9ncmFtQmlu
ZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaz4g
TWFza1Byb2dyYW07CiAKIHByaXZhdGU6CiAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXll
clJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYzZjAyOTY3
OTJjNzAxYjlhNTQwMmRjN2MxMGIzNGUwNzE5NjNiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcApA
QCAtMCwwICsxLDMxMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCisK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgorCisjZGVmaW5lIFNIQURFUjAoU3JjKSAjU3JjCisjZGVmaW5lIFNIQURFUihTcmMpIFNI
QURFUjAoU3JjKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZlcnRleFNoYWRlclBvc1RleDo6
VmVydGV4U2hhZGVyUG9zVGV4KCkKKyAgICA6IG1fbWF0cml4TG9jYXRpb24oLTEpCit7Cit9CisK
K2Jvb2wgVmVydGV4U2hhZGVyUG9zVGV4Ojppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCB1bnNpZ25lZCBwcm9ncmFtKQoreworICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOworICAgIHJldHVybiBtX21hdHJp
eExvY2F0aW9uICE9IC0xOworfQorCitjb25zdCBjaGFyKiBWZXJ0ZXhTaGFkZXJQb3NUZXg6Omdl
dFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgYXR0
cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXhDb29y
ZDsKKyAgICAgICAgdW5pZm9ybSBtYXQ0IG1hdHJpeDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZf
dGV4Q29vcmQ7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
X1Bvc2l0aW9uID0gbWF0cml4ICogYV9wb3NpdGlvbjsKKyAgICAgICAgICAgIHZfdGV4Q29vcmQg
PSBhX3RleENvb3JkOworICAgICAgICB9CisgICAgKTsKK30KKworVmVydGV4U2hhZGVyUG9zVGV4
U3RyZXRjaDo6VmVydGV4U2hhZGVyUG9zVGV4U3RyZXRjaCgpCisgICAgOiBtX21hdHJpeExvY2F0
aW9uKC0xKQorICAgICwgbV93aWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oLTEpCit7Cit9CisKK2Jv
b2wgVmVydGV4U2hhZGVyUG9zVGV4U3RyZXRjaDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKKyAgICBtX3dpZHRoU2Nh
bGVGYWN0b3JMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAi
d2l0aFNjYWxlRmFjdG9yIik7CisgICAgcmV0dXJuIG1fbWF0cml4TG9jYXRpb24gIT0gLTEgJiYg
bV93aWR0aFNjYWxlRmFjdG9yTG9jYXRpb24gIT0gLTE7Cit9CisKK2NvbnN0IGNoYXIqIFZlcnRl
eFNoYWRlclBvc1RleFN0cmV0Y2g6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIGF0
dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247CisgICAgICAgIGF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29v
cmQ7CisgICAgICAgIHVuaWZvcm0gbWF0NCBtYXRyaXg7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2
X3RleENvb3JkOworICAgICAgICB1bmlmb3JtIGZsb2F0IHdpZHRoU2NhbGVGYWN0b3I7CisgICAg
ICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gbWF0
cml4ICogYV9wb3NpdGlvbjsKKyAgICAgICAgICAgIHZfdGV4Q29vcmQgPSB2ZWMyKHdpZHRoU2Nh
bGVGYWN0b3IgKiBhX3RleENvb3JkLngsIGFfdGV4Q29vcmQueSk7CisgICAgICAgIH0KKyAgICAp
OworfQorCitWZXJ0ZXhTaGFkZXJQb3M6OlZlcnRleFNoYWRlclBvcygpCisgICAgOiBtX21hdHJp
eExvY2F0aW9uKC0xKQoreworfQorCitib29sIFZlcnRleFNoYWRlclBvczo6aW5pdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX21hdHJpeExv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsK
KyAgICByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbiAhPSAtMTsKK30KKworY29uc3QgY2hhciogVmVy
dGV4U2hhZGVyUG9zOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTSEFE
RVIoCisgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247CisgICAgICAgIHVuaWZvcm0g
bWF0NCBtYXRyaXg7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGdsX1Bvc2l0aW9uID0gbWF0cml4ICogYV9wb3NpdGlvbjsKKyAgICAgICAgfQorICAgICk7Cit9
CisKK1ZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNm
b3JtKCkKKyAgICA6IG1fbWF0cml4TG9jYXRpb24oLTEpCisgICAgLCBtX3RleFRyYW5zZm9ybUxv
Y2F0aW9uKC0xKQoreworfQorCitib29sIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6aW5p
dChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBt
X21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJt
YXRyaXgiKTsKKyAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ3aXRoU2NhbGVGYWN0b3IiKTsKKyAgICByZXR1cm4gbV9tYXRy
aXhMb2NhdGlvbiAhPSAtMSAmJiBtX3RleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xOworfQorCitj
b25zdCBjaGFyKiBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06OmdldFNoYWRlclN0cmluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgYXR0cmlidXRlIHZlYzQgYV9w
b3NpdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsKKyAgICAgICAgdW5p
Zm9ybSBtYXQ0IG1hdHJpeDsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IHRleFRyYW5zZm9ybTsKKyAg
ICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gbWF0cml4ICogYV9wb3NpdGlvbjsKKyAg
ICAgICAgICAgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkICogdGV4VHJhbnNmb3JtLnp3ICsgdGV4
VHJhbnNmb3JtLnh5OworICAgICAgICB9CisgICAgKTsKK30KKworRnJhZ21lbnRUZXhBbHBoYUJp
bmRpbmc6OkZyYWdtZW50VGV4QWxwaGFCaW5kaW5nKCkKKyAgICA6IG1fc2FtcGxlckxvY2F0aW9u
KC0xKQorICAgICwgbV9hbHBoYUxvY2F0aW9uKC0xKQoreworfQorCitib29sIEZyYWdtZW50VGV4
QWxwaGFCaW5kaW5nOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBw
cm9ncmFtKQoreworICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsKKyAgICBtX2FscGhhTG9jYXRpb24gPSBjb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7CisKKyAgICByZXR1cm4g
bV9zYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9hbHBoYUxvY2F0aW9uICE9IC0xOworfQorCitj
b25zdCBjaGFyKiBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE6OmdldFNoYWRlclN0cmlu
ZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworICAgICAgICB1bmlm
b3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7Cisg
ICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlYzQgdGV4Q29sb3Ig
PSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2ZWMyKHZfdGV4Q29vcmQueCwgMS4wIC0gdl90ZXhDb29y
ZC55KSk7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENvbG9yLngsIHRleENv
bG9yLnksIHRleENvbG9yLnosIHRleENvbG9yLncpICogYWxwaGE7CisgICAgICAgIH0KKyAgICAp
OworfQorCitjb25zdCBjaGFyKiBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYTo6Z2V0U2hhZGVy
U3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAg
IHVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCBhbHBo
YTsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmVjNCB0ZXhD
b2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZfdGV4Q29vcmQpOworICAgICAgICAgICAgZ2xf
RnJhZ0NvbG9yID0gdGV4Q29sb3IgKiBhbHBoYTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK2Nv
bnN0IGNoYXIqIEZyYWdtZW50U2hhZGVyQkdSQVRleEFscGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBj
b25zdAoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBz
YW1wbGVyMkQgc190ZXh0dXJlOworICAgICAgICB1bmlmb3JtIGZsb2F0IGFscGhhOworICAgICAg
ICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICB2ZWM0IHRleENvbG9yID0gdGV4
dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCk7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KHRleENvbG9yLnosIHRleENvbG9yLnksIHRleENvbG9yLngsIHRleENvbG9yLncpICog
YWxwaGE7CisgICAgICAgIH0KKyAgICApOworfQorCitGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBo
YU1hc2s6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaygpCisgICAgOiBtX3NhbXBsZXJM
b2NhdGlvbigtMSkKKyAgICAsIG1fbWFza1NhbXBsZXJMb2NhdGlvbigtMSkKKyAgICAsIG1fYWxw
aGFMb2NhdGlvbigtMSkKK3sKK30KKworYm9vbCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1h
c2s6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit7
CisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgInNfdGV4dHVyZSIpOworICAgIG1fbWFza1NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CisgICAgbV9hbHBoYUxv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBoYSIpOwor
CisgICAgcmV0dXJuIG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fbWFza1NhbXBsZXJMb2Nh
dGlvbiAhPSAtMSAmJiBtX2FscGhhTG9jYXRpb24gIT0gLTE7Cit9CisKK2NvbnN0IGNoYXIqIEZy
YWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAg
ICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJE
IHNfdGV4dHVyZTsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc19tYXNrOworICAgICAgICB1
bmlmb3JtIGZsb2F0IGFscGhhOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAg
ICAgICAgICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCk7
CisgICAgICAgICAgICB2ZWM0IG1hc2tDb2xvciA9IHRleHR1cmUyRChzX21hc2ssIHZfdGV4Q29v
cmQpOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci54LCB0ZXhDb2xv
ci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFscGhhICogbWFza0NvbG9yLnc7CisgICAg
ICAgIH0KKyAgICApOworfQorCitGcmFnbWVudFNoYWRlcllVVjo6RnJhZ21lbnRTaGFkZXJZVVYo
KQorICAgIDogbV95VGV4dHVyZUxvY2F0aW9uKC0xKQorICAgICwgbV91VGV4dHVyZUxvY2F0aW9u
KC0xKQorICAgICwgbV92VGV4dHVyZUxvY2F0aW9uKC0xKQorICAgICwgbV9hbHBoYUxvY2F0aW9u
KC0xKQorICAgICwgbV9jY01hdHJpeExvY2F0aW9uKC0xKQorICAgICwgbV9zaWduQWRqTG9jYXRp
b24oLTEpCit7Cit9CisKK2Jvb2wgRnJhZ21lbnRTaGFkZXJZVVY6OmluaXQoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit7CisgICAgbV95VGV4dHVyZUxvY2F0
aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ5X3RleHR1cmUiKTsK
KyAgICBtX3VUZXh0dXJlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgInVfdGV4dHVyZSIpOworICAgIG1fdlRleHR1cmVMb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidl90ZXh0dXJlIik7CisgICAgbV9hbHBoYUxvY2F0
aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJhbHBoYSIpOworICAg
IG1fY2NNYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAiY2NfbWF0cml4Iik7CisgICAgbV9zaWduQWRqTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgImFkaiIpOworCisgICAgcmV0dXJuIG1feVRleHR1cmVMb2Nh
dGlvbiAhPSAtMSAmJiBtX3VUZXh0dXJlTG9jYXRpb24gIT0gLTEgJiYgbV92VGV4dHVyZUxvY2F0
aW9uICE9IC0xCisgICAgICAgICAgICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAtMSAmJiBtX2NjTWF0
cml4TG9jYXRpb24gIT0gLTEgJiYgbV9zaWduQWRqTG9jYXRpb24gIT0gLTE7Cit9CisKK2NvbnN0
IGNoYXIqIEZyYWdtZW50U2hhZGVyWVVWOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAoreworICAg
IHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAg
ICBwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3Jk
OworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB5X3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0g
c2FtcGxlcjJEIHVfdGV4dHVyZTsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdl90ZXh0dXJl
OworICAgICAgICB1bmlmb3JtIGZsb2F0IGFscGhhOworICAgICAgICB1bmlmb3JtIGZsb2F0IGFk
ajsKKyAgICAgICAgdW5pZm9ybSBtYXQzIGNjX21hdHJpeDsKKyAgICAgICAgdm9pZCBtYWluKCkK
KyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgeSA9IHRleHR1cmUyRCh5X3RleHR1cmUsIHZf
dGV4Q29vcmQpLng7CisgICAgICAgICAgICBmbG9hdCB1ID0gdGV4dHVyZTJEKHVfdGV4dHVyZSwg
dl90ZXhDb29yZCkueCAtIGFkajsKKyAgICAgICAgICAgIGZsb2F0IHYgPSB0ZXh0dXJlMkQodl90
ZXh0dXJlLCB2X3RleENvb3JkKS54IC0gYWRqOworICAgICAgICAgICAgdmVjMyByZ2IgPSBjY19t
YXRyaXggKiB2ZWMzKHksIHUsIHYpOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChy
Z2IsIGZsb2F0KDEpKSAqIGFscGhhOworICAgICAgICB9CisgICAgKTsKK30KKworRnJhZ21lbnRT
aGFkZXJDb2xvcjo6RnJhZ21lbnRTaGFkZXJDb2xvcigpCisgICAgOiBtX2NvbG9yTG9jYXRpb24o
LTEpCit7Cit9CisKK2Jvb2wgRnJhZ21lbnRTaGFkZXJDb2xvcjo6aW5pdChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX2NvbG9yTG9jYXRpb24g
PSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImNvbG9yIik7CisgICAgcmV0
dXJuIG1fY29sb3JMb2NhdGlvbiAhPSAtMTsKK30KKworY29uc3QgY2hhciogRnJhZ21lbnRTaGFk
ZXJDb2xvcjo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAor
ICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IGNv
bG9yOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KGNvbG9yLnh5eiAqIGNvbG9yLncsIGNvbG9yLncpOworICAgICAgICB9Cisg
ICAgKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ1MmU5
YmJlMzlkZTZkMjExOTM0NzdmYzE2MDgxMmMzZWZlZThlYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgK
QEAgLTAsMCArMSwxODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYWRlckNocm9taXVtX2gKKyNkZWZp
bmUgU2hhZGVyQ2hyb21pdW1faAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworCitjbGFz
cyBWZXJ0ZXhTaGFkZXJQb3NUZXggeworcHVibGljOgorICAgIFZlcnRleFNoYWRlclBvc1RleCgp
OworCisgICAgYm9vbCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7
CisgICAgY29uc3QgY2hhciogZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CisKKyAgICBpbnQgbWF0
cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CisKK3ByaXZh
dGU6CisgICAgaW50IG1fbWF0cml4TG9jYXRpb247Cit9OworCitjbGFzcyBWZXJ0ZXhTaGFkZXJQ
b3NUZXhTdHJldGNoIHsKK3B1YmxpYzoKKyAgICBWZXJ0ZXhTaGFkZXJQb3NUZXhTdHJldGNoKCk7
CisKKyAgICBib29sIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsK
KyAgICBjb25zdCBjaGFyKiBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKKworICAgIGludCBtYXRy
aXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KKyAgICBpbnQg
d2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aFNjYWxlRmFj
dG9yTG9jYXRpb247IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9tYXRyaXhMb2NhdGlvbjsKKyAg
ICBpbnQgbV93aWR0aFNjYWxlRmFjdG9yTG9jYXRpb247Cit9OworCitjbGFzcyBWZXJ0ZXhTaGFk
ZXJQb3MgeworcHVibGljOgorICAgIFZlcnRleFNoYWRlclBvcygpOworCisgICAgYm9vbCBpbml0
KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgY29uc3QgY2hhciog
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CisKKyAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fbWF0
cml4TG9jYXRpb247Cit9OworCitjbGFzcyBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0gewor
cHVibGljOgorICAgIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSgpOworCisgICAgYm9vbCBp
bml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgY29uc3QgY2hh
ciogZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CisKKyAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CisgICAgaW50IHRleFRyYW5zZm9ybUxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQorCitwcml2
YXRlOgorICAgIGludCBtX21hdHJpeExvY2F0aW9uOworICAgIGludCBtX3RleFRyYW5zZm9ybUxv
Y2F0aW9uOworfTsKKworY2xhc3MgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgeworcHVibGljOgor
ICAgIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nKCk7CisKKyAgICBib29sIGluaXQoR3JhcGhpY3ND
b250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQorICAgIGludCBzYW1wbGVyTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGlu
dCBtX3NhbXBsZXJMb2NhdGlvbjsKKyAgICBpbnQgbV9hbHBoYUxvY2F0aW9uOworfTsKKworY2xh
c3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhIDogcHVibGljIEZyYWdtZW50VGV4QWxw
aGFCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBjb25zdCBjaGFyKiBnZXRTaGFkZXJTdHJpbmcoKSBj
b25zdDsKK307CisKK2NsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhIDogcHVibGljIEZy
YWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBjb25zdCBjaGFyKiBnZXRTaGFk
ZXJTdHJpbmcoKSBjb25zdDsKK307CisKK2NsYXNzIEZyYWdtZW50U2hhZGVyQkdSQVRleEFscGhh
IDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBjb25zdCBj
aGFyKiBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKK307CisKK2NsYXNzIEZyYWdtZW50U2hhZGVy
UkdCQVRleEFscGhhTWFzayB7CitwdWJsaWM6CisgICAgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxw
aGFNYXNrKCk7CisgICAgY29uc3QgY2hhciogZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CisKKyAg
ICBib29sIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBp
bnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQorICAg
IGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbjsg
fQorICAgIGludCBtYXNrU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrU2Ft
cGxlckxvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOwor
ICAgIGludCBtX21hc2tTYW1wbGVyTG9jYXRpb247CisgICAgaW50IG1fYWxwaGFMb2NhdGlvbjsK
K307CisKKyNpZiBQTEFURk9STShTS0lBKSAmJiBTS19CMzJfU0hJRlQKK3R5cGVkZWYgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGEgRnJhZ21lbnRTaGFkZXJUZXhBbHBoYTsKKyNlbHNlCit0eXBl
ZGVmIEZyYWdtZW50U2hhZGVyQkdSQVRleEFscGhhIEZyYWdtZW50U2hhZGVyVGV4QWxwaGE7Cisj
ZW5kaWYKKworY2xhc3MgRnJhZ21lbnRTaGFkZXJZVVYgeworcHVibGljOgorICAgIEZyYWdtZW50
U2hhZGVyWVVWKCk7CisgICAgY29uc3QgY2hhciogZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CisK
KyAgICBib29sIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKwor
ICAgIGludCB5VGV4dHVyZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV95VGV4dHVyZUxvY2F0
aW9uOyB9CisgICAgaW50IHVUZXh0dXJlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3VUZXh0
dXJlTG9jYXRpb247IH0KKyAgICBpbnQgdlRleHR1cmVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdlRleHR1cmVMb2NhdGlvbjsgfQorICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CisgICAgaW50IHl1dkFscGhhTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3l1dkFscGhhTG9jYXRpb247IH0KKyAgICBpbnQgY2NNYXRyaXhMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY2NNYXRyaXhMb2NhdGlvbjsgfQorICAgIGludCBzaWduQWRq
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NpZ25BZGpMb2NhdGlvbjsgfQorCitwcml2YXRl
OgorICAgIGludCBtX3lUZXh0dXJlTG9jYXRpb247CisgICAgaW50IG1fdVRleHR1cmVMb2NhdGlv
bjsKKyAgICBpbnQgbV92VGV4dHVyZUxvY2F0aW9uOworICAgIGludCBtX2FscGhhTG9jYXRpb247
CisgICAgaW50IG1feXV2QWxwaGFMb2NhdGlvbjsKKyAgICBpbnQgbV9jY01hdHJpeExvY2F0aW9u
OworICAgIGludCBtX3NpZ25BZGpMb2NhdGlvbjsKK307CisKK2NsYXNzIEZyYWdtZW50U2hhZGVy
Q29sb3IgeworcHVibGljOgorICAgIEZyYWdtZW50U2hhZGVyQ29sb3IoKTsKKyAgICBjb25zdCBj
aGFyKiBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKKworICAgIGJvb2wgaW5pdChHcmFwaGljc0Nv
bnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIGludCBjb2xvckxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9jb2xvckxvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fY29s
b3JMb2NhdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNo
cm9taXVtLmNwcAppbmRleCA0MWNkMTgwMmQwMjcyYWFhZWVjYzBlNDUxNzhlYWNjYjdlNjRlYjY1
Li4zNmRlMGI0NzMxZGY4ZmYyMWUxNjIyYzczZTM2NTBiYzc2MDkyMmJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Zp
ZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUxLDEyNSArNTEsNiBAQCBjb25zdCBmbG9hdCBWaWRl
b0xheWVyQ2hyb21pdW06Onl1djJSR0JbOV0gPSB7CiAgICAgMS40MDNmLCAtLjcxNGYsIDAuZiwK
IH07CiAKLVZpZGVvTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjpTaGFyZWRWYWx1ZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAs
IG1feXV2U2hhZGVyUHJvZ3JhbSgwKQotICAgICwgbV9yZ2JhU2hhZGVyUHJvZ3JhbSgwKQotICAg
ICwgbV95dXZTaGFkZXJNYXRyaXhMb2NhdGlvbigwKQotICAgICwgbV95dXZXaWR0aFNjYWxlRmFj
dG9yTG9jYXRpb24oMCkKLSAgICAsIG1fcmdiYVNoYWRlck1hdHJpeExvY2F0aW9uKDApCi0gICAg
LCBtX3JnYmFXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oMCkKLSAgICAsIG1fY2NNYXRyaXhMb2Nh
dGlvbigwKQotICAgICwgbV9zaWduQWRqTG9jYXRpb24oMCkKLSAgICAsIG1feVRleHR1cmVMb2Nh
dGlvbigwKQotICAgICwgbV91VGV4dHVyZUxvY2F0aW9uKDApCi0gICAgLCBtX3ZUZXh0dXJlTG9j
YXRpb24oMCkKLSAgICAsIG1fcmdiYVRleHR1cmVMb2NhdGlvbigwKQotICAgICwgbV95dXZBbHBo
YUxvY2F0aW9uKDApCi0gICAgLCBtX3JnYmFBbHBoYUxvY2F0aW9uKDApCi0gICAgLCBtX2luaXRp
YWxpemVkKGZhbHNlKQotewotICAgIC8vIEZyYW1lIHRleHR1cmVzIGFyZSBhbGxvY2F0ZWQgYmFz
ZWQgb24gc3RyaWRlIHdpZHRoLCBub3QgdmlzaWJsZSBmcmFtZQotICAgIC8vIHdpZHRoLCBzdWNo
IHRoYXQgdGhlcmUgaXMgYSBndWFyYW50ZWUgdGhhdCB0aGUgZnJhbWUgcm93cyBsaW5lIHVwCi0g
ICAgLy8gcHJvcGVybHkgYW5kIGFyZSBub3Qgc2hpZnRlZCBieSAoc3RyaWRlIC0gd2lkdGgpIHBp
eGVscy4gVG8gaGlkZSB0aGUKLSAgICAvLyAicGFkZGluZyIgcGl4ZWxzIGJldHdlZW4gdGhlIGVk
Z2Ugb2YgdGhlIHZpc2libGUgZnJhbWUgd2lkdGggYW5kIHRoZSBlbmQKLSAgICAvLyBvZiB0aGUg
c3RyaWRlLCB3ZSBnaXZlIHRoZSBzaGFkZXIgYSB3aWR0aFNjYWxlRmFjdG9yICg8PTEuMCkgb2Yg
aG93IG11Y2gKLSAgICAvLyBvZiB0aGUgd2lkdGggb2YgdGhlIHRleHR1cmUgc2hvdWxkIGJlIHNo
b3duIHdoZW4gZHJhd2luZyB0aGUgdGV4dHVyZSBvbnRvCi0gICAgLy8gdGhlIHZlcnRpY2VzLgot
ICAgIGNoYXIgdmVydGV4U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7ICAgICBcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247ICAg
XG4iCi0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOyAgIFxuIgotICAgICAgICAi
dW5pZm9ybSBtYXQ0IG1hdHJpeDsgICAgICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2
X3RleENvb3JkOyAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHdpZHRoU2NhbGVGYWN0
b3I7ICBcbiIKLSAgICAgICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgXG4iCi0gICAg
ICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICBnbF9Qb3Np
dGlvbiA9IG1hdHJpeCAqIGFfcG9zaXRpb247IFxuIgotICAgICAgICAiICB2X3RleENvb3JkID0g
dmVjMih3aWR0aFNjYWxlRmFjdG9yICogYV90ZXhDb29yZC54LCBhX3RleENvb3JkLnkpOyBcbiIK
LSAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotCi0gICAgY2hhciB5
dXZGcmFnbWVudFNoYWRlclN0cmluZ1tdID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAi
dmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIK
LSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHlfdGV4dHVyZTsgICAgICAgICAgICAgICAgICAg
ICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7ICAgICAgICAg
ICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdl90ZXh0dXJl
OyAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgYWxw
aGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3Jt
IGZsb2F0IGFkajsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAg
ICAidW5pZm9ybSBtYXQzIGNjX21hdHJpeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
biIKLSAgICAgICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICBmbG9hdCB5ID0gdGV4dHVyZTJEKHlf
dGV4dHVyZSwgdl90ZXhDb29yZCkueDsgICAgICBcbiIKLSAgICAgICAgIiAgZmxvYXQgdSA9IHRl
eHR1cmUyRCh1X3RleHR1cmUsIHZfdGV4Q29vcmQpLnggLSBhZGo7IFxuIgotICAgICAgICAiICBm
bG9hdCB2ID0gdGV4dHVyZTJEKHZfdGV4dHVyZSwgdl90ZXhDb29yZCkueCAtIGFkajsgXG4iCi0g
ICAgICAgICIgIHZlYzMgcmdiID0gY2NfbWF0cml4ICogdmVjMyh5LCB1LCB2KTsgICAgICAgICAg
ICAgIFxuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHJnYiwgZmxvYXQoMSkpICog
YWxwaGE7ICAgICAgICBcbiIKLSAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotCi0gICAgY2hhciByZ2JhRnJhZ21lbnRTaGFk
ZXJTdHJpbmdbXSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxl
cjJEIHJnYmFfdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlm
b3JtIGZsb2F0IGFscGhhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAg
ICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcbiIKLSAgICAgICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQocmdi
YV90ZXh0dXJlLCB2ZWMyKHZfdGV4Q29vcmQueCwgZmxvYXQoMSkgLSB2X3RleENvb3JkLnkpKTsg
XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQodGV4Q29sb3IueCwgdGV4Q29sb3Iu
eSwgdGV4Q29sb3IueiwgdGV4Q29sb3IudykgKiBhbHBoYTsgXG4iCi0gICAgICAgICJ9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLQotICAg
IG1fcmdiYVNoYWRlclByb2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29udGV4dCwgdmVy
dGV4U2hhZGVyU3RyaW5nLCByZ2JhRnJhZ21lbnRTaGFkZXJTdHJpbmcpOwotICAgIGlmICghbV9y
Z2JhU2hhZGVyUHJvZ3JhbSkgewotICAgICAgICBMT0dfRVJST1IoIlZpZGVvTGF5ZXJDaHJvbWl1
bTogRmFpbGVkIHRvIGNyZWF0ZSByZ2JhIHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBtX3l1dlNoYWRlclByb2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFt
KG1fY29udGV4dCwgdmVydGV4U2hhZGVyU3RyaW5nLCB5dXZGcmFnbWVudFNoYWRlclN0cmluZyk7
Ci0gICAgaWYgKCFtX3l1dlNoYWRlclByb2dyYW0pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJWaWRl
b0xheWVyQ2hyb21pdW06IEZhaWxlZCB0byBjcmVhdGUgeXV2IHNoYWRlciBwcm9ncmFtIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3l1dlNoYWRlck1hdHJpeExvY2F0aW9uID0g
bV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZTaGFkZXJQcm9ncmFtLCAibWF0cml4
Iik7Ci0gICAgbV95dXZXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihtX3l1dlNoYWRlclByb2dyYW0sICJ3aWR0aFNjYWxlRmFjdG9yIik7Ci0g
ICAgbV95VGV4dHVyZUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95
dXZTaGFkZXJQcm9ncmFtLCAieV90ZXh0dXJlIik7Ci0gICAgbV91VGV4dHVyZUxvY2F0aW9uID0g
bV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZTaGFkZXJQcm9ncmFtLCAidV90ZXh0
dXJlIik7Ci0gICAgbV92VGV4dHVyZUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24obV95dXZTaGFkZXJQcm9ncmFtLCAidl90ZXh0dXJlIik7Ci0gICAgbV9jY01hdHJpeExv
Y2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZTaGFkZXJQcm9ncmFt
LCAiY2NfbWF0cml4Iik7Ci0gICAgbV9zaWduQWRqTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihtX3l1dlNoYWRlclByb2dyYW0sICJhZGoiKTsKLSAgICBtX3l1dkFscGhh
TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1dlNoYWRlclByb2dy
YW0sICJhbHBoYSIpOwotCi0gICAgQVNTRVJUKG1feXV2U2hhZGVyTWF0cml4TG9jYXRpb24gIT0g
LTEpOwotICAgIEFTU0VSVChtX3l1dldpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiAhPSAtMSk7Ci0g
ICAgQVNTRVJUKG1feVRleHR1cmVMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fdVRleHR1
cmVMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fdlRleHR1cmVMb2NhdGlvbiAhPSAtMSk7
Ci0gICAgQVNTRVJUKG1fY2NNYXRyaXhMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fc2ln
bkFkakxvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV95dXZBbHBoYUxvY2F0aW9uICE9IC0x
KTsKLQotICAgIG1fcmdiYVNoYWRlck1hdHJpeExvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24obV9yZ2JhU2hhZGVyUHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIG1fcmdiYVRl
eHR1cmVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcmdiYVNoYWRl
clByb2dyYW0sICJyZ2JhX3RleHR1cmUiKTsKLSAgICBtX3JnYmFXaWR0aFNjYWxlRmFjdG9yTG9j
YXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3JnYmFTaGFkZXJQcm9ncmFt
LCAid2lkdGhTY2FsZUZhY3RvciIpOwotICAgIG1fcmdiYUFscGhhTG9jYXRpb24gPSBtX2NvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3JnYmFTaGFkZXJQcm9ncmFtLCAiYWxwaGEiKTsKLQot
ICAgIEFTU0VSVChtX3JnYmFTaGFkZXJNYXRyaXhMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJU
KG1fcmdiYVRleHR1cmVMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fcmdiYVdpZHRoU2Nh
bGVGYWN0b3JMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fcmdiYUFscGhhTG9jYXRpb24g
IT0gLTEpOwotCi0gICAgbV9pbml0aWFsaXplZCA9IHRydWU7Ci19Ci0KLVZpZGVvTGF5ZXJDaHJv
bWl1bTo6U2hhcmVkVmFsdWVzOjp+U2hhcmVkVmFsdWVzKCkKLXsKLSAgICBpZiAobV95dXZTaGFk
ZXJQcm9ncmFtKQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVByb2dy
YW0obV95dXZTaGFkZXJQcm9ncmFtKSk7Ci0gICAgaWYgKG1fcmdiYVNoYWRlclByb2dyYW0pCi0g
ICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShtX3JnYmFTaGFk
ZXJQcm9ncmFtKSk7Ci19Ci0KIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBWaWRlb0xh
eWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVv
RnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiB7CkBAIC0zMzAsMTYgKzIxMSwxOCBAQCB2b2lkIFZp
ZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChs
YXllclJlbmRlcmVyKCkpOwotICAgIGNvbnN0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFs
dWVzKiBzdiA9IGxheWVyUmVuZGVyZXIoKS0+dmlkZW9MYXllclNoYXJlZFZhbHVlcygpOwotICAg
IEFTU0VSVChzdiAmJiBzdi0+aW5pdGlhbGl6ZWQoKSk7CisgICAgY29uc3QgUkdCQVByb2dyYW0q
IHJnYmFQcm9ncmFtID0gbGF5ZXJSZW5kZXJlcigpLT52aWRlb0xheWVyUkdCQVByb2dyYW0oKTsK
KyAgICBBU1NFUlQocmdiYVByb2dyYW0gJiYgcmdiYVByb2dyYW0tPmluaXRpYWxpemVkKCkpOwor
ICAgIGNvbnN0IFlVVlByb2dyYW0qIHl1dlByb2dyYW0gPSBsYXllclJlbmRlcmVyKCktPnZpZGVv
TGF5ZXJZVVZQcm9ncmFtKCk7CisgICAgQVNTRVJUKHl1dlByb2dyYW0gJiYgeXV2UHJvZ3JhbS0+
aW5pdGlhbGl6ZWQoKSk7CiAKICAgICBzd2l0Y2ggKG1fZnJhbWVGb3JtYXQpIHsKICAgICBjYXNl
IFZpZGVvRnJhbWVDaHJvbWl1bTo6WVYxMjoKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1bTo6
WVYxNjoKLSAgICAgICAgZHJhd1lVVihzdik7CisgICAgICAgIGRyYXdZVVYoeXV2UHJvZ3JhbSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9taXVtOjpSR0JBOgotICAg
ICAgICBkcmF3UkdCQShzdik7CisgICAgICAgIGRyYXdSR0JBKHJnYmFQcm9ncmFtKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBvdGhl
ciBwYXRocy4KQEAgLTM1OSw3ICsyNDIsNyBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cmVs
ZWFzZUN1cnJlbnRGcmFtZSgpCiAgICAgcmVzZXRGcmFtZVBhcmFtZXRlcnMoKTsKIH0KIAotdm9p
ZCBWaWRlb0xheWVyQ2hyb21pdW06OmRyYXdZVVYoY29uc3QgU2hhcmVkVmFsdWVzKiBzdikKK3Zv
aWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3WVVWKGNvbnN0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6
WVVWUHJvZ3JhbSogcHJvZ3JhbSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9
IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7CkBAIC0zNjksNDkgKzI1Miw1
MSBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhd1lVVihjb25zdCBTaGFyZWRWYWx1ZXMq
IHN2KQogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFMykpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hy
b21pdW06OnZQbGFuZV0pKTsKIAotICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT55
dXZTaGFkZXJQcm9ncmFtKCkpOworICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHByb2dy
YW0tPnByb2dyYW0oKSk7CiAgICAgdW5zaWduZWQgZnJhbWVXaWR0aCA9IG1fZnJhbWVTaXplc1tW
aWRlb0ZyYW1lQ2hyb21pdW06OnlQbGFuZV0ud2lkdGgoKTsKICAgICB1bnNpZ25lZCB0ZXh0dXJl
V2lkdGggPSBtX3RleHR1cmVTaXplc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnlQbGFuZV0ud2lkdGgo
KTsKICAgICBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZyYW1l
V2lkdGgpIC8gdGV4dHVyZVdpZHRoOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3Jt
MWYoc3YtPnl1dldpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbigpLCB3aWR0aFNjYWxlRmFjdG9yKSk7
CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xZihwcm9ncmFtLT52ZXJ0ZXhTaGFk
ZXIoKS53aWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oKSwgd2lkdGhTY2FsZUZhY3RvcikpOwogCi0g
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShzdi0+eVRleHR1cmVMb2NhdGlvbigp
LCAxKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShzdi0+dVRleHR1cmVM
b2NhdGlvbigpLCAyKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShzdi0+
dlRleHR1cmVMb2NhdGlvbigpLCAzKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZv
cm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnlUZXh0dXJlTG9jYXRpb24oKSwgMSkpOwor
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFk
ZXIoKS51VGV4dHVyZUxvY2F0aW9uKCksIDIpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkudlRleHR1cmVMb2NhdGlvbigpLCAz
KSk7CiAKICAgICAvLyBUaGlzIHZhbHVlIG9mIDAuNSBtYXBzIHRvIDEyOC4gSXQgaXMgdXNlZCBp
biB0aGUgWVVWIHRvIFJHQiBjb252ZXJzaW9uCiAgICAgLy8gZm9ybXVsYSB0byB0dXJuIHVuc2ln
bmVkIHUgYW5kIHYgdmFsdWVzIHRvIHNpZ25lZCB1IGFuZCB2IHZhbHVlcy4KICAgICAvLyBUaGlz
IGlzIGxvYWRlZCBhcyBhIHVuaWZvcm0gYmVjYXVzZSBjZXJ0YWluIGRyaXZlcnMgaGF2ZSBwcm9i
bGVtcwogICAgIC8vIHJlYWRpbmcgbGl0ZXJhbCBmbG9hdCB2YWx1ZXMuCi0gICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnVuaWZvcm0xZihzdi0+c2lnbkFkakxvY2F0aW9uKCksIDAuNSkpOworICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KS5zaWduQWRqTG9jYXRpb24oKSwgMC41KSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dW5pZm9ybU1hdHJpeDNmdihzdi0+Y2NNYXRyaXhMb2NhdGlvbigpLCAwLCBjb25zdF9jYXN0PGZs
b2F0Kj4oeXV2MlJHQiksIDEpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybU1h
dHJpeDNmdihwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmNjTWF0cml4TG9jYXRpb24oKSwgMCwg
Y29uc3RfY2FzdDxmbG9hdCo+KHl1djJSR0IpLCAxKSk7CiAKICAgICBkcmF3VGV4dHVyZWRRdWFk
KGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLCBkcmF3VHJhbnNm
b3JtKCksCiAgICAgICAgICAgICAgICAgICAgICBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5o
ZWlnaHQoKSwgZHJhd09wYWNpdHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHN2LT55dXZTaGFk
ZXJNYXRyaXhMb2NhdGlvbigpLCBzdi0+eXV2QWxwaGFMb2NhdGlvbigpKTsKKyAgICAgICAgICAg
ICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisgICAg
ICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24o
KSk7CiAKICAgICAvLyBSZXNldCBhY3RpdmUgdGV4dHVyZSBiYWNrIHRvIHRleHR1cmUgMC4KICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRTApKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmRyYXdSR0JBKGNvbnN0
IFNoYXJlZFZhbHVlcyogc3YpCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhd1JHQkEoY29u
c3QgVmlkZW9MYXllckNocm9taXVtOjpSR0JBUHJvZ3JhbSogcHJvZ3JhbSkKIHsKICAgICBHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CiAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkUwKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6cmdiUGxh
bmVdKSk7CiAKLSAgICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihzdi0+cmdiYVNoYWRlclBy
b2dyYW0oKSk7CisgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3Jh
bSgpKTsKICAgICB1bnNpZ25lZCBmcmFtZVdpZHRoID0gbV9mcmFtZVNpemVzW1ZpZGVvRnJhbWVD
aHJvbWl1bTo6cmdiUGxhbmVdLndpZHRoKCk7CiAgICAgdW5zaWduZWQgdGV4dHVyZVdpZHRoID0g
bV90ZXh0dXJlU2l6ZXNbVmlkZW9GcmFtZUNocm9taXVtOjpyZ2JQbGFuZV0ud2lkdGgoKTsKICAg
ICBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZyYW1lV2lkdGgp
IC8gdGV4dHVyZVdpZHRoOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWYoc3Yt
PnJnYmFXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oKSwgd2lkdGhTY2FsZUZhY3RvcikpOworICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCku
d2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCksIHdpZHRoU2NhbGVGYWN0b3IpKTsKIAotICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc3YtPnJnYmFUZXh0dXJlTG9jYXRpb24oKSwg
MCkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCiAgICAgZHJhd1RleHR1cmVkUXVh
ZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgZHJhd1RyYW5z
Zm9ybSgpLAogICAgICAgICAgICAgICAgICAgICAgYm91bmRzKCkud2lkdGgoKSwgYm91bmRzKCku
aGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksCi0gICAgICAgICAgICAgICAgICAgICBzdi0+cmdiYVNo
YWRlck1hdHJpeExvY2F0aW9uKCksIHN2LT5yZ2JhQWxwaGFMb2NhdGlvbigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisg
ICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRp
b24oKSk7CiB9CiAKIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpyZXNldEZyYW1lUGFyYW1ldGVy
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGFjM2JjYTlhNmRiOTBkNmVhOTk4
MjNjODY2MGE0YjczYTg1YmFkYTMuLjdhNzY0ZTg4NzhlOGMwMTg3MWQ1NmM5OTE0OGNlMzZkODA0
MjUwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBAIC01Myw0MyArNTMsOCBAQCBw
dWJsaWM6CiAgICAgLy8gcHV0Q3VycmVudEZyYW1lKCkgbXVzdCBiZSBjYWxsZWQgdG8gcmV0dXJu
IHRoZSBmcmFtZSBjdXJyZW50bHkgaGVsZC4KICAgICB2b2lkIHJlbGVhc2VDdXJyZW50RnJhbWUo
KTsKIAotICAgIGNsYXNzIFNoYXJlZFZhbHVlcyB7Ci0gICAgcHVibGljOgotICAgICAgICBleHBs
aWNpdCBTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKLSAgICAgICAgflNoYXJlZFZh
bHVlcygpOwotICAgICAgICB1bnNpZ25lZCB5dXZTaGFkZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1
cm4gbV95dXZTaGFkZXJQcm9ncmFtOyB9Ci0gICAgICAgIHVuc2lnbmVkIHJnYmFTaGFkZXJQcm9n
cmFtKCkgY29uc3QgeyByZXR1cm4gbV9yZ2JhU2hhZGVyUHJvZ3JhbTsgfQotICAgICAgICBpbnQg
eXV2U2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3l1dlNoYWRlck1hdHJp
eExvY2F0aW9uOyB9Ci0gICAgICAgIGludCByZ2JhU2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3JnYmFTaGFkZXJNYXRyaXhMb2NhdGlvbjsgfQotICAgICAgICBpbnQgeXV2
V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV95dXZXaWR0aFNjYWxl
RmFjdG9yTG9jYXRpb247IH0KLSAgICAgICAgaW50IHJnYmFXaWR0aFNjYWxlRmFjdG9yTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3JnYmFXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb247IH0KLSAg
ICAgICAgaW50IHlUZXh0dXJlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3lUZXh0dXJlTG9j
YXRpb247IH0KLSAgICAgICAgaW50IHVUZXh0dXJlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3VUZXh0dXJlTG9jYXRpb247IH0KLSAgICAgICAgaW50IHZUZXh0dXJlTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3ZUZXh0dXJlTG9jYXRpb247IH0KLSAgICAgICAgaW50IHl1dkFscGhhTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3l1dkFscGhhTG9jYXRpb247IH0KLSAgICAgICAgaW50
IHJnYmFBbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZ2JhQWxwaGFMb2NhdGlvbjsg
fQotICAgICAgICBpbnQgcmdiYVRleHR1cmVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmdi
YVRleHR1cmVMb2NhdGlvbjsgfQotICAgICAgICBpbnQgY2NNYXRyaXhMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY2NNYXRyaXhMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2lnbkFkakxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaWduQWRqTG9jYXRpb247IH0KLSAgICAgICAgYm9vbCBp
bml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7IH0KLSAgICBwcml2YXRl
OgotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwotICAgICAgICB1bnNpZ25l
ZCBtX3l1dlNoYWRlclByb2dyYW07Ci0gICAgICAgIHVuc2lnbmVkIG1fcmdiYVNoYWRlclByb2dy
YW07Ci0gICAgICAgIGludCBtX3l1dlNoYWRlck1hdHJpeExvY2F0aW9uOwotICAgICAgICBpbnQg
bV95dXZXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb247Ci0gICAgICAgIGludCBtX3JnYmFTaGFkZXJN
YXRyaXhMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fcmdiYVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlv
bjsKLSAgICAgICAgaW50IG1fY2NNYXRyaXhMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fc2lnbkFk
akxvY2F0aW9uOwotICAgICAgICBpbnQgbV95VGV4dHVyZUxvY2F0aW9uOwotICAgICAgICBpbnQg
bV91VGV4dHVyZUxvY2F0aW9uOwotICAgICAgICBpbnQgbV92VGV4dHVyZUxvY2F0aW9uOwotICAg
ICAgICBpbnQgbV9yZ2JhVGV4dHVyZUxvY2F0aW9uOwotICAgICAgICBpbnQgbV95dXZBbHBoYUxv
Y2F0aW9uOwotICAgICAgICBpbnQgbV9yZ2JhQWxwaGFMb2NhdGlvbjsKLSAgICAgICAgYm9vbCBt
X2luaXRpYWxpemVkOwotICAgIH07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhT
aGFkZXJQb3NUZXhTdHJldGNoLCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IFJHQkFQ
cm9ncmFtOworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4U3Ry
ZXRjaCwgRnJhZ21lbnRTaGFkZXJZVVY+IFlVVlByb2dyYW07CiAKIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291cmNlcygpOwpAQCAtMTAzLDggKzY4LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVwZGF0ZVJHQkFDb250ZW50cyhHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0
IFZpZGVvRnJhbWVDaHJvbWl1bSopOwogICAgIHZvaWQgYWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBkaW1lbnNpb25z
LCB1bnNpZ25lZCB0ZXh0dXJlRm9ybWF0KTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0QqLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGRpbWVuc2lv
bnMsIHVuc2lnbmVkIHRleHR1cmVGb3JtYXQsIGNvbnN0IHZvaWQqIGRhdGEpOwotICAgIHZvaWQg
ZHJhd1lVVihjb25zdCBTaGFyZWRWYWx1ZXMqKTsKLSAgICB2b2lkIGRyYXdSR0JBKGNvbnN0IFNo
YXJlZFZhbHVlcyopOworICAgIHZvaWQgZHJhd1lVVihjb25zdCBZVVZQcm9ncmFtKik7CisgICAg
dm9pZCBkcmF3UkdCQShjb25zdCBSR0JBUHJvZ3JhbSopOwogICAgIHZvaWQgcmVzZXRGcmFtZVBh
cmFtZXRlcnMoKTsKICAgICB2b2lkIHNhdmVDdXJyZW50RnJhbWUoVmlkZW9GcmFtZUNocm9taXVt
Kik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83020</attachid>
            <date>2011-02-18 15:05:57 -0800</date>
            <delta_ts>2011-02-18 15:29:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54484-20110218150556.patch</filename>
            <type>text/plain</type>
            <size>115018</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzkwMDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NTQ5MjkxZGVkYmI4NmJm
YjcxYjRlZDlmZWUxZDQzZDg2YTU1OWY4Li41NDI0M2ZkOWUxYmJjNzcyMTdhMzA5NzIzMGRmMDVj
M2ZlYzI5ZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI3IEBACisyMDExLTAyLTE1ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBDbGVhbiB1cCBzaGFkZXIgY29kZSBm
cm9tIExheWVyQ2hyb21pdW0gY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQ0ODQKKworICAgICAgICBUaGlzIGlzIGEgcmVmYWN0b3Jpbmcg
YW5kIHRoZXJlIHNob3VsZCBiZSBubyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKyAgICAgICAg
QWxsIHNoYWRlciBjb2RlIGlzIHB1bGxlZCBvdXQgaW50byBjbGFzc2VzIGluIFNoYWRlckNocm9t
aXVtLgorICAgICAgICBUaGUgU2hhcmVkVmFsdWVzIGNsYXNzZXMgYXJlIG5vdyB0dXJuZWQgaW50
byBQcm9ncmFtQmluZGluZywgb25lIHBlcgorICAgICAgICBzaGFkZXIgcHJvZ3JhbS4gIFRoZXNl
IGNvbnRhaW4gc2hhZGVyIGNsYXNzZXMgdGhhdCBrbm93IGFib3V0IHdoYXQKKyAgICAgICAgdmFy
aWFibGVzIHRoZXkgY2FuIGJpbmQuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllckNocm9taXVtOjpkcmF3KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmRyYXcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9tZXRyeUJpbmRpbmc6Okdlb21ldHJ5QmluZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpHZW9tZXRyeUJpbmRpbmc6On5HZW9tZXRyeUJpbmRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbWV0cnlCaW5kaW5nOjpwcmVwYXJlRm9yRHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxh
eWVyQ2hyb21pdW0uaC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6aW5pdGlh
bGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbWV0cnlCaW5kaW5nOjpjb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6cXVhZFZlcnRpY2VzVmJvKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6cXVhZEVsZW1lbnRzVmJvKToKKyAgICAgICAg
KFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6cG9zaXRpb25BdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9tZXRyeUJpbmRpbmc6OnRleENvb3JkQXR0cmliTG9jYXRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9yZGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRP
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51
cFNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpzaGFyZWRHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmJvcmRlclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpjb250ZW50TGF5ZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6Y2FudmFzTGF5ZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllclJHQkFQcm9ncmFtKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllcllVVlByb2dyYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpwbHVnaW5MYXllclByb2dy
YW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJm
YWNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJl
bmRlclN1cmZhY2VNYXNrUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OnRpbGVyUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGls
ZXJDaHJvbWl1bTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06
OmRyYXdUZXh0dXJlZFF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGlsZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5
ZXJDaHJvbWl1bTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UGx1Z2luTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1Byb2dyYW1CaW5kaW5nLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFt
QmluZGluZ0Jhc2U6OlByb2dyYW1CaW5kaW5nQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9n
cmFtQmluZGluZ0Jhc2U6On5Qcm9ncmFtQmluZGluZ0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
UHJvZ3JhbUJpbmRpbmdCYXNlOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5k
aW5nQmFzZTo6bG9hZFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGluZ0Jh
c2U6OmNyZWF0ZVNoYWRlclByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1Byb2dyYW1CaW5kaW5nLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jh
bUJpbmRpbmdCYXNlOjpwcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5n
QmFzZTo6aW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3JhbUJpbmRpbmc6OlBy
b2dyYW1CaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nOjp2ZXJ0ZXhT
aGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3JhbUJpbmRpbmc6OmZyYWdtZW50U2hhZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpkcmF3
U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3Vy
ZmFjZUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hh
ZGVyQ2hyb21pdW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBv
c1RleDo6VmVydGV4U2hhZGVyUG9zVGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRl
clBvc1RleDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXg6Omdl
dFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZT
dHJldGNoOjpWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6
VmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlZlcnRleFNoYWRlclBvczo6VmVydGV4U2hhZGVyUG9zKToKKyAgICAgICAgKFdl
YkNvcmU6OlZlcnRleFNoYWRlclBvczo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhT
aGFkZXJQb3M6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFk
ZXJQb3NUZXhUcmFuc2Zvcm06OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06OmluaXQpOgorICAgICAgICAo
V2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjpnZXRTaGFkZXJTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUJpbmRpbmc6OkZyYWdtZW50VGV4QWxw
aGFCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4QWxwaGFCaW5kaW5nOjpp
bml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYTo6
Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRl
eEFscGhhOjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFk
ZXJCR1JBVGV4QWxwaGE6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFn
bWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6Omlu
aXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrOjpn
ZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJZVVZWaWRl
bzo6RnJhZ21lbnRTaGFkZXJZVVZWaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNo
YWRlcllVVlZpZGVvOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyWVVW
VmlkZW86OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRl
ckNvbG9yOjpGcmFnbWVudFNoYWRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
U2hhZGVyQ29sb3I6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDb2xv
cjo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRl
clBvc1RleDo6bWF0cml4TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVy
UG9zVGV4WVVWU3RyZXRjaDo6bWF0cml4TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmVy
dGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6eVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoOjp1dldpZHRoU2Nh
bGVGYWN0b3JMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3M6Om1h
dHJpeExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleFRyYW5z
Zm9ybTo6bWF0cml4TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9z
VGV4VHJhbnNmb3JtOjp0ZXhUcmFuc2Zvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudFRleEFscGhhQmluZGluZzo6YWxwaGFMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudFRleEFscGhhQmluZGluZzo6c2FtcGxlckxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6YWxwaGFMb2NhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6OnNhbXBsZXJM
b2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1h
c2s6Om1hc2tTYW1wbGVyTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFk
ZXJZVVZWaWRlbzo6eVRleHR1cmVMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVu
dFNoYWRlcllVVlZpZGVvOjp1VGV4dHVyZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YWdtZW50U2hhZGVyWVVWVmlkZW86OnZUZXh0dXJlTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhZ21lbnRTaGFkZXJZVVZWaWRlbzo6YWxwaGFMb2NhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFnbWVudFNoYWRlcllVVlZpZGVvOjpjY01hdHJpeExvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyWVVWVmlkZW86OnNpZ25BZGpMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNvbG9yOjpjb2xvckxvY2F0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpkcmF3KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhd1lVVik6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0xheWVyQ2hyb21pdW06OmRyYXdSR0JBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKwogMjAxMS0wMi0xOCAgQW5kcmV5IEFk
YWlraW4gIDxhYW5kcmV5QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjMGE3YmQ0YmE0ZjkyM2I4YTg0M2RiNjI0ZjE0
ZWI5ZDJiY2M5MjgwLi42Y2E1NGMxOGE1YWJjNzc5ZDRmN2U0ODFmNTU0ZmNiOGRlY2ZiZDc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0yNTkwLDYgKzI1OTAsOCBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFMaW51eC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9t
aXVtV2luLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21l
dHJ5QmluZGluZy5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dlb21ldHJ5QmluZGluZy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HTEVTMkNhbnZhcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dMRVMyQ2FudmFzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dseXBoUGFnZVRyZWVOb2RlQ2hyb21pdW1XaW4uY3BwJywKQEAgLTI2MTUsOCArMjYx
NywxMiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3Jt
SWNvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5M
YXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5j
cHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9t
aXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NpbXBsZUZv
bnREYXRhQ2hyb21pdW1XaW4uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9TaW1wbGVGb250RGF0YUxpbnV4LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5
ZXJDaHJvbWl1bS5jcHAKaW5kZXggNGFlZjI1YjE1YWVmZTk0NDA1MjIxNzQ0NGI5YWRjYTBjZjJh
MWZkZi4uNDIyMzg3NjU5YjM3ZjJiMjY2Mzc3NjRiOGZkMjljNzVjNTg1OTI1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQxLDYwICs0MSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdW5zaWduZWQgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6bV9zaGFkZXJQcm9ncmFt
SWQgPSAwOwogCi1DYW52YXNMYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXM6OlNoYXJlZFZhbHVl
cyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQot
ICAgICwgbV9jYW52YXNTaGFkZXJQcm9ncmFtKDApCi0gICAgLCBtX3NoYWRlclNhbXBsZXJMb2Nh
dGlvbigtMSkKLSAgICAsIG1fc2hhZGVyTWF0cml4TG9jYXRpb24oLTEpCi0gICAgLCBtX3NoYWRl
ckFscGhhTG9jYXRpb24oLTEpCi0gICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQotewotICAgIGNo
YXIgdmVydGV4U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3Np
dGlvbjsgICBcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7ICAgXG4iCi0g
ICAgICAgICJ1bmlmb3JtIG1hdDQgbWF0cml4OyAgICAgICAgIFxuIgotICAgICAgICAidmFyeWlu
ZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICBcbiIKLSAgICAgICAgInZvaWQgbWFpbigpICAgICAgICAg
ICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgot
ICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IG1hdHJpeCAqIGFfcG9zaXRpb247IFxuIgotICAgICAg
ICAiICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsgICBcbiIKLSAgICAgICAgIn0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXG4iOwotCi0gICAgLy8gQ2FudmFzIGxheWVycyBuZWVkIHRvIGJl
IGZsaXBwZWQgdmVydGljYWxseSBhbmQgdGhlaXIgY29sb3JzIHNob3VsZG4ndCBiZQotICAgIC8v
IHN3aXp6bGVkLgotICAgIGNoYXIgZnJhZ21lbnRTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0g
ICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7ICAgICAgICAgICAg
ICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGFscGhhOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIHZl
YzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2ZWMyKHZfdGV4Q29vcmQueCwgMS4w
IC0gdl90ZXhDb29yZC55KSk7IFxuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRl
eENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9yLncpICogYWxwaGE7IFxu
IgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFxuIjsKLQotICAgIG1fY2FudmFzU2hhZGVyUHJvZ3JhbSA9IGNyZWF0ZVNoYWRlclBy
b2dyYW0obV9jb250ZXh0LCB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5n
KTsKLSAgICBpZiAoIW1fY2FudmFzU2hhZGVyUHJvZ3JhbSkgewotICAgICAgICBMT0dfRVJST1Io
IkNhbnZhc0xheWVyQ2hyb21pdW06IEZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIHByb2dyYW0iKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fc2hhZGVyU2FtcGxlckxvY2F0aW9uID0g
bV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9jYW52YXNTaGFkZXJQcm9ncmFtLCAic190
ZXh0dXJlIik7Ci0gICAgbV9zaGFkZXJNYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKG1fY2FudmFzU2hhZGVyUHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIG1fc2hh
ZGVyQWxwaGFMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fY2FudmFz
U2hhZGVyUHJvZ3JhbSwgImFscGhhIik7Ci0gICAgQVNTRVJUKG1fc2hhZGVyU2FtcGxlckxvY2F0
aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV9zaGFkZXJNYXRyaXhMb2NhdGlvbiAhPSAtMSk7Ci0g
ICAgQVNTRVJUKG1fc2hhZGVyQWxwaGFMb2NhdGlvbiAhPSAtMSk7Ci0KLSAgICBtX2luaXRpYWxp
emVkID0gdHJ1ZTsKLX0KLQotQ2FudmFzTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjp+U2hh
cmVkVmFsdWVzKCkKLXsKLSAgICBpZiAobV9jYW52YXNTaGFkZXJQcm9ncmFtKQotICAgICAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9jYW52YXNTaGFkZXJQcm9n
cmFtKSk7Ci19Ci0KIENhbnZhc0xheWVyQ2hyb21pdW06OkNhbnZhc0xheWVyQ2hyb21pdW0oR3Jh
cGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICA6IExheWVyQ2hyb21pdW0ob3duZXIpCiAg
ICAgLCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCkBAIC0xMDksMTYgKzU1LDE3IEBAIENhbnZhc0xh
eWVyQ2hyb21pdW06On5DYW52YXNMYXllckNocm9taXVtKCkKIHZvaWQgQ2FudmFzTGF5ZXJDaHJv
bWl1bTo6ZHJhdygpCiB7CiAgICAgQVNTRVJUKGxheWVyUmVuZGVyZXIoKSk7Ci0gICAgY29uc3Qg
Q2FudmFzTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzKiBzdiA9IGxheWVyUmVuZGVyZXIoKS0+
Y2FudmFzTGF5ZXJTaGFyZWRWYWx1ZXMoKTsKLSAgICBBU1NFUlQoc3YgJiYgc3YtPmluaXRpYWxp
emVkKCkpOworICAgIGNvbnN0IENhbnZhc0xheWVyQ2hyb21pdW06OlByb2dyYW0qIHByb2dyYW0g
PSBsYXllclJlbmRlcmVyKCktPmNhbnZhc0xheWVyUHJvZ3JhbSgpOworICAgIEFTU0VSVChwcm9n
cmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKICAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIG1fdGV4dHVyZUlkKSk7Ci0gICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIoc3YtPmNh
bnZhc1NoYWRlclByb2dyYW0oKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0x
aShzdi0+c2hhZGVyU2FtcGxlckxvY2F0aW9uKCksIDApKTsKKyAgICBsYXllclJlbmRlcmVyKCkt
PnVzZVNoYWRlcihwcm9ncmFtLT5wcm9ncmFtKCkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwg
MCkpOwogICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9q
ZWN0aW9uTWF0cml4KCksIGRyYXdUcmFuc2Zvcm0oKSwKICAgICAgICAgICAgICAgICAgICAgIGJv
dW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdodCgpLCBkcmF3T3BhY2l0eSgpLAotICAgICAg
ICAgICAgICAgICAgICAgc3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCksIHN2LT5zaGFkZXJBbHBo
YUxvY2F0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVy
KCkubWF0cml4TG9jYXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNo
cm9taXVtLmgKaW5kZXggNjUyMGI1NWI2OGQzZjM0MmNmZDI0ZDY0MzRkMTcxNjFmNmNkMTBiZS4u
OTgxMWIwNjVjYmM2MTkwNjE1ODk4ZmE2ODRjYmEzOWRjZjhhMWU4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyQ2hyb21pdW0uaApAQCAtNDUsMjUgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGRyYXcoKTsKIAotICAgIGNsYXNzIFNoYXJlZFZhbHVlcyB7Ci0gICAgcHVibGljOgot
ICAgICAgICBleHBsaWNpdCBTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKLSAgICAg
ICAgflNoYXJlZFZhbHVlcygpOwotCi0gICAgICAgIHVuc2lnbmVkIGNhbnZhc1NoYWRlclByb2dy
YW0oKSBjb25zdCB7IHJldHVybiBtX2NhbnZhc1NoYWRlclByb2dyYW07IH0KLSAgICAgICAgaW50
IHNoYWRlclNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVyU2FtcGxlckxv
Y2F0aW9uOyB9Ci0gICAgICAgIGludCBzaGFkZXJNYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhZGVyTWF0cml4TG9jYXRpb247IH0KLSAgICAgICAgaW50IHNoYWRlckFscGhhTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlckFscGhhTG9jYXRpb247IH0KLSAgICAgICAg
Ym9vbCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7IH0KLQotICAg
IHByaXZhdGU6Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7Ci0gICAgICAg
IHVuc2lnbmVkIG1fY2FudmFzU2hhZGVyUHJvZ3JhbTsKLSAgICAgICAgaW50IG1fc2hhZGVyU2Ft
cGxlckxvY2F0aW9uOwotICAgICAgICBpbnQgbV9zaGFkZXJNYXRyaXhMb2NhdGlvbjsKLSAgICAg
ICAgaW50IG1fc2hhZGVyQWxwaGFMb2NhdGlvbjsKLSAgICAgICAgYm9vbCBtX2luaXRpYWxpemVk
OwotICAgIH07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgs
IEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUHJvZ3JhbTsKIAogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IENhbnZhc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBv
d25lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYTM4ZjZiZDIx
MjY5MGEyOGY5ODM4ZGI4OTYzNWE4NDE0Y2I2ZDc3ZS4uMmE3YzU5YjY5OWJmYzZjNTRlYzk5YWQ0
YzI3MzY2NGJiOWI3NDFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApA
QCAtNTAsODEgKzUwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db250ZW50TGF5ZXJD
aHJvbWl1bTo6U2hhcmVkVmFsdWVzOjpTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fY29udGVudFNoYWRlclBy
b2dyYW0oMCkKLSAgICAsIG1fc2hhZGVyU2FtcGxlckxvY2F0aW9uKC0xKQotICAgICwgbV9zaGFk
ZXJNYXRyaXhMb2NhdGlvbigtMSkKLSAgICAsIG1fc2hhZGVyQWxwaGFMb2NhdGlvbigtMSkKLSAg
ICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCi17Ci0gICAgLy8gU2hhZGVycyBmb3IgZHJhd2luZyB0
aGUgbGF5ZXIgY29udGVudHMuCi0gICAgY2hhciB2ZXJ0ZXhTaGFkZXJTdHJpbmdbXSA9Ci0gICAg
ICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOyAgIFxuIgotICAgICAgICAiYXR0cmlidXRl
IHZlYzIgYV90ZXhDb29yZDsgICBcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0NCBtYXRyaXg7ICAg
ICAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgIFxuIgotICAg
ICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gbWF0cml4
ICogYV9wb3NpdGlvbjsgXG4iCi0gICAgICAgICIgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOyAg
IFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSNpZiBQ
TEFURk9STShTS0lBKQotICAgIC8vIENvbG9yIGlzIGluIFJHQkEgb3JkZXIuCi0gICAgY2hhciBy
Z2JhRnJhZ21lbnRTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZl
YzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1
bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0g
ICAgICAgICJ1bmlmb3JtIGZsb2F0IGFscGhhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0
dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsgXG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xv
ciA9IHRleENvbG9yICogYWxwaGE7IFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLSNlbmRpZgotCi0gICAgLy8gQ29s
b3IgaXMgaW4gQkdSQSBvcmRlci4KLSAgICBjaGFyIGJncmFGcmFnbWVudFNoYWRlclN0cmluZ1td
ID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVy
ZTsgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgYWxw
aGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAg
InsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIK
LSAgICAgICAgIiAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZfdGV4Q29v
cmQpOyBcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci56LCB0ZXhD
b2xvci55LCB0ZXhDb2xvci54LCB0ZXhDb2xvci53KSAqIGFscGhhOyBcbiIKLSAgICAgICAgIn0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0K
LSNpZiBQTEFURk9STShTS0lBKQotICAgIC8vIEFzc3VtaW5nIHRoZSBwYWNraW5nIGlzIGVpdGhl
ciBTa2lhIGRlZmF1bHQgUkdCQSBvciBDaHJvbWl1bSBkZWZhdWx0IEJHUkEuCi0gICAgY2hhciog
ZnJhZ21lbnRTaGFkZXJTdHJpbmcgPSBTS19CMzJfU0hJRlQgPyByZ2JhRnJhZ21lbnRTaGFkZXJT
dHJpbmcgOiBiZ3JhRnJhZ21lbnRTaGFkZXJTdHJpbmc7Ci0jZWxzZQotICAgIGNoYXIqIGZyYWdt
ZW50U2hhZGVyU3RyaW5nID0gYmdyYUZyYWdtZW50U2hhZGVyU3RyaW5nOwotI2VuZGlmCi0gICAg
bV9jb250ZW50U2hhZGVyUHJvZ3JhbSA9IGNyZWF0ZVNoYWRlclByb2dyYW0obV9jb250ZXh0LCB2
ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nKTsKLSAgICBpZiAoIW1fY29u
dGVudFNoYWRlclByb2dyYW0pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb250ZW50TGF5ZXJDaHJv
bWl1bTogRmFpbGVkIHRvIGNyZWF0ZSBzaGFkZXIgcHJvZ3JhbSIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgbV9zaGFkZXJTYW1wbGVyTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihtX2NvbnRlbnRTaGFkZXJQcm9ncmFtLCAic190ZXh0dXJlIik7Ci0gICAg
bV9zaGFkZXJNYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1f
Y29udGVudFNoYWRlclByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3NoYWRlckFscGhhTG9jYXRp
b24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX2NvbnRlbnRTaGFkZXJQcm9ncmFt
LCAiYWxwaGEiKTsKLSAgICBBU1NFUlQobV9zaGFkZXJTYW1wbGVyTG9jYXRpb24gIT0gLTEpOwot
ICAgIEFTU0VSVChtX3NoYWRlck1hdHJpeExvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV9z
aGFkZXJBbHBoYUxvY2F0aW9uICE9IC0xKTsKLQotICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwot
fQotCi1Db250ZW50TGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjp+U2hhcmVkVmFsdWVzKCkK
LXsKLSAgICBpZiAobV9jb250ZW50U2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fY29udGVudFNoYWRlclByb2dyYW0pKTsKLX0K
LQotCiBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bShvd25lcikpOwpAQCAtMzM5LDEzICsyNjQs
MTMgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAKICAgICBBU1NFUlQobGF5
ZXJSZW5kZXJlcigpKTsKIAotICAgIGNvbnN0IENvbnRlbnRMYXllckNocm9taXVtOjpTaGFyZWRW
YWx1ZXMqIHN2ID0gbGF5ZXJSZW5kZXJlcigpLT5jb250ZW50TGF5ZXJTaGFyZWRWYWx1ZXMoKTsK
LSAgICBBU1NFUlQoc3YgJiYgc3YtPmluaXRpYWxpemVkKCkpOworICAgIGNvbnN0IENvbnRlbnRM
YXllckNocm9taXVtOjpQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlcigpLT5jb250ZW50
TGF5ZXJQcm9ncmFtKCk7CisgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6
ZWQoKSk7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29u
dGV4dCgpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIGJpbmRDb250ZW50c1RleHR1cmUoKTsKLSAgICBs
YXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihzdi0+Y29udGVudFNoYWRlclByb2dyYW0oKSk7Ci0g
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShzdi0+c2hhZGVyU2FtcGxlckxvY2F0
aW9uKCksIDApKTsKKyAgICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihwcm9ncmFtLT5wcm9n
cmFtKCkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJh
Z21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCiAgICAgaWYgKHJlcXVpcmVz
Q2xpcHBlZFVwZGF0ZVJlY3QoKSkgewogICAgICAgICBmbG9hdCBtNDMgPSBkcmF3VHJhbnNmb3Jt
KCkubTQzKCk7CkBAIC0zNTQsMTIgKzI3OSwxMyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVt
OjpkcmF3KCkKICAgICAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVy
KCktPnByb2plY3Rpb25NYXRyaXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zv
cm0sIG1fdmlzaWJsZVJlY3RJbkxheWVyQ29vcmRzLndpZHRoKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV92aXNpYmxlUmVjdEluTGF5ZXJDb29yZHMuaGVpZ2h0KCksIGRyYXdPcGFjaXR5
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCks
IHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCkpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJl
cigpLT5wcm9qZWN0aW9uTWF0cml4KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1Ry
YW5zZm9ybSgpLCBtX2JvdW5kcy53aWR0aCgpLCBtX2JvdW5kcy5oZWlnaHQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBkcmF3T3BhY2l0eSgpLCBzdi0+c2hhZGVyTWF0cml4TG9jYXRpb24o
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLT52ZXJ0ZXhT
aGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpKTsKICAgICB9CiAgICAgdW5yZXNl
cnZlQ29udGVudHNUZXh0dXJlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApp
bmRleCAzMzYzNTE4ZGE1MzFhYzYwZDMwZDdmODBlN2Y1Yzc2MDNjMzJhMzgwLi5iZDA5M2VkMzBm
Mjc3YWY3NDc0ZTE3MmE2NDg5MjU2YzgwYzE2YTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmgKQEAgLTU2LDI4ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJh
dygpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSB7IHJldHVybiBtX293bmVyICYm
IG1fb3duZXItPmRyYXdzQ29udGVudCgpOyB9CiAKLSAgICAvLyBTdG9yZXMgdmFsdWVzIHRoYXQg
YXJlIHNoYXJlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHRoYXQgYXJlCi0gICAg
Ly8gYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIExheWVyUmVuZGVyZXJDaHJvbWl1bSAoYW5kIGhl
bmNlIHRoZSBzYW1lIEdMCi0gICAgLy8gY29udGV4dCkuCi0gICAgY2xhc3MgU2hhcmVkVmFsdWVz
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IFNoYXJlZFZhbHVlcyhHcmFwaGljc0Nv
bnRleHQzRCopOwotICAgICAgICB+U2hhcmVkVmFsdWVzKCk7Ci0KLSAgICAgICAgdW5zaWduZWQg
Y29udGVudFNoYWRlclByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTaGFkZXJQcm9n
cmFtOyB9Ci0gICAgICAgIGludCBzaGFkZXJTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyTWF0cml4TG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlck1hdHJpeExvY2F0aW9uOyB9Ci0gICAgICAg
IGludCBzaGFkZXJBbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJBbHBoYUxv
Y2F0aW9uOyB9Ci0gICAgICAgIGludCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5p
dGlhbGl6ZWQ7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBt
X2NvbnRleHQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fY29udGVudFNoYWRlclByb2dyYW07Ci0gICAg
ICAgIGludCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fc2hhZGVyTWF0
cml4TG9jYXRpb247Ci0gICAgICAgIGludCBtX3NoYWRlckFscGhhTG9jYXRpb247Ci0gICAgICAg
IGludCBtX2luaXRpYWxpemVkOwotICAgIH07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxW
ZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyVGV4QWxwaGE+IFByb2dyYW07CiAKIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVy
Q2hyb21pdW0qIG93bmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRpbmcuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4
NTlhYWU3MzNhZTBhNmZkZjBiMTVkZWRjOWM3NjY2Y2M4YzNjOWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRp
bmcuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJHZW9tZXRyeUJpbmRp
bmcuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCisjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworR2VvbWV0cnlCaW5kaW5nOjpHZW9tZXRyeUJpbmRpbmcoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1f
cXVhZFZlcnRpY2VzVmJvKDApCisgICAgLCBtX3F1YWRFbGVtZW50c1ZibygwKQorICAgICwgbV9p
bml0aWFsaXplZChmYWxzZSkKK3sKKyAgICAvLyBWZXJ0ZXggcG9zaXRpb25zIGFuZCB0ZXh0dXJl
IGNvb3JkaW5hdGVzIGZvciB0aGUgNCBjb3JuZXJzIG9mIGEgMXgxIHF1YWQuCisgICAgZmxvYXQg
dmVydGljZXNbXSA9IHsgLTAuNWYsICAwLjVmLCAwLjBmLCAwLjBmLCAgMS4wZiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAtMC41ZiwgLTAuNWYsIDAuMGYsIDAuMGYsICAwLjBmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuNWYsIC0wLjVmLCAwLjBmLCAxLjBmLCAgMC4wZiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjVmLCAgMC41ZiwgMC4wZiwgMS4wZiwgIDEuMGYgfTsKKyAg
ICB1aW50MTZfdCBpbmRpY2VzW10gPSB7IDAsIDEsIDIsIDAsIDIsIDMsIC8vIFRoZSB0d28gdHJp
YW5nbGVzIHRoYXQgbWFrZSB1cCB0aGUgbGF5ZXIgcXVhZC4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDEsIDIsIDN9OyAvLyBBIGxpbmUgcGF0aCBmb3IgZHJhd2luZyB0aGUgbGF5ZXIg
Ym9yZGVyLgorCisgICAgR0xDKG1fY29udGV4dCwgbV9xdWFkVmVydGljZXNWYm8gPSBtX2NvbnRl
eHQtPmNyZWF0ZUJ1ZmZlcigpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX3F1YWRFbGVtZW50c1Zi
byA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX3F1YWRW
ZXJ0aWNlc1ZibykpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YnVmZmVyRGF0YShH
cmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBzaXplb2YodmVydGljZXMpLCB2ZXJ0aWNl
cywgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKSk7CisgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JV
RkZFUiwgbV9xdWFkRWxlbWVudHNWYm8pKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBzaXpl
b2YoaW5kaWNlcyksIGluZGljZXMsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEFUSUNfRFJBVykpOwor
CisgICAgbV9pbml0aWFsaXplZCA9IHRydWU7Cit9CisKK0dlb21ldHJ5QmluZGluZzo6fkdlb21l
dHJ5QmluZGluZygpCit7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVCdWZm
ZXIobV9xdWFkVmVydGljZXNWYm8pKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRl
bGV0ZUJ1ZmZlcihtX3F1YWRFbGVtZW50c1ZibykpOworfQorCit2b2lkIEdlb21ldHJ5QmluZGlu
Zzo6cHJlcGFyZUZvckRyYXcoKQoreworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Ymlu
ZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBxdWFkVmVydGljZXNWYm8o
KSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIsIHF1YWRFbGVtZW50c1ZibygpKSk7CisgICAg
dW5zaWduZWQgb2Zmc2V0ID0gMDsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnZlcnRl
eEF0dHJpYlBvaW50ZXIocG9zaXRpb25BdHRyaWJMb2NhdGlvbigpLCAzLCBHcmFwaGljc0NvbnRl
eHQzRDo6RkxPQVQsIGZhbHNlLCA1ICogc2l6ZW9mKGZsb2F0KSwgb2Zmc2V0KSk7CisgICAgb2Zm
c2V0ICs9IDMgKiBzaXplb2YoZmxvYXQpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
dmVydGV4QXR0cmliUG9pbnRlcih0ZXhDb29yZEF0dHJpYkxvY2F0aW9uKCksIDIsIEdyYXBoaWNz
Q29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIDUgKiBzaXplb2YoZmxvYXQpLCBvZmZzZXQpKTsKKyAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0
aW9uQXR0cmliTG9jYXRpb24oKSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkodGV4Q29vcmRBdHRyaWJMb2NhdGlvbigpKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0dlb21ldHJ5QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMxOTk3MDNlNzAyYzg4NGYx
YzhjMGZiYzgyYzM4MDBjNDhhMGNmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5oCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEdlb21ldHJ5QmluZGluZ19oCisjZGVmaW5lIEdlb21ldHJ5
QmluZGluZ19oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBo
aWNzQ29udGV4dDNEOworCitjbGFzcyBHZW9tZXRyeUJpbmRpbmcgeworcHVibGljOgorICAgIGV4
cGxpY2l0IEdlb21ldHJ5QmluZGluZyhHcmFwaGljc0NvbnRleHQzRCopOworICAgIH5HZW9tZXRy
eUJpbmRpbmcoKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lu
aXRpYWxpemVkOyB9CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dDsgfQorICAgIHVuc2lnbmVkIHF1YWRWZXJ0aWNlc1ZibygpIGNvbnN0
IHsgcmV0dXJuIG1fcXVhZFZlcnRpY2VzVmJvOyB9CisgICAgdW5zaWduZWQgcXVhZEVsZW1lbnRz
VmJvKCkgY29uc3QgeyByZXR1cm4gbV9xdWFkRWxlbWVudHNWYm87IH0KKworICAgIHZvaWQgcHJl
cGFyZUZvckRyYXcoKTsKKworICAgIC8vIEFsbCBsYXllciBzaGFkZXJzIHNoYXJlIHRoZSBzYW1l
IGF0dHJpYnV0ZSBsb2NhdGlvbnMgZm9yIHRoZSB2ZXJ0ZXgKKyAgICAvLyBwb3NpdGlvbnMgYW5k
IHRleHR1cmUgY29vcmRpbmF0ZXMuIFRoaXMgYWxsb3dzIHN3aXRjaGluZyBzaGFkZXJzIHdpdGhv
dXQKKyAgICAvLyByZWJpbmRpbmcgYXR0cmlidXRlIGFycmF5cy4KKyAgICBzdGF0aWMgaW50IHBv
c2l0aW9uQXR0cmliTG9jYXRpb24oKSB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIGludCB0ZXhD
b29yZEF0dHJpYkxvY2F0aW9uKCkgeyByZXR1cm4gMTsgfQorCitwcml2YXRlOgorICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgdW5zaWduZWQgbV9xdWFkVmVydGljZXNWYm87
CisgICAgdW5zaWduZWQgbV9xdWFkRWxlbWVudHNWYm87CisgICAgYm9vbCBtX2luaXRpYWxpemVk
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOGQw
MWQ5YmQ5YWE0OWU2MWM5NmE5ZWNjYjc2NmRjYjEwMWUzNmVlMy4uOWRkNWJiNGNhODBkMTQ3NDdl
MmYyYTk3YzliNjU4NDVlODRlYjRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ4LDkz
ICs0OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAot
Y29uc3QgdW5zaWduZWQgTGF5ZXJDaHJvbWl1bTo6c19wb3NpdGlvbkF0dHJpYkxvY2F0aW9uID0g
MDsKLWNvbnN0IHVuc2lnbmVkIExheWVyQ2hyb21pdW06OnNfdGV4Q29vcmRBdHRyaWJMb2NhdGlv
biA9IDE7Ci0KLXN0YXRpYyB1bnNpZ25lZCBsb2FkU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCB1bnNpZ25lZCB0eXBlLCBjb25zdCBjaGFyKiBzaGFkZXJTb3VyY2UpCi17Ci0gICAg
dW5zaWduZWQgc2hhZGVyID0gY29udGV4dC0+Y3JlYXRlU2hhZGVyKHR5cGUpOwotICAgIGlmICgh
c2hhZGVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBTdHJpbmcgc291cmNlU3RyaW5nKHNoYWRl
clNvdXJjZSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnNoYWRlclNvdXJjZShzaGFkZXIs
IHNvdXJjZVN0cmluZykpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5jb21waWxlU2hhZGVy
KHNoYWRlcikpOwotICAgIGludCBjb21waWxlZCA9IDA7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVT
LCAmY29tcGlsZWQpKTsKLSAgICBpZiAoIWNvbXBpbGVkKSB7Ci0gICAgICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5kZWxldGVTaGFkZXIoc2hhZGVyKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLSAgICByZXR1cm4gc2hhZGVyOwotfQotCi1MYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXM6
OlNoYXJlZFZhbHVlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKLSAgICA6IG1fY29udGV4
dChjb250ZXh0KQotICAgICwgbV9xdWFkVmVydGljZXNWYm8oMCkKLSAgICAsIG1fcXVhZEVsZW1l
bnRzVmJvKDApCi0gICAgLCBtX21heFRleHR1cmVTaXplKDApCi0gICAgLCBtX2JvcmRlclNoYWRl
clByb2dyYW0oMCkKLSAgICAsIG1fYm9yZGVyU2hhZGVyTWF0cml4TG9jYXRpb24oLTEpCi0gICAg
LCBtX2JvcmRlclNoYWRlckNvbG9yTG9jYXRpb24oLTEpCi0gICAgLCBtX2luaXRpYWxpemVkKGZh
bHNlKQotewotICAgIC8vIFZlcnRleCBwb3NpdGlvbnMgYW5kIHRleHR1cmUgY29vcmRpbmF0ZXMg
Zm9yIHRoZSA0IGNvcm5lcnMgb2YgYSAxeDEgcXVhZC4KLSAgICBmbG9hdCB2ZXJ0aWNlc1tdID0g
eyAtMC41ZiwgIDAuNWYsIDAuMGYsIDAuMGYsICAxLjBmLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIC0wLjVmLCAtMC41ZiwgMC4wZiwgMC4wZiwgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgMC41ZiwgLTAuNWYsIDAuMGYsIDEuMGYsICAwLjBmLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuNWYsICAwLjVmLCAwLjBmLCAxLjBmLCAgMS4wZiB9OwotICAgIHVpbnQxNl90IGlu
ZGljZXNbXSA9IHsgMCwgMSwgMiwgMCwgMiwgMywgLy8gVGhlIHR3byB0cmlhbmdsZXMgdGhhdCBt
YWtlIHVwIHRoZSBsYXllciBxdWFkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwg
MiwgM307IC8vIEEgbGluZSBwYXRoIGZvciBkcmF3aW5nIHRoZSBsYXllciBib3JkZXIuCi0KLSAg
ICBHTEMobV9jb250ZXh0LCBtX3F1YWRWZXJ0aWNlc1ZibyA9IG1fY29udGV4dC0+Y3JlYXRlQnVm
ZmVyKCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fcXVhZEVsZW1lbnRzVmJvID0gbV9jb250ZXh0
LT5jcmVhdGVCdWZmZXIoKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIG1fcXVhZFZlcnRpY2VzVmJvKSk7
Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4
dDNEOjpBUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNlcyksIHZlcnRpY2VzLCBHcmFwaGljc0Nv
bnRleHQzRDo6U1RBVElDX0RSQVcpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJp
bmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBtX3F1YWRF
bGVtZW50c1ZibykpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YnVmZmVyRGF0YShH
cmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIsIHNpemVvZihpbmRpY2VzKSwg
aW5kaWNlcywgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKSk7Ci0KLSAgICAvLyBHZXQg
dGhlIG1heCB0ZXh0dXJlIHNpemUgc3VwcG9ydGVkIGJ5IHRoZSBzeXN0ZW0uCi0gICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1RF
WFRVUkVfU0laRSwgJm1fbWF4VGV4dHVyZVNpemUpKTsKLQotICAgIC8vIFNoYWRlcnMgZm9yIGRy
YXdpbmcgdGhlIGRlYnVnIGJvcmRlcnMgYXJvdW5kIHRoZSBsYXllcnMuCi0gICAgY2hhciBib3Jk
ZXJWZXJ0ZXhTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0
aW9uOyAgIFxuIgotICAgICAgICAidW5pZm9ybSBtYXQ0IG1hdHJpeDsgICAgICAgICBcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICAgZ2xfUG9zaXRpb24gPSBtYXRy
aXggKiBhX3Bvc2l0aW9uOyBcbiIKLSAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXG4iOwotICAgIGNoYXIgYm9yZGVyRnJhZ21lbnRTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4i
Ci0gICAgICAgICJ1bmlmb3JtIHZlYzQgY29sb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoY29sb3IueHl6ICogY29sb3IudywgY29sb3Iudyk7XG4iCi0gICAgICAgICJ9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotCi0gICAgbV9i
b3JkZXJTaGFkZXJQcm9ncmFtID0gY3JlYXRlU2hhZGVyUHJvZ3JhbShtX2NvbnRleHQsIGJvcmRl
clZlcnRleFNoYWRlclN0cmluZywgYm9yZGVyRnJhZ21lbnRTaGFkZXJTdHJpbmcpOwotICAgIGlm
ICghbV9ib3JkZXJTaGFkZXJQcm9ncmFtKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ29udGVudExh
eWVyQ2hyb21pdW06IEZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIHByb2dyYW0iKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIG1fYm9yZGVyU2hhZGVyTWF0cml4TG9jYXRpb24gPSBtX2Nv
bnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX2JvcmRlclNoYWRlclByb2dyYW0sICJtYXRyaXgi
KTsKLSAgICBtX2JvcmRlclNoYWRlckNvbG9yTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihtX2JvcmRlclNoYWRlclByb2dyYW0sICJjb2xvciIpOwotICAgIEFTU0VSVCht
X2JvcmRlclNoYWRlck1hdHJpeExvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV9ib3JkZXJT
aGFkZXJDb2xvckxvY2F0aW9uICE9IC0xKTsKLQotICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwot
fQotCi1MYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXM6On5TaGFyZWRWYWx1ZXMoKQotewotICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKG1fcXVhZFZlcnRpY2VzVmJv
KSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV9xdWFkRWxl
bWVudHNWYm8pKTsKLSAgICBpZiAobV9ib3JkZXJTaGFkZXJQcm9ncmFtKQotICAgICAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9ib3JkZXJTaGFkZXJQcm9ncmFt
KSk7Ci19Ci0KLQogUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBMYXllckNocm9taXVtOjpjcmVh
dGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IExheWVyQ2hyb21pdW0ob3duZXIpKTsKQEAgLTIwMSw0OCArMTE0LDYgQEAgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtKiBMYXllckNocm9taXVtOjpjcmVhdGVSZW5kZXJTdXJmYWNlKCkKICAgICBy
ZXR1cm4gbV9yZW5kZXJTdXJmYWNlLmdldCgpOwogfQogCi11bnNpZ25lZCBMYXllckNocm9taXVt
OjpjcmVhdGVTaGFkZXJQcm9ncmFtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBj
aGFyKiB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyU291cmNl
KQotewotICAgIHVuc2lnbmVkIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoY29udGV4dCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIsIHZlcnRleFNoYWRlclNvdXJjZSk7Ci0gICAg
aWYgKCF2ZXJ0ZXhTaGFkZXIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IHZlcnRleCBzaGFkZXIiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgdW5zaWdu
ZWQgZnJhZ21lbnRTaGFkZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFHTUVOVF9TSEFERVIsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBpZiAoIWZyYWdt
ZW50U2hhZGVyKSB7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFkZXIo
dmVydGV4U2hhZGVyKSk7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBmcmFn
bWVudCBzaGFkZXIiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgdW5zaWduZWQg
cHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKLSAgICBpZiAoIXByb2dy
YW1PYmplY3QpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBw
cm9ncmFtIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5hdHRhY2hTaGFkZXIocHJvZ3JhbU9iamVjdCwgdmVydGV4U2hhZGVyKSk7Ci0gICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtT2JqZWN0LCBmcmFnbWVu
dFNoYWRlcikpOwotCi0gICAgLy8gQmluZCB0aGUgY29tbW9uIGF0dHJpYiBsb2NhdGlvbnMuCi0g
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtT2JqZWN0
LCBzX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24sICJhX3Bvc2l0aW9uIikpOwotICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbU9iamVjdCwgc190ZXhDb29y
ZEF0dHJpYkxvY2F0aW9uLCAiYV90ZXhDb29yZCIpKTsKLQotICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5saW5rUHJvZ3JhbShwcm9ncmFtT2JqZWN0KSk7Ci0gICAgaW50IGxpbmtlZCA9IDA7Ci0g
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtT2JqZWN0LCBHcmFw
aGljc0NvbnRleHQzRDo6TElOS19TVEFUVVMsICZsaW5rZWQpKTsKLSAgICBpZiAoIWxpbmtlZCkg
ewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBsaW5rIHNoYWRlciBwcm9ncmFtIik7Ci0g
ICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVQcm9ncmFtKHByb2dyYW1PYmplY3Qp
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
ZGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKSk7Ci0gICAgcmV0dXJuIHByb2dyYW1PYmplY3Q7
Ci19Ci0KIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNDb21taXQoKQogewogICAgIC8vIENh
bGwgbm90aWZ5U3luY1JlcXVpcmVkKCksIHdoaWNoIGZvciBub24tcm9vdCBsYXllcnMgcGx1bWJz
IHRocm91Z2ggdG8KQEAgLTQ1MiwxNiArMzIzLDE2IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6ZHJh
d0RlYnVnQm9yZGVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGxheWVyUmVuZGVy
ZXIoKSk7Ci0gICAgY29uc3QgU2hhcmVkVmFsdWVzKiBzdiA9IGxheWVyUmVuZGVyZXIoKS0+bGF5
ZXJTaGFyZWRWYWx1ZXMoKTsKLSAgICBBU1NFUlQoc3YgJiYgc3YtPmluaXRpYWxpemVkKCkpOwot
ICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5ib3JkZXJTaGFkZXJQcm9ncmFtKCkp
OworICAgIGNvbnN0IEJvcmRlclByb2dyYW0qIHByb2dyYW0gPSBsYXllclJlbmRlcmVyKCktPmJv
cmRlclByb2dyYW0oKTsKKyAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXpl
ZCgpKTsKKyAgICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihwcm9ncmFtLT5wcm9ncmFtKCkp
OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlck1hdHJpeCA9IGRyYXdUcmFuc2Zvcm0o
KTsKICAgICByZW5kZXJNYXRyaXguc2NhbGUzZChib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5o
ZWlnaHQoKSwgMSk7CiAgICAgdG9HTE1hdHJpeCgmZ2xNYXRyaXhbMF0sIGxheWVyUmVuZGVyZXIo
KS0+cHJvamVjdGlvbk1hdHJpeCgpICogcmVuZGVyTWF0cml4KTsKICAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7Ci0gICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYoc3YtPmJvcmRlclNoYWRlck1hdHJpeExvY2F0aW9u
KCksIGZhbHNlLCAmZ2xNYXRyaXhbMF0sIDEpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dW5pZm9ybU1hdHJpeDRmdihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigp
LCBmYWxzZSwgJmdsTWF0cml4WzBdLCAxKSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dW5pZm9ybTRmKHN2LT5ib3JkZXJTaGFkZXJDb2xvckxvY2F0aW9uKCksIGJvcmRlckNvbG9yKCku
cmVkKCkgLyAyNTUuMCwgYm9yZGVyQ29sb3IoKS5ncmVlbigpIC8gMjU1LjAsIGJvcmRlckNvbG9y
KCkuYmx1ZSgpIC8gMjU1LjAsIDEpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9y
bTRmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuY29sb3JMb2NhdGlvbigpLCBib3JkZXJDb2xv
cigpLnJlZCgpIC8gMjU1LjAsIGJvcmRlckNvbG9yKCkuZ3JlZW4oKSAvIDI1NS4wLCBib3JkZXJD
b2xvcigpLmJsdWUoKSAvIDI1NS4wLCAxKSk7CiAKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
bGluZVdpZHRoKGJvcmRlcldpZHRoKCkpKTsKIApAQCAtNTAxLDE5ICszNzIsNSBAQCBib29sIExh
eWVyQ2hyb21pdW06OmRlc2NlbmRhbnRzRHJhd0NvbnRlbnRSZWN1cnNpdmUoKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotLy8gc3RhdGljCi12b2lkIExheWVyQ2hyb21pdW06OnByZXBhcmVGb3JE
cmF3KGNvbnN0IFNoYXJlZFZhbHVlcyogc3YpCi17Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQgPSBzdi0+Y29udGV4dCgpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIHN2LT5xdWFkVmVydGljZXNWYm8o
KSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiwgc3YtPnF1YWRFbGVtZW50c1ZibygpKSk7Ci0gICAg
dW5zaWduZWQgb2Zmc2V0ID0gMDsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dmVydGV4QXR0
cmliUG9pbnRlcihzX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24sIDMsIEdyYXBoaWNzQ29udGV4dDNE
OjpGTE9BVCwgZmFsc2UsIDUgKiBzaXplb2YoZmxvYXQpLCBvZmZzZXQpKTsKLSAgICBvZmZzZXQg
Kz0gMyAqIHNpemVvZihmbG9hdCk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnZlcnRleEF0
dHJpYlBvaW50ZXIoc190ZXhDb29yZEF0dHJpYkxvY2F0aW9uLCAyLCBHcmFwaGljc0NvbnRleHQz
RDo6RkxPQVQsIGZhbHNlLCA1ICogc2l6ZW9mKGZsb2F0KSwgb2Zmc2V0KSk7Ci0gICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNfcG9zaXRpb25BdHRyaWJM
b2NhdGlvbikpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShzX3RleENvb3JkQXR0cmliTG9jYXRpb24pKTsKLX0KLQogfQogI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBmZjllNWU1ZDgz
MWMzZjEzZTkzMDc2ZTZhZmM1NThmN2NjYTk4Y2Q3Li44ZTMxNzZkNGI4ZDVlNzBjYWMxNjU0ZGQ4
ZjFmNjFlZjJhZGQxYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOCw3ICszOCw5IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9t
aXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJQcm9ncmFtQmlu
ZGluZy5oIgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlNo
YWRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTYwLDcg
KzYyLDYgQEAgY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogLy8gdGhpcyBjbGFzcy4KIGNs
YXNzIExheWVyQ2hyb21pdW0gOiBwdWJsaWMgUmVmQ291bnRlZDxMYXllckNocm9taXVtPiB7CiAg
ICAgZnJpZW5kIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKLSAgICBmcmllbmQgY2xhc3Mg
TGF5ZXJUaWxlckNocm9taXVtOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExheWVy
Q2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyID0gMCk7CiAKQEAg
LTE3Miw0NSArMTczLDE1IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSog
Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogCi0gICAgLy8gU3RvcmVzIHZhbHVlcyB0aGF0IGFyZSBz
aGFyZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyB0aGF0IGFyZQotICAgIC8vIGFz
c29jaWF0ZWQgd2l0aCB0aGUgc2FtZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gKGFuZCBoZW5jZSB0
aGUgc2FtZSBHTAotICAgIC8vIGNvbnRleHQpLgotICAgIGNsYXNzIFNoYXJlZFZhbHVlcyB7Ci0g
ICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0
M0QqKTsKLSAgICAgICAgflNoYXJlZFZhbHVlcygpOwotCi0gICAgICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9Ci0gICAgICAgIHVuc2ln
bmVkIHF1YWRWZXJ0aWNlc1ZibygpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZFZlcnRpY2VzVmJvOyB9
Ci0gICAgICAgIHVuc2lnbmVkIHF1YWRFbGVtZW50c1ZibygpIGNvbnN0IHsgcmV0dXJuIG1fcXVh
ZEVsZW1lbnRzVmJvOyB9Ci0gICAgICAgIGludCBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWF4VGV4dHVyZVNpemU7IH0KLSAgICAgICAgdW5zaWduZWQgYm9yZGVyU2hhZGVyUHJv
Z3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9yZGVyU2hhZGVyUHJvZ3JhbTsgfQotICAgICAgICBp
bnQgYm9yZGVyU2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2JvcmRlclNo
YWRlck1hdHJpeExvY2F0aW9uOyB9Ci0gICAgICAgIGludCBib3JkZXJTaGFkZXJDb2xvckxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ib3JkZXJTaGFkZXJDb2xvckxvY2F0aW9uOyB9Ci0gICAg
ICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwotICAg
ICAgICB1bnNpZ25lZCBtX3F1YWRWZXJ0aWNlc1ZibzsKLSAgICAgICAgdW5zaWduZWQgbV9xdWFk
RWxlbWVudHNWYm87Ci0gICAgICAgIGludCBtX21heFRleHR1cmVTaXplOwotICAgICAgICB1bnNp
Z25lZCBtX2JvcmRlclNoYWRlclByb2dyYW07Ci0gICAgICAgIGludCBtX2JvcmRlclNoYWRlck1h
dHJpeExvY2F0aW9uOwotICAgICAgICBpbnQgbV9ib3JkZXJTaGFkZXJDb2xvckxvY2F0aW9uOwot
ICAgICAgICBib29sIG1faW5pdGlhbGl6ZWQ7Ci0gICAgfTsKLQotICAgIHN0YXRpYyB2b2lkIHBy
ZXBhcmVGb3JEcmF3KGNvbnN0IFNoYXJlZFZhbHVlcyopOwotCiAgICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBsYXllclJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclJlbmRlcmVyLmdl
dCgpOyB9CiAKLSAgICBzdGF0aWMgdW5zaWduZWQgY3JlYXRlU2hhZGVyUHJvZ3JhbShHcmFwaGlj
c0NvbnRleHQzRCosIGNvbnN0IGNoYXIqIHZlcnRleFNoYWRlclNvdXJjZSwgY29uc3QgY2hhciog
ZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwogICAgIHN0YXRpYyB2b2lkIHRvR0xNYXRyaXgoZmxvYXQq
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogCiAgICAgc3RhdGljIHZvaWQgZHJhd1Rl
eHR1cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBwcm9qZWN0aW9uTWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJNYXRy
aXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0LCBmbG9hdCBvcGFjaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IG1hdHJpeExvY2F0aW9uLCBpbnQgYWxwaGFMb2NhdGlvbik7CiAKKyAgICB0eXBlZGVmIFBy
b2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvcywgRnJhZ21lbnRTaGFkZXJDb2xvcj4gQm9yZGVy
UHJvZ3JhbTsKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0qIG1fb3duZXI7
CiAgICAgTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKTsKQEAgLTIz
NywxMiArMjA4LDYgQEAgcHJvdGVjdGVkOgogICAgIC8vIGNvb3JkaW5hdGUgc3lzdGVtIHRoZSBs
YXllcidzIHRyYW5zZm9ybXMgYXJlIHJlbGF0aXZlIHRvLgogICAgIFJlbmRlclN1cmZhY2VDaHJv
bWl1bSogbV90YXJnZXRSZW5kZXJTdXJmYWNlOwogCi0gICAgLy8gQWxsIGxheWVyIHNoYWRlcnMg
c2hhcmUgdGhlIHNhbWUgYXR0cmlidXRlIGxvY2F0aW9ucyBmb3IgdGhlIHZlcnRleCBwb3NpdGlv
bnMKLSAgICAvLyBhbmQgdGV4dHVyZSBjb29yZGluYXRlcy4gVGhpcyBhbGxvd3Mgc3dpdGNoaW5n
IHNoYWRlcnMgd2l0aG91dCByZWJpbmRpbmcgYXR0cmlidXRlCi0gICAgLy8gYXJyYXlzLgotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3Bvc2l0aW9uQXR0cmliTG9jYXRpb247Ci0gICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfdGV4Q29vcmRBdHRyaWJMb2NhdGlvbjsKLQogcHJpdmF0ZToK
ICAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCmluZGV4IDkwNWQ2ZGEzM2RlM2VmYzFkMjUzM2Y5OTI0NTgzNzgwYzZjODE4Mzcu
LmVmZTM1NDgyMGE5Mjg1Nzg1OGI0YTcwZDIxMDVkMWYyMjg3OTJiMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiQ2FudmFzMkRMYXllckNocm9taXVt
LmgiCisjaW5jbHVkZSAiR2VvbWV0cnlCaW5kaW5nLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0
dXJlLmgiCkBAIC0yMzYsNyArMjM3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdMYXllcnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QKICAgICBH
TEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIHZpc2libGVSZWN0
V2lkdGgsIHZpc2libGVSZWN0SGVpZ2h0KSk7CiAKICAgICAvLyBCaW5kIHRoZSBjb21tb24gdmVy
dGV4IGF0dHJpYnV0ZXMgdXNlZCBmb3IgZHJhd2luZyBhbGwgdGhlIGxheWVycy4KLSAgICBMYXll
ckNocm9taXVtOjpwcmVwYXJlRm9yRHJhdyhsYXllclNoYXJlZFZhbHVlcygpKTsKKyAgICBtX3No
YXJlZEdlb21ldHJ5LT5wcmVwYXJlRm9yRHJhdygpOwogCiAgICAgLy8gRklYTUU6IFRoZXNlIGNh
bGxzIGNhbiBiZSBtYWRlIG9uY2UsIHdoZW4gdGhlIGNvbXBvc2l0b3IgY29udGV4dCBpcyBpbml0
aWFsaXplZC4KICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRpc2FibGUoR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX1RFU1QpKTsKQEAgLTgwOCwxNyArODA5LDIzIEBAIGJvb2wg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygpCiAgICAgLy8g
Q3JlYXRlIGFuIEZCTyBmb3IgZG9pbmcgb2Zmc2NyZWVuIHJlbmRlcmluZy4KICAgICBHTEMobV9j
b250ZXh0LmdldCgpLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQgPSBtX2NvbnRleHQtPmNyZWF0
ZUZyYW1lYnVmZmVyKCkpOwogCi0gICAgbV9sYXllclNoYXJlZFZhbHVlcyA9IGFkb3B0UHRyKG5l
dyBMYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgbV9j
b250ZW50TGF5ZXJTaGFyZWRWYWx1ZXMgPSBhZG9wdFB0cihuZXcgQ29udGVudExheWVyQ2hyb21p
dW06OlNoYXJlZFZhbHVlcyhtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICBtX2NhbnZhc0xheWVyU2hh
cmVkVmFsdWVzID0gYWRvcHRQdHIobmV3IENhbnZhc0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVl
cyhtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICBtX3ZpZGVvTGF5ZXJTaGFyZWRWYWx1ZXMgPSBhZG9w
dFB0cihuZXcgVmlkZW9MYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMobV9jb250ZXh0LmdldCgp
KSk7Ci0gICAgbV9wbHVnaW5MYXllclNoYXJlZFZhbHVlcyA9IGFkb3B0UHRyKG5ldyBQbHVnaW5M
YXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgbV9yZW5k
ZXJTdXJmYWNlU2hhcmVkVmFsdWVzID0gYWRvcHRQdHIobmV3IFJlbmRlclN1cmZhY2VDaHJvbWl1
bTo6U2hhcmVkVmFsdWVzKG1fY29udGV4dC5nZXQoKSkpOwotICAgIG1fdGlsZXJTaGFyZWRWYWx1
ZXMgPSBhZG9wdFB0cihuZXcgTGF5ZXJUaWxlckNocm9taXVtOjpTaGFyZWRWYWx1ZXMobV9jb250
ZXh0LmdldCgpKSk7Ci0KLSAgICBpZiAoIW1fbGF5ZXJTaGFyZWRWYWx1ZXMtPmluaXRpYWxpemVk
KCkgfHwgIW1fY29udGVudExheWVyU2hhcmVkVmFsdWVzLT5pbml0aWFsaXplZCgpIHx8ICFtX2Nh
bnZhc0xheWVyU2hhcmVkVmFsdWVzLT5pbml0aWFsaXplZCgpCi0gICAgICAgIHx8ICFtX3ZpZGVv
TGF5ZXJTaGFyZWRWYWx1ZXMtPmluaXRpYWxpemVkKCkgfHwgIW1fcGx1Z2luTGF5ZXJTaGFyZWRW
YWx1ZXMtPmluaXRpYWxpemVkKCkgfHwgIW1fcmVuZGVyU3VyZmFjZVNoYXJlZFZhbHVlcy0+aW5p
dGlhbGl6ZWQoKQotICAgICAgICB8fCAhbV90aWxlclNoYXJlZFZhbHVlcy0+aW5pdGlhbGl6ZWQo
KSkgeworICAgIG1fc2hhcmVkR2VvbWV0cnkgPSBhZG9wdFB0cihuZXcgR2VvbWV0cnlCaW5kaW5n
KG1fY29udGV4dC5nZXQoKSkpOworICAgIG1fYm9yZGVyUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBM
YXllckNocm9taXVtOjpCb3JkZXJQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgIG1fY29u
dGVudExheWVyUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bTo6UHJv
Z3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBtX2NhbnZhc0xheWVyUHJvZ3JhbSA9IGFkb3B0
UHRyKG5ldyBDYW52YXNMYXllckNocm9taXVtOjpQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwor
ICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtID0gYWRvcHRQdHIobmV3IFZpZGVvTGF5ZXJDaHJv
bWl1bTo6UkdCQVByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgbV92aWRlb0xheWVyWVVW
UHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBWaWRlb0xheWVyQ2hyb21pdW06OllVVlByb2dyYW0obV9j
b250ZXh0LmdldCgpKSk7CisgICAgbV9wbHVnaW5MYXllclByb2dyYW0gPSBhZG9wdFB0cihuZXcg
UGx1Z2luTGF5ZXJDaHJvbWl1bTo6UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBtX3Jl
bmRlclN1cmZhY2VQcm9ncmFtID0gYWRvcHRQdHIobmV3IFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6
UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3Jh
bSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJTdXJmYWNlQ2hyb21pdW06Ok1hc2tQcm9ncmFtKG1fY29u
dGV4dC5nZXQoKSkpOworICAgIG1fdGlsZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3IExheWVyVGls
ZXJDaHJvbWl1bTo6UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKworICAgIGlmICghbV9zaGFy
ZWRHZW9tZXRyeS0+aW5pdGlhbGl6ZWQoKSB8fCAhbV9ib3JkZXJQcm9ncmFtLT5pbml0aWFsaXpl
ZCgpCisgICAgICAgIHx8ICFtX2NvbnRlbnRMYXllclByb2dyYW0tPmluaXRpYWxpemVkKCkgfHwg
IW1fY2FudmFzTGF5ZXJQcm9ncmFtLT5pbml0aWFsaXplZCgpCisgICAgICAgIHx8ICFtX3ZpZGVv
TGF5ZXJSR0JBUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSB8fCAhbV92aWRlb0xheWVyWVVWUHJvZ3Jh
bS0+aW5pdGlhbGl6ZWQoKQorICAgICAgICB8fCAhbV9wbHVnaW5MYXllclByb2dyYW0tPmluaXRp
YWxpemVkKCkgfHwgIW1fcmVuZGVyU3VyZmFjZVByb2dyYW0tPmluaXRpYWxpemVkKCkKKyAgICAg
ICAgfHwgIW1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLT5pbml0aWFsaXplZCgpIHx8ICFtX3Rp
bGVyUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBMT0dfRVJST1IoIkNvbXBvc2l0
b3IgZmFpbGVkIHRvIGluaXRpYWxpemUgc2hhZGVycy4gRmFsbGluZyBiYWNrIHRvIHNvZnR3YXJl
LiIpOwogICAgICAgICBjbGVhbnVwU2hhcmVkT2JqZWN0cygpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpAQCAtODMxLDEzICs4MzgsMTYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
IAotICAgIG1fbGF5ZXJTaGFyZWRWYWx1ZXMuY2xlYXIoKTsKLSAgICBtX2NvbnRlbnRMYXllclNo
YXJlZFZhbHVlcy5jbGVhcigpOwotICAgIG1fY2FudmFzTGF5ZXJTaGFyZWRWYWx1ZXMuY2xlYXIo
KTsKLSAgICBtX3ZpZGVvTGF5ZXJTaGFyZWRWYWx1ZXMuY2xlYXIoKTsKLSAgICBtX3BsdWdpbkxh
eWVyU2hhcmVkVmFsdWVzLmNsZWFyKCk7Ci0gICAgbV9yZW5kZXJTdXJmYWNlU2hhcmVkVmFsdWVz
LmNsZWFyKCk7Ci0gICAgbV90aWxlclNoYXJlZFZhbHVlcy5jbGVhcigpOworICAgIG1fc2hhcmVk
R2VvbWV0cnkuY2xlYXIoKTsKKyAgICBtX2JvcmRlclByb2dyYW0uY2xlYXIoKTsKKyAgICBtX2Nv
bnRlbnRMYXllclByb2dyYW0uY2xlYXIoKTsKKyAgICBtX2NhbnZhc0xheWVyUHJvZ3JhbS5jbGVh
cigpOworICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLmNsZWFyKCk7CisgICAgbV92aWRlb0xh
eWVyWVVWUHJvZ3JhbS5jbGVhcigpOworICAgIG1fcGx1Z2luTGF5ZXJQcm9ncmFtLmNsZWFyKCk7
CisgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbS5jbGVhcigpOworICAgIG1fcmVuZGVyU3VyZmFj
ZU1hc2tQcm9ncmFtLmNsZWFyKCk7CisgICAgbV90aWxlclByb2dyYW0uY2xlYXIoKTsKICAgICBp
ZiAobV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKQogICAgICAgICBHTEMobV9jb250ZXh0LmdldCgp
LCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDViOTAwZTQ3MjU3Yjhm
NjdlMzNjM2FhZDA3Y2U5MGQ3MmU0MmRjZDkuLjFjMjAzOTNhNzYxNmM5YzZjMWMzZDA0NTUzMDQ5
YTBhNDY2MzY0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC01Nyw2
ICs1Nyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR2VvbWV0cnlCaW5kaW5n
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIC8vIENsYXNzIHRoYXQgaGFuZGxlcyBkcmF3
aW5nIG9mIGNvbXBvc2l0ZWQgcmVuZGVyIGxheWVycyB1c2luZyBHTC4KQEAgLTEwNywxMyArMTA4
LDE2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2hlY2tUZXh0dXJlU2l6ZShjb25zdCBJbnRTaXpl
Jik7CiAKLSAgICBjb25zdCBMYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMqIGxheWVyU2hhcmVk
VmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclNoYXJlZFZhbHVlcy5nZXQoKTsgfQotICAg
IGNvbnN0IENvbnRlbnRMYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMqIGNvbnRlbnRMYXllclNo
YXJlZFZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudExheWVyU2hhcmVkVmFsdWVzLmdl
dCgpOyB9Ci0gICAgY29uc3QgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzKiBjYW52
YXNMYXllclNoYXJlZFZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FudmFzTGF5ZXJTaGFyZWRW
YWx1ZXMuZ2V0KCk7IH0KLSAgICBjb25zdCBWaWRlb0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVl
cyogdmlkZW9MYXllclNoYXJlZFZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9MYXllclNo
YXJlZFZhbHVlcy5nZXQoKTsgfQotICAgIGNvbnN0IFBsdWdpbkxheWVyQ2hyb21pdW06OlNoYXJl
ZFZhbHVlcyogcGx1Z2luTGF5ZXJTaGFyZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdp
bkxheWVyU2hhcmVkVmFsdWVzLmdldCgpOyB9Ci0gICAgY29uc3QgUmVuZGVyU3VyZmFjZUNocm9t
aXVtOjpTaGFyZWRWYWx1ZXMqIHJlbmRlclN1cmZhY2VTaGFyZWRWYWx1ZXMoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlclN1cmZhY2VTaGFyZWRWYWx1ZXMuZ2V0KCk7IH0KLSAgICBjb25zdCBMYXll
clRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogdGlsZXJTaGFyZWRWYWx1ZXMoKSBjb25zdCB7
IHJldHVybiBtX3RpbGVyU2hhcmVkVmFsdWVzLmdldCgpOyB9CisgICAgY29uc3QgR2VvbWV0cnlC
aW5kaW5nKiBzaGFyZWRHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkR2VvbWV0cnku
Z2V0KCk7IH0KKyAgICBjb25zdCBMYXllckNocm9taXVtOjpCb3JkZXJQcm9ncmFtKiBib3JkZXJQ
cm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9ib3JkZXJQcm9ncmFtLmdldCgpOyB9CisgICAgY29u
c3QgQ29udGVudExheWVyQ2hyb21pdW06OlByb2dyYW0qIGNvbnRlbnRMYXllclByb2dyYW0oKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRMYXllclByb2dyYW0uZ2V0KCk7IH0KKyAgICBjb25zdCBD
YW52YXNMYXllckNocm9taXVtOjpQcm9ncmFtKiBjYW52YXNMYXllclByb2dyYW0oKSBjb25zdCB7
IHJldHVybiBtX2NhbnZhc0xheWVyUHJvZ3JhbS5nZXQoKTsgfQorICAgIGNvbnN0IFZpZGVvTGF5
ZXJDaHJvbWl1bTo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLmdldCgpOyB9CisgICAgY29uc3QgVmlkZW9M
YXllckNocm9taXVtOjpZVVZQcm9ncmFtKiB2aWRlb0xheWVyWVVWUHJvZ3JhbSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmlkZW9MYXllcllVVlByb2dyYW0uZ2V0KCk7IH0KKyAgICBjb25zdCBQbHVnaW5M
YXllckNocm9taXVtOjpQcm9ncmFtKiBwbHVnaW5MYXllclByb2dyYW0oKSBjb25zdCB7IHJldHVy
biBtX3BsdWdpbkxheWVyUHJvZ3JhbS5nZXQoKTsgfQorICAgIGNvbnN0IFJlbmRlclN1cmZhY2VD
aHJvbWl1bTo6UHJvZ3JhbSogcmVuZGVyU3VyZmFjZVByb2dyYW0oKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlclN1cmZhY2VQcm9ncmFtLmdldCgpOyB9CisgICAgY29uc3QgUmVuZGVyU3VyZmFjZUNo
cm9taXVtOjpNYXNrUHJvZ3JhbSogcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0uZ2V0KCk7IH0KKyAgICBjb25zdCBMYXll
clRpbGVyQ2hyb21pdW06OlByb2dyYW0qIHRpbGVyUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGlsZXJQcm9ncmFtLmdldCgpOyB9CiAKICAgICB2b2lkIHJlc2l6ZU9uc2NyZWVuQ29udGVudChj
b25zdCBJbnRTaXplJik7CiAKQEAgLTE5MCwxMyArMTk0LDE2IEBAIHByaXZhdGU6CiAgICAgLy8g
YXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvc2l0b3IuIFNpbmNlIHRo
ZXJlIGNhbiBiZQogICAgIC8vIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUgY29tcG9zaXRvciBy
dW5uaW5nIGluIHRoZSBzYW1lIHJlbmRlcmVyIHByb2Nlc3MKICAgICAvLyB3ZSBjYW5ub3Qgc3Rv
cmUgdGhlc2UgdmFsdWVzIGluIHN0YXRpYyB2YXJpYWJsZXMuCi0gICAgT3duUHRyPExheWVyQ2hy
b21pdW06OlNoYXJlZFZhbHVlcz4gbV9sYXllclNoYXJlZFZhbHVlczsKLSAgICBPd25QdHI8Q29u
dGVudExheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcz4gbV9jb250ZW50TGF5ZXJTaGFyZWRWYWx1
ZXM7Ci0gICAgT3duUHRyPENhbnZhc0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcz4gbV9jYW52
YXNMYXllclNoYXJlZFZhbHVlczsKLSAgICBPd25QdHI8VmlkZW9MYXllckNocm9taXVtOjpTaGFy
ZWRWYWx1ZXM+IG1fdmlkZW9MYXllclNoYXJlZFZhbHVlczsKLSAgICBPd25QdHI8UGx1Z2luTGF5
ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzPiBtX3BsdWdpbkxheWVyU2hhcmVkVmFsdWVzOwotICAg
IE93blB0cjxSZW5kZXJTdXJmYWNlQ2hyb21pdW06OlNoYXJlZFZhbHVlcz4gbV9yZW5kZXJTdXJm
YWNlU2hhcmVkVmFsdWVzOwotICAgIE93blB0cjxMYXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZh
bHVlcz4gbV90aWxlclNoYXJlZFZhbHVlczsKKyAgICBPd25QdHI8R2VvbWV0cnlCaW5kaW5nPiBt
X3NoYXJlZEdlb21ldHJ5OworICAgIE93blB0cjxMYXllckNocm9taXVtOjpCb3JkZXJQcm9ncmFt
PiBtX2JvcmRlclByb2dyYW07CisgICAgT3duUHRyPENvbnRlbnRMYXllckNocm9taXVtOjpQcm9n
cmFtPiBtX2NvbnRlbnRMYXllclByb2dyYW07CisgICAgT3duUHRyPENhbnZhc0xheWVyQ2hyb21p
dW06OlByb2dyYW0+IG1fY2FudmFzTGF5ZXJQcm9ncmFtOworICAgIE93blB0cjxWaWRlb0xheWVy
Q2hyb21pdW06OlJHQkFQcm9ncmFtPiBtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbTsKKyAgICBPd25Q
dHI8VmlkZW9MYXllckNocm9taXVtOjpZVVZQcm9ncmFtPiBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFt
OworICAgIE93blB0cjxQbHVnaW5MYXllckNocm9taXVtOjpQcm9ncmFtPiBtX3BsdWdpbkxheWVy
UHJvZ3JhbTsKKyAgICBPd25QdHI8UmVuZGVyU3VyZmFjZUNocm9taXVtOjpQcm9ncmFtPiBtX3Jl
bmRlclN1cmZhY2VQcm9ncmFtOworICAgIE93blB0cjxSZW5kZXJTdXJmYWNlQ2hyb21pdW06Ok1h
c2tQcm9ncmFtPiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbTsKKyAgICBPd25QdHI8TGF5ZXJU
aWxlckNocm9taXVtOjpQcm9ncmFtPiBtX3RpbGVyUHJvZ3JhbTsKIAogICAgIE93blB0cjxUZXh0
dXJlTWFuYWdlcj4gbV90ZXh0dXJlTWFuYWdlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1
bS5jcHAKaW5kZXggYzhhYzAyMTY3ODMzMzU1YjNjNzYwZDU0YTg3NmQ2ZDZkNDdmY2E2MC4uMWI2
MDgyOTE2OWIzMzI5Yjc0NTQzMDg0ZmE2ZTc0NjU3NDViOWI0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRp
bGVyQ2hyb21pdW0uY3BwCkBAIC0zOTEsOSArMzkxLDkgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OmRyYXcoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsK
LSAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogc2hhcmVkVmFsdWVz
ID0gbGF5ZXJSZW5kZXJlcigpLT50aWxlclNoYXJlZFZhbHVlcygpOwotICAgIGxheWVyUmVuZGVy
ZXIoKS0+dXNlU2hhZGVyKHNoYXJlZFZhbHVlcy0+dGlsZXJTaGFkZXJQcm9ncmFtKCkpOwotICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc2hhcmVkVmFsdWVzLT5zaGFkZXJTYW1w
bGVyTG9jYXRpb24oKSwgMCkpOworICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3Jh
bSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+dGlsZXJQcm9ncmFtKCk7CisgICAgbGF5ZXJS
ZW5kZXJlcigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsKKyAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxv
Y2F0aW9uKCksIDApKTsKIAogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAg
Y29udGVudFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBi
b3R0b20pOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVY
ID0gdGlsZVJlY3Qud2lkdGgoKSAvIHRpbGVXaWR0aDsKICAgICAgICAgICAgIGZsb2F0IHRleFNj
YWxlWSA9IHRpbGVSZWN0LmhlaWdodCgpIC8gdGlsZUhlaWdodDsKIAotICAgICAgICAgICAgZHJh
d1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgo
KSwgdGlsZU1hdHJpeCwgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIDEsIHRl
eFRyYW5zbGF0ZVgsIHRleFRyYW5zbGF0ZVksIHRleFNjYWxlWCwgdGV4U2NhbGVZLCBzaGFyZWRW
YWx1ZXMpOworICAgICAgICAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRl
cmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgdGlsZU1hdHJpeCwgdGlsZVJlY3Qud2lkdGgoKSwg
dGlsZVJlY3QuaGVpZ2h0KCksIDEsIHRleFRyYW5zbGF0ZVgsIHRleFRyYW5zbGF0ZVksIHRleFNj
YWxlWCwgdGV4U2NhbGVZLCBwcm9ncmFtKTsKIAogICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgp
LT51bnJlc2VydmUoKTsKICAgICAgICAgfQpAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQgTGF5ZXJU
aWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBUcmFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xhdGVYLCBmbG9hdCB0ZXhUcmFuc2xhdGVZ
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCwg
ZmxvYXQgdGV4U2NhbGVZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IExheWVyVGlsZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzKiBzdikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0q
IHByb2dyYW0pCiB7CiAgICAgc3RhdGljIGZsb2F0IGdsTWF0cml4WzE2XTsKIApAQCAtNDc3LDkz
ICs0NzcsMTYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFRyYW4KICAgICAvLyBBcHBseSB0aGUgcHJv
amVjdGlvbiBtYXRyaXggYmVmb3JlIHNlbmRpbmcgdGhlIHRyYW5zZm9ybSBvdmVyIHRvIHRoZSBz
aGFkZXIuCiAgICAgTGF5ZXJDaHJvbWl1bTo6dG9HTE1hdHJpeCgmZ2xNYXRyaXhbMF0sIHByb2pl
Y3Rpb25NYXRyaXggKiByZW5kZXJNYXRyaXgpOwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PnVuaWZvcm1NYXRyaXg0ZnYoc3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCksIGZhbHNlLCAmZ2xN
YXRyaXhbMF0sIDEpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybU1hdHJpeDRm
dihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLCBmYWxzZSwgJmdsTWF0
cml4WzBdLCAxKSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHN2LT5z
aGFkZXJBbHBoYUxvY2F0aW9uKCksIG9wYWNpdHkpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCBv
cGFjaXR5KSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHN2LT5zaGFk
ZXJUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLAorICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlm
b3JtNGYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkudGV4VHJhbnNmb3JtTG9jYXRpb24oKSwKICAg
ICAgICAgdGV4VHJhbnNsYXRlWCwgdGV4VHJhbnNsYXRlWSwgdGV4U2NhbGVYLCB0ZXhTY2FsZVkp
KTsKIAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250
ZXh0M0Q6OlRSSUFOR0xFUywgNiwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCAw
KSk7CiB9CiAKLUxheWVyVGlsZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjpTaGFyZWRWYWx1ZXMo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAg
ICAsIG1fdGlsZXJTaGFkZXJQcm9ncmFtKDApCi0gICAgLCBtX3NoYWRlclNhbXBsZXJMb2NhdGlv
bigtMSkKLSAgICAsIG1fc2hhZGVyTWF0cml4TG9jYXRpb24oLTEpCi0gICAgLCBtX3NoYWRlckFs
cGhhTG9jYXRpb24oLTEpCi0gICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQotewotICAgIC8vIFNo
YWRlcnMgZm9yIGRyYXdpbmcgdGhlIGxheWVyIGNvbnRlbnRzLgotICAgIGNoYXIgdmVydGV4U2hh
ZGVyU3RyaW5nW10gPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsgICBcbiIK
LSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7ICAgXG4iCi0gICAgICAgICJ1bmlm
b3JtIG1hdDQgbWF0cml4OyAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHRleFRy
YW5zZm9ybTsgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAgXG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSBt
YXRyaXggKiBhX3Bvc2l0aW9uOyBcbiIKLSAgICAgICAgIiAgdl90ZXhDb29yZCA9IGFfdGV4Q29v
cmQgKiB0ZXhUcmFuc2Zvcm0uencgKyB0ZXhUcmFuc2Zvcm0ueHk7XG4iCi0gICAgICAgICJ9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLQotI2lmIFBMQVRGT1JNKFNLSUEpCi0gICAg
Ly8gQ29sb3IgaXMgaW4gUkdCQSBvcmRlci4KLSAgICBjaGFyIHJnYmFGcmFnbWVudFNoYWRlclN0
cmluZ1tdID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHNf
dGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gZmxv
YXQgYWxwaGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAg
ICAgICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcbiIKLSAgICAgICAgIiAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZf
dGV4Q29vcmQpOyBcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdGV4Q29sb3IgKiBhbHBo
YTsgXG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXG4iOwotI2VuZGlmCi0KLSAgICAvLyBDb2xvciBpcyBpbiBCR1JBIG9yZGVy
LgotICAgIGNoYXIgYmdyYUZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAg
ICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu
IgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAg
ICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICB2ZWM0IHRl
eENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCk7IFxuIgotICAgICAgICAi
ICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENvbG9yLnosIHRleENvbG9yLnksIHRleENvbG9yLngs
IHRleENvbG9yLncpICogYWxwaGE7IFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLQotI2lmIFBMQVRGT1JNKFNLSUEp
Ci0gICAgLy8gQXNzdW1pbmcgdGhlIHBhY2tpbmcgaXMgZWl0aGVyIFNraWEgZGVmYXVsdCBSR0JB
IG9yIENocm9taXVtIGRlZmF1bHQgQkdSQS4KLSAgICBjaGFyKiBmcmFnbWVudFNoYWRlclN0cmlu
ZyA9IFNLX0IzMl9TSElGVCA/IHJnYmFGcmFnbWVudFNoYWRlclN0cmluZyA6IGJncmFGcmFnbWVu
dFNoYWRlclN0cmluZzsKLSNlbHNlCi0gICAgY2hhciogZnJhZ21lbnRTaGFkZXJTdHJpbmcgPSBi
Z3JhRnJhZ21lbnRTaGFkZXJTdHJpbmc7Ci0jZW5kaWYKLSAgICBtX3RpbGVyU2hhZGVyUHJvZ3Jh
bSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZVNoYWRlclByb2dyYW0obV9jb250ZXh0LCB2ZXJ0ZXhT
aGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nKTsKLSAgICBpZiAoIW1fdGlsZXJTaGFk
ZXJQcm9ncmFtKSB7Ci0gICAgICAgIExPR19FUlJPUigiTGF5ZXJUaWxlckNocm9taXVtOiBGYWls
ZWQgdG8gY3JlYXRlIHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKG1fdGlsZXJTaGFkZXJQcm9ncmFtLCAic190ZXh0dXJlIik7Ci0gICAgbV9zaGFkZXJNYXRy
aXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fdGlsZXJTaGFkZXJQ
cm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV9zaGFkZXJBbHBoYUxvY2F0aW9uID0gbV9jb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24obV90aWxlclNoYWRlclByb2dyYW0sICJhbHBoYSIpOwotICAg
IG1fc2hhZGVyVGV4VHJhbnNmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihtX3RpbGVyU2hhZGVyUHJvZ3JhbSwgInRleFRyYW5zZm9ybSIpOwotICAgIEFTU0VSVCht
X3NoYWRlclNhbXBsZXJMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fc2hhZGVyTWF0cml4
TG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3NoYWRlckFscGhhTG9jYXRpb24gIT0gLTEp
OwotICAgIEFTU0VSVChtX3NoYWRlclRleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xKTsKLQotICAg
IG1faW5pdGlhbGl6ZWQgPSB0cnVlOwotfQotCi1MYXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZh
bHVlczo6flNoYXJlZFZhbHVlcygpCi17Ci0gICAgaWYgKG1fdGlsZXJTaGFkZXJQcm9ncmFtKQot
ICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV90aWxlclNo
YWRlclByb2dyYW0pKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaApp
bmRleCA0YjYzOTlkMDdkNWFlNmYyYWI4ZWZmMmZlOTg0MTQ4MTBkYTJkZmQzLi4zN2U1MGVmYzY2
NGViOTIzNGE4MGYzYzVlZDYzM2RlNGIzYWNmMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21p
dW0uaApAQCAtNjMsMjcgKzYzLDcgQEAgcHVibGljOgogICAgIC8vIENoYW5nZSB0aGUgdGlsZSBz
aXplLiAgVGhpcyBtYXkgaW52YWxpZGF0ZSBhbGwgdGhlIGV4aXN0aW5nIHRpbGVzLgogICAgIHZv
aWQgc2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSk7CiAKLSAgICBjbGFzcyBTaGFyZWRW
YWx1ZXMgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgU2hhcmVkVmFsdWVzKEdyYXBo
aWNzQ29udGV4dDNEKik7Ci0gICAgICAgIH5TaGFyZWRWYWx1ZXMoKTsKLQotICAgICAgICB1bnNp
Z25lZCB0aWxlclNoYWRlclByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3RpbGVyU2hhZGVyUHJv
Z3JhbTsgfQotICAgICAgICBpbnQgc2hhZGVyU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9zaGFkZXJTYW1wbGVyTG9jYXRpb247IH0KLSAgICAgICAgaW50IHNoYWRlck1hdHJpeExv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJNYXRyaXhMb2NhdGlvbjsgfQotICAgICAg
ICBpbnQgc2hhZGVyQWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVyQWxwaGFM
b2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyVGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3NoYWRlclRleFRyYW5zZm9ybUxvY2F0aW9uOyB9Ci0gICAgICAgIGludCBp
bml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7IH0KLQotICAgIHByaXZh
dGU6Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7Ci0gICAgICAgIHVuc2ln
bmVkIG1fdGlsZXJTaGFkZXJQcm9ncmFtOwotICAgICAgICBpbnQgbV9zaGFkZXJTYW1wbGVyTG9j
YXRpb247Ci0gICAgICAgIGludCBtX3NoYWRlck1hdHJpeExvY2F0aW9uOwotICAgICAgICBpbnQg
bV9zaGFkZXJBbHBoYUxvY2F0aW9uOwotICAgICAgICBpbnQgbV9zaGFkZXJUZXhUcmFuc2Zvcm1M
b2NhdGlvbjsKLSAgICAgICAgaW50IG1faW5pdGlhbGl6ZWQ7Ci0gICAgfTsKKyAgICB0eXBlZGVm
IFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFk
ZXJUZXhBbHBoYT4gUHJvZ3JhbTsKIAogcHJpdmF0ZToKICAgICBMYXllclRpbGVyQ2hyb21pdW0o
TGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRl
eGVsT3B0aW9uKTsKQEAgLTEwOCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFRyYW5zbGF0ZVgsIGZsb2F0IHRleFRyYW5z
bGF0ZVksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCwgZmxvYXQg
dGV4U2NhbGVZLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXllclRpbGVyQ2hy
b21pdW06OlNoYXJlZFZhbHVlcyopOworICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBM
YXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qKTsKIAogICAgIHZvaWQgcmVzaXplTGF5ZXIoY29u
c3QgSW50U2l6ZSYgc2l6ZSk7CiAgICAgLy8gR3JvdyBsYXllciBzaXplIHRvIGNvbnRhaW4gdGhp
cyByZWN0YW5nbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDg3OGMx
NDJjODc5YTcyZGQ3ZjE5NDhiMmNlZDZlNDVmMmY5YWY5MTAuLjgwOWViMzc2NDQ5ODI2NDRhNGFi
ODhmMTZhZmFkMDUzMTk2YzIzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3Bw
CkBAIC0zNSw1OCArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBsdWdpbkxheWVy
Q2hyb21pdW06OlNoYXJlZFZhbHVlczo6U2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3NoYWRlclByb2dyYW0o
MCkKLSAgICAsIG1fc2hhZGVyU2FtcGxlckxvY2F0aW9uKC0xKQotICAgICwgbV9zaGFkZXJNYXRy
aXhMb2NhdGlvbigtMSkKLSAgICAsIG1fc2hhZGVyQWxwaGFMb2NhdGlvbigtMSkKLSAgICAsIG1f
aW5pdGlhbGl6ZWQoZmFsc2UpCi17Ci0gICAgY2hhciB2ZXJ0ZXhTaGFkZXJTdHJpbmdbXSA9Ci0g
ICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOyAgIFxuIgotICAgICAgICAiYXR0cmli
dXRlIHZlYzIgYV90ZXhDb29yZDsgICBcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0NCBtYXRyaXg7
ICAgICAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgIFxuIgot
ICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gbWF0
cml4ICogYV9wb3NpdGlvbjsgXG4iCi0gICAgICAgICIgIHZfdGV4Q29vcmQgPSBhX3RleENvb3Jk
OyAgIFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSAg
ICBjaGFyIGZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidmFyeWlu
ZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAg
ICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgIFxu
IgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICB2ZWM0IHRleENvbG9yID0g
dGV4dHVyZTJEKHNfdGV4dHVyZSwgdmVjMih2X3RleENvb3JkLngsIHZfdGV4Q29vcmQueSkpOyBc
biIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci54LCB0ZXhDb2xvci55
LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFscGhhOyBcbiIKLSAgICAgICAgIn0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSAgICBt
X3NoYWRlclByb2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29udGV4dCwgdmVydGV4U2hh
ZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZyk7Ci0gICAgaWYgKCFtX3NoYWRlclByb2dy
YW0pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJQbHVnaW5MYXllckNocm9taXVtOiBGYWlsZWQgdG8g
Y3JlYXRlIHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBt
X3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1f
c2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIpOwotICAgIG1fc2hhZGVyTWF0cml4TG9jYXRpb24g
PSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJtYXRyaXgi
KTsKLSAgICBtX3NoYWRlckFscGhhTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihtX3NoYWRlclByb2dyYW0sICJhbHBoYSIpOwotICAgIEFTU0VSVChtX3NoYWRlclNhbXBs
ZXJMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fc2hhZGVyTWF0cml4TG9jYXRpb24gIT0g
LTEpOwotICAgIEFTU0VSVChtX3NoYWRlckFscGhhTG9jYXRpb24gIT0gLTEpOwotCi0gICAgbV9p
bml0aWFsaXplZCA9IHRydWU7Ci19Ci0KLVBsdWdpbkxheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVl
czo6flNoYXJlZFZhbHVlcygpCi17Ci0gICAgaWYgKG1fc2hhZGVyUHJvZ3JhbSkKLSAgICAgICAg
R0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fc2hhZGVyUHJvZ3JhbSkp
OwotfQotCiBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IFBsdWdpbkxheWVyQ2hyb21p
dW06OmNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUGx1Z2luTGF5ZXJDaHJvbWl1bShvd25lcikpOwpAQCAtMTA5LDggKzU3LDgg
QEAgdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c0lmRGlydHkoKQogdm9p
ZCBQbHVnaW5MYXllckNocm9taXVtOjpkcmF3KCkKIHsKICAgICBBU1NFUlQobGF5ZXJSZW5kZXJl
cigpKTsKLSAgICBjb25zdCBQbHVnaW5MYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMqIHN2ID0g
bGF5ZXJSZW5kZXJlcigpLT5wbHVnaW5MYXllclNoYXJlZFZhbHVlcygpOwotICAgIEFTU0VSVChz
diAmJiBzdi0+aW5pdGlhbGl6ZWQoKSk7CisgICAgY29uc3QgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6
UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+cGx1Z2luTGF5ZXJQcm9ncmFtKCk7
CisgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CiAgICAgR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwogICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKSk7CiAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZUlk
KSk7CkBAIC0xMjIsMTEgKzcwLDEyIEBAIHZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6ZHJhdygp
CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpKTsKICAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwg
R0xfQ0xBTVBfVE9fRURHRSkpOwogICAgIAotICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVy
KHN2LT5zaGFkZXJQcm9ncmFtKCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3Jt
MWkoc3YtPnNoYWRlclNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CisgICAgbGF5ZXJSZW5kZXJlcigp
LT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCks
IDApKTsKICAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJv
amVjdGlvbk1hdHJpeCgpLCBkcmF3VHJhbnNmb3JtKCksCiAgICAgICAgICAgICAgICAgICAgICBi
b3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSwgZHJhd09wYWNpdHkoKSwKLSAgICAg
ICAgICAgICAgICAgICAgIHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBzdi0+c2hhZGVyQWxw
aGFMb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRl
cigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFn
bWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVy
Q2hyb21pdW0uaAppbmRleCA4NTNiMzI4OTc3YzQ0M2NkZjcwN2NjM2E5NWI3OTVmOWRiOTM2ZmRm
Li5jMTZiNGU1OWE1OGUyYTYyYzVkNTVlNWNmMTY1M2YwYjM3NGY1YTUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1
Z2luTGF5ZXJDaHJvbWl1bS5oCkBAIC00MywyNSArNDMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKTsKICAgICAgICAgCi0gICAgY2xh
c3MgU2hhcmVkVmFsdWVzIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNoYXJlZFZhbHVlcyhHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCk7Ci0gICAgICAgIH5TaGFyZWRWYWx1ZXMoKTsKLQotICAg
ICAgICB1bnNpZ25lZCBzaGFkZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJQcm9n
cmFtOyB9Ci0gICAgICAgIGludCBzaGFkZXJTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyTWF0cml4TG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlck1hdHJpeExvY2F0aW9uOyB9Ci0gICAgICAg
IGludCBzaGFkZXJBbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJBbHBoYUxv
Y2F0aW9uOyB9Ci0gICAgICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lu
aXRpYWxpemVkOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCog
bV9jb250ZXh0OwotICAgICAgICB1bnNpZ25lZCBtX3NoYWRlclByb2dyYW07Ci0gICAgICAgIGlu
dCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fc2hhZGVyTWF0cml4TG9j
YXRpb247Ci0gICAgICAgIGludCBtX3NoYWRlckFscGhhTG9jYXRpb247Ci0gICAgICAgIGJvb2wg
bV9pbml0aWFsaXplZDsKLSAgICB9OworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4
U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUHJvZ3JhbTsKIAogcHJp
dmF0ZToKICAgICBQbHVnaW5MYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3du
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUHJvZ3JhbUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiZTAwZWZmZGJlNTRiZWZk
YzI0MmU1ODQ1MDVkM2QxZGI1M2RlZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHAKQEAgLTAsMCAr
MSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgorCisjaW5jbHVk
ZSAiR2VvbWV0cnlCaW5kaW5nLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21p
dW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQcm9ncmFtQmluZGluZ0Jhc2U6OlByb2dy
YW1CaW5kaW5nQmFzZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICA6IG1fY29udGV4
dChjb250ZXh0KQorICAgICwgbV9wcm9ncmFtKDApCisgICAgLCBtX2luaXRpYWxpemVkKGZhbHNl
KQoreworfQorCitQcm9ncmFtQmluZGluZ0Jhc2U6On5Qcm9ncmFtQmluZGluZ0Jhc2UoKQorewor
ICAgIGlmIChtX3Byb2dyYW0pCisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVs
ZXRlUHJvZ3JhbShtX3Byb2dyYW0pKTsKK30KKworYm9vbCBQcm9ncmFtQmluZGluZ0Jhc2U6Omlu
aXQoY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFk
ZXIpCit7CisgICAgbV9wcm9ncmFtID0gY3JlYXRlU2hhZGVyUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIs
IGZyYWdtZW50U2hhZGVyKTsKKyAgICBpZiAoIW1fcHJvZ3JhbSkgeworICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIHByb2dyYW0iKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordW5zaWduZWQgUHJvZ3JhbUJpbmRp
bmdCYXNlOjpsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVyU291
cmNlKQoreworICAgIHVuc2lnbmVkIHNoYWRlciA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKHR5
cGUpOworICAgIGlmICghc2hhZGVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICBTdHJpbmcgc291
cmNlU3RyaW5nKHNoYWRlclNvdXJjZSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5z
aGFkZXJTb3VyY2Uoc2hhZGVyLCBzb3VyY2VTdHJpbmcpKTsKKyAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoc2hhZGVyKSk7CisgICAgaW50IGNvbXBpbGVkID0gMDsK
KyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVTLCAmY29tcGlsZWQpKTsKKyAgICBpZiAoIWNvbXBp
bGVkKSB7CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHNo
YWRlcikpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHNoYWRlcjsKK30K
KwordW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtKGNvbnN0
IFN0cmluZyYgdmVydGV4U2hhZGVyU291cmNlLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVy
U291cmNlKQoreworICAgIHVuc2lnbmVkIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIsIHZlcnRleFNoYWRlclNvdXJjZSk7CisgICAgaWYg
KCF2ZXJ0ZXhTaGFkZXIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHZl
cnRleCBzaGFkZXIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdW5zaWduZWQg
ZnJhZ21lbnRTaGFkZXIgPSBsb2FkU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9T
SEFERVIsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBpZiAoIWZyYWdtZW50U2hhZGVyKSB7
CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNo
YWRlcikpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZnJhZ21lbnQgc2hh
ZGVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHVuc2lnbmVkIHByb2dyYW1P
YmplY3QgPSBtX2NvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICBpZiAoIXByb2dyYW1PYmpl
Y3QpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBwcm9ncmFt
Iik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW1PYmplY3QsIHZlcnRleFNoYWRlcikpOworICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW1PYmplY3QsIGZyYWdt
ZW50U2hhZGVyKSk7CisKKyAgICAvLyBCaW5kIHRoZSBjb21tb24gYXR0cmliIGxvY2F0aW9ucy4K
KyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
T2JqZWN0LCBHZW9tZXRyeUJpbmRpbmc6OnBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSwgImFfcG9z
aXRpb24iKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kQXR0cmliTG9jYXRp
b24ocHJvZ3JhbU9iamVjdCwgR2VvbWV0cnlCaW5kaW5nOjp0ZXhDb29yZEF0dHJpYkxvY2F0aW9u
KCksICJhX3RleENvb3JkIikpOworCisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5saW5r
UHJvZ3JhbShwcm9ncmFtT2JqZWN0KSk7CisgICAgaW50IGxpbmtlZCA9IDA7CisgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbU9iamVjdCwgR3JhcGhpY3ND
b250ZXh0M0Q6OkxJTktfU1RBVFVTLCAmbGlua2VkKSk7CisgICAgaWYgKCFsaW5rZWQpIHsKKyAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbGluayBzaGFkZXIgcHJvZ3JhbSIpOworICAgICAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbU9iamVjdCkp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmRlbGV0ZVNoYWRlcihmcmFnbWVudFNoYWRlcikpOworICAgIHJldHVybiBwcm9ncmFt
T2JqZWN0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmJm
NjA1NjE2ZGQ3MmJjNDI4ODA4NmY2YmY0OGI2NDI0M2RjNmYyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcu
aApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQcm9ncmFtQmluZGluZ19oCisjZGVm
aW5lIFByb2dyYW1CaW5kaW5nX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisKK2NsYXNzIFByb2dyYW1CaW5kaW5nQmFzZSB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgUHJvZ3JhbUJpbmRpbmdCYXNlKEdyYXBoaWNzQ29udGV4dDNE
Kik7CisgICAgflByb2dyYW1CaW5kaW5nQmFzZSgpOworCisgICAgYm9vbCBpbml0KGNvbnN0IFN0
cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyKTsKKworICAg
IHVuc2lnbmVkIHByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW07IH0KKyAgICBib29s
IGluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplZDsgfQorCitwcm90ZWN0
ZWQ6CisKKyAgICB1bnNpZ25lZCBsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgc2hhZGVyU291cmNlKTsKKyAgICB1bnNpZ25lZCBjcmVhdGVTaGFkZXJQcm9ncmFtKGNvbnN0
IFN0cmluZyYgdmVydGV4U2hhZGVyU291cmNlLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVy
U291cmNlKTsKKworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgdW5zaWdu
ZWQgbV9wcm9ncmFtOworICAgIGJvb2wgbV9pbml0aWFsaXplZDsKK307CisKK3RlbXBsYXRlPGNs
YXNzIFZlcnRleFNoYWRlciwgY2xhc3MgRnJhZ21lbnRTaGFkZXI+CitjbGFzcyBQcm9ncmFtQmlu
ZGluZyA6IHB1YmxpYyBQcm9ncmFtQmluZGluZ0Jhc2UgeworcHVibGljOgorICAgIGV4cGxpY2l0
IFByb2dyYW1CaW5kaW5nKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAgICA6IFBy
b2dyYW1CaW5kaW5nQmFzZShjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFQcm9ncmFtQmlu
ZGluZ0Jhc2U6OmluaXQobV92ZXJ0ZXhTaGFkZXIuZ2V0U2hhZGVyU3RyaW5nKCksIG1fZnJhZ21l
bnRTaGFkZXIuZ2V0U2hhZGVyU3RyaW5nKCkpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAoIW1fdmVydGV4U2hhZGVyLmluaXQobV9jb250ZXh0LCBtX3Byb2dyYW0pKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIW1fZnJhZ21lbnRTaGFkZXIuaW5pdChtX2NvbnRl
eHQsIG1fcHJvZ3JhbSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1faW5pdGlhbGl6
ZWQgPSB0cnVlOworICAgIH0KKworICAgIGNvbnN0IFZlcnRleFNoYWRlciYgdmVydGV4U2hhZGVy
KCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhTaGFkZXI7IH0KKyAgICBjb25zdCBGcmFnbWVudFNo
YWRlciYgZnJhZ21lbnRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyOyB9
CisKK3ByaXZhdGU6CisKKyAgICBWZXJ0ZXhTaGFkZXIgbV92ZXJ0ZXhTaGFkZXI7CisgICAgRnJh
Z21lbnRTaGFkZXIgbV9mcmFnbWVudFNoYWRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5k
ZXJTdXJmYWNlQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAppbmRleCBiM2NlOWQ3MjM3MTY4Yzk1
NDcwMTRkMmNhNTM0ZDMyZTk4YzBmMzBjLi4wYWQ2YTgyNGMwZmY5ZjlmOGMxNzI0YzY1NDlhYWZl
Y2QyZGM2MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKQEAgLTM1
LDkxICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU3VyZmFjZUNocm9t
aXVtOjpTaGFyZWRWYWx1ZXM6OlNoYXJlZFZhbHVlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9zaGFkZXJQcm9ncmFtKDApCi0g
ICAgLCBtX21hc2tTaGFkZXJQcm9ncmFtKDApCi0gICAgLCBtX3NoYWRlclNhbXBsZXJMb2NhdGlv
bigtMSkKLSAgICAsIG1fc2hhZGVyTWF0cml4TG9jYXRpb24oLTEpCi0gICAgLCBtX3NoYWRlckFs
cGhhTG9jYXRpb24oLTEpCi0gICAgLCBtX21hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb24oLTEpCi0g
ICAgLCBtX21hc2tTaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uKC0xKQotICAgICwgbV9tYXNrU2hh
ZGVyTWF0cml4TG9jYXRpb24oLTEpCi0gICAgLCBtX21hc2tTaGFkZXJBbHBoYUxvY2F0aW9uKC0x
KQotICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKLXsKLSAgICBjaGFyIHZlcnRleFNoYWRlclN0
cmluZ1tdID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247ICAgXG4iCi0gICAg
ICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOyAgIFxuIgotICAgICAgICAidW5pZm9ybSBt
YXQ0IG1hdHJpeDsgICAgICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3Jk
OyAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgIFxuIgotICAg
ICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgIiAgZ2xfUG9z
aXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOyBcbiIKLSAgICAgICAgIiAgdl90ZXhDb29yZCA9
IGFfdGV4Q29vcmQ7ICAgXG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIjsKLSAgICBjaGFyIGZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAg
ICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu
IgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAg
ICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICB2ZWM0IHRl
eENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCk7IFxuIgotICAgICAgICAi
ICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnos
IHRleENvbG9yLncpICogYWxwaGE7IFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLSAgICBjaGFyIGZyYWdtZW50U2hh
ZGVyV2l0aE1hc2tTdHJpbmdbXSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90
ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3Jt
IHNhbXBsZXIyRCBzX3RleHR1cmU7ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAg
ICJ1bmlmb3JtIHNhbXBsZXIyRCBzX21hc2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4i
Ci0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGFscGhhOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIHZlYzQgdGV4Q29sb3IgPSB0
ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsgXG4iCi0gICAgICAgICIgIHZlYzQgbWFz
a0NvbG9yID0gdGV4dHVyZTJEKHNfbWFzaywgdl90ZXhDb29yZCk7ICAgXG4iCi0gICAgICAgICIg
IGdsX0ZyYWdDb2xvciA9IHZlYzQodGV4Q29sb3IueCwgdGV4Q29sb3IueSwgdGV4Q29sb3Iueiwg
dGV4Q29sb3IudykgKiBhbHBoYSAqIG1hc2tDb2xvci53OyBcbiIKLSAgICAgICAgIn0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSAgICBt
X3NoYWRlclByb2dyYW0gPSBMYXllckNocm9taXVtOjpjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29u
dGV4dCwgdmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZyk7Ci0gICAgbV9t
YXNrU2hhZGVyUHJvZ3JhbSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZVNoYWRlclByb2dyYW0obV9j
b250ZXh0LCB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyV2l0aE1hc2tTdHJpbmcp
OwotICAgIGlmICghbV9zaGFkZXJQcm9ncmFtIHx8ICFtX21hc2tTaGFkZXJQcm9ncmFtKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiUmVuZGVyU3VyZmFjZUNocm9taXVtOiBGYWlsZWQgdG8gY3JlYXRl
IHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTEMobV9j
b250ZXh0LCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIpKTsKLSAgICBHTEMobV9jb250ZXh0
LCBtX3NoYWRlck1hdHJpeExvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
bV9zaGFkZXJQcm9ncmFtLCAibWF0cml4IikpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fc2hhZGVy
QWxwaGFMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fc2hhZGVyUHJv
Z3JhbSwgImFscGhhIikpOwotCi0gICAgR0xDKG1fY29udGV4dCwgbV9tYXNrU2hhZGVyU2FtcGxl
ckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9tYXNrU2hhZGVyUHJv
Z3JhbSwgInNfdGV4dHVyZSIpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX21hc2tTaGFkZXJNYXNr
U2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9tYXNrU2hh
ZGVyUHJvZ3JhbSwgInNfbWFzayIpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX21hc2tTaGFkZXJN
YXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fbWFza1NoYWRl
clByb2dyYW0sICJtYXRyaXgiKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9tYXNrU2hhZGVyQWxw
aGFMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fbWFza1NoYWRlclBy
b2dyYW0sICJhbHBoYSIpKTsKLQotICAgIGlmIChtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9PSAt
MSB8fCBtX3NoYWRlck1hdHJpeExvY2F0aW9uID09IC0xIHx8IG1fc2hhZGVyQWxwaGFMb2NhdGlv
biA9PSAtMQotICAgICAgICB8fCBtX21hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb24gPT0gLTEgfHwg
bV9tYXNrU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiA9PSAtMSB8fCBtX21hc2tTaGFkZXJNYXRy
aXhMb2NhdGlvbiA9PSAtMSB8fCBtX21hc2tTaGFkZXJBbHBoYUxvY2F0aW9uID09IC0xKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxpemUgcmVuZGVyIHN1cmZhY2Ugc2hh
ZGVycy4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+dXNlUHJvZ3JhbShtX3NoYWRlclByb2dyYW0pKTsKLSAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPnVuaWZvcm0xaShtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiwgMCkpOwotICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3JhbShtX21hc2tTaGFkZXJQcm9ncmFt
KSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkobV9tYXNrU2hhZGVy
U2FtcGxlckxvY2F0aW9uLCAwKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlm
b3JtMWkobV9tYXNrU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgMSkpOwotICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3JhbSgwKSk7Ci0gICAgbV9pbml0aWFsaXplZCA9IHRy
dWU7Ci19Ci0KLVJlbmRlclN1cmZhY2VDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjp+U2hhcmVkVmFs
dWVzKCkKLXsKLSAgICBpZiAobV9zaGFkZXJQcm9ncmFtKQotICAgICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9zaGFkZXJQcm9ncmFtKSk7Ci0gICAgaWYgKG1f
bWFza1NoYWRlclByb2dyYW0pCi0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVs
ZXRlUHJvZ3JhbShtX21hc2tTaGFkZXJQcm9ncmFtKSk7Ci19Ci0KIFJlbmRlclN1cmZhY2VDaHJv
bWl1bTo6UmVuZGVyU3VyZmFjZUNocm9taXVtKExheWVyQ2hyb21pdW0qIG93bmluZ0xheWVyKQog
ICAgIDogbV9vd25pbmdMYXllcihvd25pbmdMYXllcikKICAgICAsIG1fbWFza0xheWVyKDApCkBA
IC0xODUsMzAgKzEwMCwzNCBAQCB2b2lkIFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6ZHJhd1N1cmZh
Y2UoTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyLCBjb25zdCBUcmFuc2ZvcgogCiAgICAgaW50IHNo
YWRlck1hdHJpeExvY2F0aW9uID0gLTE7CiAgICAgaW50IHNoYWRlckFscGhhTG9jYXRpb24gPSAt
MTsKLSAgICBjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogc3YgPSBs
YXllclJlbmRlcmVyKCktPnJlbmRlclN1cmZhY2VTaGFyZWRWYWx1ZXMoKTsKLSAgICBBU1NFUlQo
c3YgJiYgc3YtPmluaXRpYWxpemVkKCkpOworICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1
bTo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+cmVuZGVyU3VyZmFjZVByb2dy
YW0oKTsKKyAgICBjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06Ok1hc2tQcm9ncmFtKiBtYXNr
UHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7Cisg
ICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CiAgICAgYm9vbCB1
c2VNYXNrID0gZmFsc2U7CiAgICAgaWYgKG1hc2tMYXllciAmJiBtYXNrTGF5ZXItPmRyYXdzQ29u
dGVudCgpKSB7CiAgICAgICAgIG1hc2tMYXllci0+dXBkYXRlQ29udGVudHNJZkRpcnR5KCk7CiAg
ICAgICAgIGlmICghbWFza0xheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IGNvbnRleHQzRC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgICAgICAgICBsYXllclJlbmRl
cmVyKCktPnVzZVNoYWRlcihzdi0+bWFza1NoYWRlclByb2dyYW0oKSk7CisgICAgICAgICAgICBs
YXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihtYXNrUHJvZ3JhbS0+cHJvZ3JhbSgpKTsKICAgICAg
ICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRTApKTsKKyAgICAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQz
RC0+dW5pZm9ybTFpKG1hc2tQcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlv
bigpLCAwKSk7CiAgICAgICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+YmluZFRleHR1cmUoKTsK
ICAgICAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsKKyAgICAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNv
bnRleHQzRC0+dW5pZm9ybTFpKG1hc2tQcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1w
bGVyTG9jYXRpb24oKSwgMSkpOwogICAgICAgICAgICAgbWFza0xheWVyLT5iaW5kQ29udGVudHNU
ZXh0dXJlKCk7CiAgICAgICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmFjdGl2ZVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgICAgICAgICBzaGFkZXJN
YXRyaXhMb2NhdGlvbiA9IHN2LT5tYXNrU2hhZGVyTWF0cml4TG9jYXRpb24oKTsKLSAgICAgICAg
ICAgIHNoYWRlckFscGhhTG9jYXRpb24gPSBzdi0+bWFza1NoYWRlckFscGhhTG9jYXRpb24oKTsK
KyAgICAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uID0gbWFza1Byb2dyYW0tPnZlcnRleFNo
YWRlcigpLm1hdHJpeExvY2F0aW9uKCk7CisgICAgICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9u
ID0gbWFza1Byb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOwogICAgICAg
ICAgICAgdXNlTWFzayA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXVzZU1h
c2spIHsKLSAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIoc3YtPnNoYWRlclByb2dy
YW0oKSk7CisgICAgICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHByb2dyYW0tPnByb2dy
YW0oKSk7CiAgICAgICAgIG1fY29udGVudHNUZXh0dXJlLT5iaW5kVGV4dHVyZSgpOwotICAgICAg
ICBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpOwotICAg
ICAgICBzaGFkZXJBbHBoYUxvY2F0aW9uID0gc3YtPnNoYWRlckFscGhhTG9jYXRpb24oKTsKKyAg
ICAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOworICAgICAgICBzaGFkZXJNYXRyaXhM
b2NhdGlvbiA9IHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCk7CisgICAg
ICAgIHNoYWRlckFscGhhTG9jYXRpb24gPSBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhh
TG9jYXRpb24oKTsKICAgICB9CiAgICAgCiAgICAgTGF5ZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVk
UXVhZChsYXllclJlbmRlcmVyKCktPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0
aW9uTWF0cml4KCksIGRyYXdUcmFuc2Zvcm0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1
bS5oCmluZGV4IGIxZjZhNWNlYzgxZjBhY2QzM2M5ODhjODc3MzU0ZDdjYjI3Mjg3NzYuLjNlODlk
Nzk1ODZmMTE0ZGQ3MTczYzJmM2EzNDI0ZjBkOTY3ZTYxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1
cmZhY2VDaHJvbWl1bS5oCkBAIC0zMSw2ICszMSw4IEBACiAKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUHJvZ3JhbUJpbmRpbmcuaCIKKyNp
bmNsdWRlICJTaGFkZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KQEAgLTYwLDM5ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGRyYXdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFuc2Zvcm07IH0KIAot
ICAgIC8vIFN0b3JlcyB2YWx1ZXMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4gaW5zdGFuY2VzIG9m
IHRoaXMgY2xhc3MgdGhhdCBhcmUKLSAgICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgTGF5
ZXJSZW5kZXJlckNocm9taXVtIChhbmQgaGVuY2UgdGhlIHNhbWUgR0wKLSAgICAvLyBjb250ZXh0
KS4KLSAgICBjbGFzcyBTaGFyZWRWYWx1ZXMgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGlj
aXQgU2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKik7Ci0gICAgICAgIH5TaGFyZWRWYWx1
ZXMoKTsKLQotICAgICAgICB1bnNpZ25lZCBzaGFkZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4g
bV9zaGFkZXJQcm9ncmFtOyB9Ci0gICAgICAgIHVuc2lnbmVkIG1hc2tTaGFkZXJQcm9ncmFtKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXNrU2hhZGVyUHJvZ3JhbTsgfQotICAgICAgICBpbnQgc2hhZGVy
U2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJTYW1wbGVyTG9jYXRpb247
IH0KLSAgICAgICAgaW50IHNoYWRlck1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9z
aGFkZXJNYXRyaXhMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyQWxwaGFMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVyQWxwaGFMb2NhdGlvbjsgfQotICAgICAgICBpbnQgbWFz
a1NoYWRlclNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1NoYWRlclNhbXBs
ZXJMb2NhdGlvbjsgfQotICAgICAgICBpbnQgbWFza1NoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX21hc2tTaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uOyB9Ci0gICAg
ICAgIGludCBtYXNrU2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hc2tT
aGFkZXJNYXRyaXhMb2NhdGlvbjsgfQotICAgICAgICBpbnQgbWFza1NoYWRlckFscGhhTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX21hc2tTaGFkZXJBbHBoYUxvY2F0aW9uOyB9Ci0gICAgICAg
IGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9Ci0KLSAg
ICBwcml2YXRlOgotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwotCi0gICAg
ICAgIHVuc2lnbmVkIG1fc2hhZGVyUHJvZ3JhbTsKLSAgICAgICAgdW5zaWduZWQgbV9tYXNrU2hh
ZGVyUHJvZ3JhbTsKLSAgICAgICAgaW50IG1fc2hhZGVyU2FtcGxlckxvY2F0aW9uOwotICAgICAg
ICBpbnQgbV9zaGFkZXJNYXRyaXhMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fc2hhZGVyQWxwaGFM
b2NhdGlvbjsKLSAgICAgICAgaW50IG1fbWFza1NoYWRlclNhbXBsZXJMb2NhdGlvbjsKLSAgICAg
ICAgaW50IG1fbWFza1NoYWRlck1hc2tTYW1wbGVyTG9jYXRpb247Ci0gICAgICAgIGludCBtX21h
c2tTaGFkZXJNYXRyaXhMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fbWFza1NoYWRlckFscGhhTG9j
YXRpb247Ci0gICAgICAgIGJvb2wgbV9pbml0aWFsaXplZDsKLSAgICB9OworICAgIHR5cGVkZWYg
UHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhB
bHBoYT4gUHJvZ3JhbTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBv
c1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrPiBNYXNrUHJvZ3JhbTsKIAogcHJp
dmF0ZToKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1No
YWRlckNocm9taXVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWIzNDYyZTU1ZTFjNDdhMDg0ZjNmM2M3ODYz
ZWZkZWI5MzY5NWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsMzE3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorCisjaW5jbHVkZSAiU2hhZGVyQ2hyb21pdW0uaCIKKworI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisKKyNkZWZpbmUgU0hB
REVSMChTcmMpICNTcmMKKyNkZWZpbmUgU0hBREVSKFNyYykgU0hBREVSMChTcmMpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworVmVydGV4U2hhZGVyUG9zVGV4OjpWZXJ0ZXhTaGFkZXJQb3NUZXgo
KQorICAgIDogbV9tYXRyaXhMb2NhdGlvbigtMSkKK3sKK30KKworYm9vbCBWZXJ0ZXhTaGFkZXJQ
b3NUZXg6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0p
Cit7CisgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAibWF0cml4Iik7CisgICAgcmV0dXJuIG1fbWF0cml4TG9jYXRpb24gIT0gLTE7Cit9
CisKK1N0cmluZyBWZXJ0ZXhTaGFkZXJQb3NUZXg6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsK
KyAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBtYXQ0
IG1hdHJpeDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHZvaWQg
bWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gbWF0cml4ICogYV9w
b3NpdGlvbjsKKyAgICAgICAgICAgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOworICAgICAgICB9
CisgICAgKTsKK30KKworVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6VmVydGV4U2hhZGVy
UG9zVGV4WVVWU3RyZXRjaCgpCisgICAgOiBtX21hdHJpeExvY2F0aW9uKC0xKQorICAgICwgbV95
V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKC0xKQorICAgICwgbV91dldpZHRoU2NhbGVGYWN0b3JM
b2NhdGlvbigtMSkKK3sKK30KKworYm9vbCBWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoOjpp
bml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQoreworICAg
IG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
Im1hdHJpeCIpOworICAgIG1feVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAieV93aWR0aFNjYWxlRmFjdG9yIik7CisgICAgbV91
dldpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAidXZfd2lkdGhTY2FsZUZhY3RvciIpOworICAgIHJldHVybiBtX21hdHJpeExvY2F0
aW9uICE9IC0xICYmIG1feVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiAhPSAtMSAmJiBtX3V2V2lk
dGhTY2FsZUZhY3RvckxvY2F0aW9uICE9IC0xOworfQorCitTdHJpbmcgVmVydGV4U2hhZGVyUG9z
VGV4WVVWU3RyZXRjaDo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hB
REVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgYXR0cmlidXRl
IHZlYzQgYV9wb3NpdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsKKyAg
ICAgICAgdW5pZm9ybSBtYXQ0IG1hdHJpeDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHlfdGV4Q29v
cmQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB1dl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBm
bG9hdCB5X3dpZHRoU2NhbGVGYWN0b3I7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgdXZfd2lkdGhT
Y2FsZUZhY3RvcjsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAg
Z2xfUG9zaXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOworICAgICAgICAgICAgeV90ZXhDb29y
ZCA9IHZlYzIoeV93aWR0aFNjYWxlRmFjdG9yICogYV90ZXhDb29yZC54LCBhX3RleENvb3JkLnkp
OworICAgICAgICAgICAgdXZfdGV4Q29vcmQgPSB2ZWMyKHV2X3dpZHRoU2NhbGVGYWN0b3IgKiBh
X3RleENvb3JkLngsIGFfdGV4Q29vcmQueSk7CisgICAgICAgIH0KKyAgICApOworfQorCitWZXJ0
ZXhTaGFkZXJQb3M6OlZlcnRleFNoYWRlclBvcygpCisgICAgOiBtX21hdHJpeExvY2F0aW9uKC0x
KQoreworfQorCitib29sIFZlcnRleFNoYWRlclBvczo6aW5pdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX21hdHJpeExvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKKyAgICByZXR1cm4g
bV9tYXRyaXhMb2NhdGlvbiAhPSAtMTsKK30KKworU3RyaW5nIFZlcnRleFNoYWRlclBvczo6Z2V0
U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBhdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICB1bmlmb3JtIG1hdDQgbWF0cml4OworICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IG1h
dHJpeCAqIGFfcG9zaXRpb247CisgICAgICAgIH0KKyAgICApOworfQorCitWZXJ0ZXhTaGFkZXJQ
b3NUZXhUcmFuc2Zvcm06OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSgpCisgICAgOiBtX21h
dHJpeExvY2F0aW9uKC0xKQorICAgICwgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbigtMSkKK3sKK30K
KworYm9vbCBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06OmluaXQoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit7CisgICAgbV9tYXRyaXhMb2NhdGlvbiA9
IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7CisgICAgbV90
ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAidGV4VHJhbnNmb3JtIik7CisgICAgcmV0dXJuIG1fbWF0cml4TG9jYXRpb24gIT0gLTEgJiYg
bV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMTsKK30KKworU3RyaW5nIFZlcnRleFNoYWRlclBv
c1RleFRyYW5zZm9ybTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hB
REVSKAorICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICBhdHRyaWJ1
dGUgdmVjMiBhX3RleENvb3JkOworICAgICAgICB1bmlmb3JtIG1hdDQgbWF0cml4OworICAgICAg
ICB1bmlmb3JtIHZlYzQgdGV4VHJhbnNmb3JtOworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhD
b29yZDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9z
aXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOworICAgICAgICAgICAgdl90ZXhDb29yZCA9IGFf
dGV4Q29vcmQgKiB0ZXhUcmFuc2Zvcm0uencgKyB0ZXhUcmFuc2Zvcm0ueHk7CisgICAgICAgIH0K
KyAgICApOworfQorCitGcmFnbWVudFRleEFscGhhQmluZGluZzo6RnJhZ21lbnRUZXhBbHBoYUJp
bmRpbmcoKQorICAgIDogbV9zYW1wbGVyTG9jYXRpb24oLTEpCisgICAgLCBtX2FscGhhTG9jYXRp
b24oLTEpCit7Cit9CisKK2Jvb2wgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmc6OmluaXQoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit7CisgICAgbV9zYW1wbGVy
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVy
ZSIpOworICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAiYWxwaGEiKTsKKworICAgIHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAm
JiBtX2FscGhhTG9jYXRpb24gIT0gLTE7Cit9CisKK1N0cmluZyBGcmFnbWVudFNoYWRlclJHQkFU
ZXhGbGlwQWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURF
UigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVj
MiB2X3RleENvb3JkOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAg
ICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2ZWMyKHZf
dGV4Q29vcmQueCwgMS4wIC0gdl90ZXhDb29yZC55KSk7CisgICAgICAgICAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9yLncp
ICogYWxwaGE7CisgICAgICAgIH0KKyAgICApOworfQorCitTdHJpbmcgRnJhZ21lbnRTaGFkZXJS
R0JBVGV4QWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURF
UigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVj
MiB2X3RleENvb3JkOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAg
ICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENv
b3JkKTsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleENvbG9yICogYWxwaGE7CisgICAg
ICAgIH0KKyAgICApOworfQorCitTdHJpbmcgRnJhZ21lbnRTaGFkZXJCR1JBVGV4QWxwaGE6Omdl
dFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwor
ICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0gZmxv
YXQgYWxwaGE7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZl
YzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsKKyAgICAgICAg
ICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodGV4Q29sb3IueiwgdGV4Q29sb3IueSwgdGV4Q29sb3Iu
eCwgdGV4Q29sb3IudykgKiBhbHBoYTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK0ZyYWdtZW50
U2hhZGVyUkdCQVRleEFscGhhTWFzazo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCkK
KyAgICA6IG1fc2FtcGxlckxvY2F0aW9uKC0xKQorICAgICwgbV9tYXNrU2FtcGxlckxvY2F0aW9u
KC0xKQorICAgICwgbV9hbHBoYUxvY2F0aW9uKC0xKQoreworfQorCitib29sIEZyYWdtZW50U2hh
ZGVyUkdCQVRleEFscGhhTWFzazo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5z
aWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CisgICAgbV9tYXNrU2FtcGxlckxv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX21hc2siKTsK
KyAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bSwgImFscGhhIik7CisKKyAgICByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9t
YXNrU2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAtMTsKK30KKwor
U3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6Z2V0U2hhZGVyU3RyaW5nKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHVuaWZvcm0g
c2FtcGxlcjJEIHNfdGV4dHVyZTsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc19tYXNrOwor
ICAgICAgICB1bmlmb3JtIGZsb2F0IGFscGhhOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAg
ICB7CisgICAgICAgICAgICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90
ZXhDb29yZCk7CisgICAgICAgICAgICB2ZWM0IG1hc2tDb2xvciA9IHRleHR1cmUyRChzX21hc2ss
IHZfdGV4Q29vcmQpOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci54
LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFscGhhICogbWFza0NvbG9y
Lnc7CisgICAgICAgIH0KKyAgICApOworfQorCitGcmFnbWVudFNoYWRlcllVVlZpZGVvOjpGcmFn
bWVudFNoYWRlcllVVlZpZGVvKCkKKyAgICA6IG1feVRleHR1cmVMb2NhdGlvbigtMSkKKyAgICAs
IG1fdVRleHR1cmVMb2NhdGlvbigtMSkKKyAgICAsIG1fdlRleHR1cmVMb2NhdGlvbigtMSkKKyAg
ICAsIG1fYWxwaGFMb2NhdGlvbigtMSkKKyAgICAsIG1fY2NNYXRyaXhMb2NhdGlvbigtMSkKKyAg
ICAsIG1fc2lnbkFkakxvY2F0aW9uKC0xKQoreworfQorCitib29sIEZyYWdtZW50U2hhZGVyWVVW
VmlkZW86OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0p
Cit7CisgICAgbV95VGV4dHVyZUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJ5X3RleHR1cmUiKTsKKyAgICBtX3VUZXh0dXJlTG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfdGV4dHVyZSIpOworICAgIG1fdlRleHR1
cmVMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidl90ZXh0
dXJlIik7CisgICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJhbHBoYSIpOworICAgIG1fY2NNYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiY2NfbWF0cml4Iik7CisgICAgbV9zaWduQWRqTG9j
YXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFkaiIpOworCisg
ICAgcmV0dXJuIG1feVRleHR1cmVMb2NhdGlvbiAhPSAtMSAmJiBtX3VUZXh0dXJlTG9jYXRpb24g
IT0gLTEgJiYgbV92VGV4dHVyZUxvY2F0aW9uICE9IC0xCisgICAgICAgICAgICYmIG1fYWxwaGFM
b2NhdGlvbiAhPSAtMSAmJiBtX2NjTWF0cml4TG9jYXRpb24gIT0gLTEgJiYgbV9zaWduQWRqTG9j
YXRpb24gIT0gLTE7Cit9CisKK1N0cmluZyBGcmFnbWVudFNoYWRlcllVVlZpZGVvOjpnZXRTaGFk
ZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisgICAgICAg
IHZhcnlpbmcgdmVjMiB5X3RleENvb3JkOworICAgICAgICB2YXJ5aW5nIHZlYzIgdXZfdGV4Q29v
cmQ7CisgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHlfdGV4dHVyZTsKKyAgICAgICAgdW5pZm9y
bSBzYW1wbGVyMkQgdV90ZXh0dXJlOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB2X3RleHR1
cmU7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7CisgICAgICAgIHVuaWZvcm0gZmxvYXQg
YWRqOworICAgICAgICB1bmlmb3JtIG1hdDMgY2NfbWF0cml4OworICAgICAgICB2b2lkIG1haW4o
KQorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdCB5ID0gdGV4dHVyZTJEKHlfdGV4dHVyZSwg
eV90ZXhDb29yZCkueDsKKyAgICAgICAgICAgIGZsb2F0IHUgPSB0ZXh0dXJlMkQodV90ZXh0dXJl
LCB1dl90ZXhDb29yZCkueCAtIGFkajsKKyAgICAgICAgICAgIGZsb2F0IHYgPSB0ZXh0dXJlMkQo
dl90ZXh0dXJlLCB1dl90ZXhDb29yZCkueCAtIGFkajsKKyAgICAgICAgICAgIHZlYzMgcmdiID0g
Y2NfbWF0cml4ICogdmVjMyh5LCB1LCB2KTsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQocmdiLCBmbG9hdCgxKSkgKiBhbHBoYTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK0ZyYWdt
ZW50U2hhZGVyQ29sb3I6OkZyYWdtZW50U2hhZGVyQ29sb3IoKQorICAgIDogbV9jb2xvckxvY2F0
aW9uKC0xKQoreworfQorCitib29sIEZyYWdtZW50U2hhZGVyQ29sb3I6OmluaXQoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit7CisgICAgbV9jb2xvckxvY2F0
aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJjb2xvciIpOworICAg
IHJldHVybiBtX2NvbG9yTG9jYXRpb24gIT0gLTE7Cit9CisKK1N0cmluZyBGcmFnbWVudFNoYWRl
ckNvbG9yOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTSEFERVIoCisg
ICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB1bmlmb3JtIHZlYzQgY29s
b3I7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoY29sb3IueHl6ICogY29sb3IudywgY29sb3Iudyk7CisgICAgICAgIH0KKyAg
ICApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGMzMzky
YWVmNGYzMWI0YzY0ZDNlZjFkODU5Y2E5MTIwN2ZmMGZlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaApA
QCAtMCwwICsxLDE4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhZGVyQ2hyb21pdW1faAorI2RlZmlu
ZSBTaGFkZXJDaHJvbWl1bV9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisK
KyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEdyYXBoaWNzQ29udGV4dDNEOworCitjbGFzcyBWZXJ0ZXhTaGFkZXJQb3NUZXggeworcHVi
bGljOgorICAgIFZlcnRleFNoYWRlclBvc1RleCgpOworCisgICAgYm9vbCBpbml0KEdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmlu
ZygpIGNvbnN0OworCisgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9t
YXRyaXhMb2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBtX21hdHJpeExvY2F0aW9uOwor
fTsKKworY2xhc3MgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCB7CitwdWJsaWM6CisgICAg
VmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCgpOworCisgICAgYm9vbCBpbml0KEdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmlu
ZygpIGNvbnN0OworCisgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9t
YXRyaXhMb2NhdGlvbjsgfQorICAgIGludCB5V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV95V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uOyB9CisgICAgaW50IHV2V2lk
dGhTY2FsZUZhY3RvckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91dldpZHRoU2NhbGVGYWN0
b3JMb2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBtX21hdHJpeExvY2F0aW9uOworICAg
IGludCBtX3lXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb247CisgICAgaW50IG1fdXZXaWR0aFNjYWxl
RmFjdG9yTG9jYXRpb247Cit9OworCitjbGFzcyBWZXJ0ZXhTaGFkZXJQb3MgeworcHVibGljOgor
ICAgIFZlcnRleFNoYWRlclBvcygpOworCisgICAgYm9vbCBpbml0KEdyYXBoaWNzQ29udGV4dDNE
KiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0
OworCisgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2Nh
dGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBtX21hdHJpeExvY2F0aW9uOworfTsKKworY2xh
c3MgVmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtIHsKK3B1YmxpYzoKKyAgICBWZXJ0ZXhTaGFk
ZXJQb3NUZXhUcmFuc2Zvcm0oKTsKKworICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQzRCos
IHVuc2lnbmVkIHByb2dyYW0pOworICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsK
KworICAgIGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRp
b247IH0KKyAgICBpbnQgdGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Rl
eFRyYW5zZm9ybUxvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fbWF0cml4TG9jYXRp
b247CisgICAgaW50IG1fdGV4VHJhbnNmb3JtTG9jYXRpb247Cit9OworCitjbGFzcyBGcmFnbWVu
dFRleEFscGhhQmluZGluZyB7CitwdWJsaWM6CisgICAgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmco
KTsKKworICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0p
OworICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYUxvY2F0aW9u
OyB9CisgICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlckxv
Y2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOworICAgIGlu
dCBtX2FscGhhTG9jYXRpb247Cit9OworCitjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlw
QWxwaGEgOiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgeworcHVibGljOgorICAgIFN0
cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKK307CisKK2NsYXNzIEZyYWdtZW50U2hhZGVy
UkdCQVRleEFscGhhIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKK3B1YmxpYzoK
KyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7Cit9OworCitjbGFzcyBGcmFnbWVu
dFNoYWRlckJHUkFUZXhBbHBoYSA6IHB1YmxpYyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7Citw
dWJsaWM6CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworfTsKKworY2xhc3Mg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrIHsKK3B1YmxpYzoKKyAgICBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYU1hc2soKTsKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29u
c3Q7CisKKyAgICBib29sIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFt
KTsKKyAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlv
bjsgfQorICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJM
b2NhdGlvbjsgfQorICAgIGludCBtYXNrU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9tYXNrU2FtcGxlckxvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fc2FtcGxlckxv
Y2F0aW9uOworICAgIGludCBtX21hc2tTYW1wbGVyTG9jYXRpb247CisgICAgaW50IG1fYWxwaGFM
b2NhdGlvbjsKK307CisKKyNpZiBQTEFURk9STShTS0lBKSAmJiBTS19CMzJfU0hJRlQKK3R5cGVk
ZWYgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGEgRnJhZ21lbnRTaGFkZXJUZXhBbHBoYTsKKyNl
bHNlCit0eXBlZGVmIEZyYWdtZW50U2hhZGVyQkdSQVRleEFscGhhIEZyYWdtZW50U2hhZGVyVGV4
QWxwaGE7CisjZW5kaWYKKworY2xhc3MgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbyB7CitwdWJsaWM6
CisgICAgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbygpOworICAgIFN0cmluZyBnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdDsKKworICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVk
IHByb2dyYW0pOworCisgICAgaW50IHlUZXh0dXJlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3lUZXh0dXJlTG9jYXRpb247IH0KKyAgICBpbnQgdVRleHR1cmVMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdVRleHR1cmVMb2NhdGlvbjsgfQorICAgIGludCB2VGV4dHVyZUxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV92VGV4dHVyZUxvY2F0aW9uOyB9CisgICAgaW50IGFscGhhTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KKyAgICBpbnQgY2NNYXRyaXhM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2NNYXRyaXhMb2NhdGlvbjsgfQorICAgIGludCBz
aWduQWRqTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NpZ25BZGpMb2NhdGlvbjsgfQorCitw
cml2YXRlOgorICAgIGludCBtX3lUZXh0dXJlTG9jYXRpb247CisgICAgaW50IG1fdVRleHR1cmVM
b2NhdGlvbjsKKyAgICBpbnQgbV92VGV4dHVyZUxvY2F0aW9uOworICAgIGludCBtX2FscGhhTG9j
YXRpb247CisgICAgaW50IG1fY2NNYXRyaXhMb2NhdGlvbjsKKyAgICBpbnQgbV9zaWduQWRqTG9j
YXRpb247Cit9OworCitjbGFzcyBGcmFnbWVudFNoYWRlckNvbG9yIHsKK3B1YmxpYzoKKyAgICBG
cmFnbWVudFNoYWRlckNvbG9yKCk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0
OworCisgICAgYm9vbCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7
CisgICAgaW50IGNvbG9yTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbG9yTG9jYXRpb247
IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9jb2xvckxvY2F0aW9uOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGQ5OWNhZDBiYTIw
NTdlNzZhZjQ0NmY3OGRiMTZhZWRjOTRiOTY4NTIuLjQ5ZmFhNWY2OTQxMTM0ZDhhMjA1ZDI4MDQz
MzNlODI5YzZjZTk3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApAQCAtNTEs
MTMyICs1MSw2IEBAIGNvbnN0IGZsb2F0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6eXV2MlJHQls5XSA9
IHsKICAgICAxLjQwM2YsIC0uNzE0ZiwgMC5mLAogfTsKIAotVmlkZW9MYXllckNocm9taXVtOjpT
aGFyZWRWYWx1ZXM6OlNoYXJlZFZhbHVlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKLSAg
ICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV95dXZTaGFkZXJQcm9ncmFtKDApCi0gICAg
LCBtX3JnYmFTaGFkZXJQcm9ncmFtKDApCi0gICAgLCBtX3l1dlNoYWRlck1hdHJpeExvY2F0aW9u
KDApCi0gICAgLCBtX3lXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oMCkKLSAgICAsIG1fdXZXaWR0
aFNjYWxlRmFjdG9yTG9jYXRpb24oMCkKLSAgICAsIG1fcmdiYVNoYWRlck1hdHJpeExvY2F0aW9u
KDApCi0gICAgLCBtX3JnYmFXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oMCkKLSAgICAsIG1fY2NN
YXRyaXhMb2NhdGlvbigwKQotICAgICwgbV9zaWduQWRqTG9jYXRpb24oMCkKLSAgICAsIG1feVRl
eHR1cmVMb2NhdGlvbigwKQotICAgICwgbV91VGV4dHVyZUxvY2F0aW9uKDApCi0gICAgLCBtX3ZU
ZXh0dXJlTG9jYXRpb24oMCkKLSAgICAsIG1fcmdiYVRleHR1cmVMb2NhdGlvbigwKQotICAgICwg
bV95dXZBbHBoYUxvY2F0aW9uKDApCi0gICAgLCBtX3JnYmFBbHBoYUxvY2F0aW9uKDApCi0gICAg
LCBtX2luaXRpYWxpemVkKGZhbHNlKQotewotICAgIC8vIEZyYW1lIHRleHR1cmVzIGFyZSBhbGxv
Y2F0ZWQgYmFzZWQgb24gc3RyaWRlIHdpZHRoLCBub3QgdmlzaWJsZSBmcmFtZQotICAgIC8vIHdp
ZHRoLCBzdWNoIHRoYXQgdGhlcmUgaXMgYSBndWFyYW50ZWUgdGhhdCB0aGUgZnJhbWUgcm93cyBs
aW5lIHVwCi0gICAgLy8gcHJvcGVybHkgYW5kIGFyZSBub3Qgc2hpZnRlZCBieSAoc3RyaWRlIC0g
d2lkdGgpIHBpeGVscy4gVG8gaGlkZSB0aGUKLSAgICAvLyAicGFkZGluZyIgcGl4ZWxzIGJldHdl
ZW4gdGhlIGVkZ2Ugb2YgdGhlIHZpc2libGUgZnJhbWUgd2lkdGggYW5kIHRoZSBlbmQKLSAgICAv
LyBvZiB0aGUgc3RyaWRlLCB3ZSBnaXZlIHRoZSBzaGFkZXIgYSB3aWR0aFNjYWxlRmFjdG9yICg8
PTEuMCkgb2YgaG93IG11Y2gKLSAgICAvLyBvZiB0aGUgd2lkdGggb2YgdGhlIHRleHR1cmUgc2hv
dWxkIGJlIHNob3duIHdoZW4gZHJhd2luZyB0aGUgdGV4dHVyZSBvbnRvCi0gICAgLy8gdGhlIHZl
cnRpY2VzLgotICAgIGNoYXIgdmVydGV4U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7ICAgICBcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9z
aXRpb247ICAgXG4iCi0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOyAgIFxuIgot
ICAgICAgICAidW5pZm9ybSBtYXQ0IG1hdHJpeDsgICAgICAgICBcbiIKLSAgICAgICAgInZhcnlp
bmcgdmVjMiB5X3RleENvb3JkOyAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdXZfdGV4
Q29vcmQ7ICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB5X3dpZHRoU2NhbGVGYWN0b3I7
IFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1dl93aWR0aFNjYWxlRmFjdG9yOyBcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IG1hdHJp
eCAqIGFfcG9zaXRpb247IFxuIgotICAgICAgICAiICB5X3RleENvb3JkID0gdmVjMih5X3dpZHRo
U2NhbGVGYWN0b3IgKiBhX3RleENvb3JkLngsIGFfdGV4Q29vcmQueSk7IFxuIgotICAgICAgICAi
ICB1dl90ZXhDb29yZCA9IHZlYzIodXZfd2lkdGhTY2FsZUZhY3RvciAqIGFfdGV4Q29vcmQueCwg
YV90ZXhDb29yZC55KTsgXG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIjsKLQotICAgIGNoYXIgeXV2RnJhZ21lbnRTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgaW50OyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB5X3RleENvb3JkOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdXZfdGV4Q29vcmQ7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQg
eV90ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0g
c2FtcGxlcjJEIHVfdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAg
ICJ1bmlmb3JtIHNhbXBsZXIyRCB2X3RleHR1cmU7ICAgICAgICAgICAgICAgICAgICAgICAgIFxu
IgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgYWRqOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDMgY2NfbWF0cml4OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAg
ICAgICIgIGZsb2F0IHkgPSB0ZXh0dXJlMkQoeV90ZXh0dXJlLCB5X3RleENvb3JkKS54OyAgICAg
IFxuIgotICAgICAgICAiICBmbG9hdCB1ID0gdGV4dHVyZTJEKHVfdGV4dHVyZSwgdXZfdGV4Q29v
cmQpLnggLSBhZGo7IFxuIgotICAgICAgICAiICBmbG9hdCB2ID0gdGV4dHVyZTJEKHZfdGV4dHVy
ZSwgdXZfdGV4Q29vcmQpLnggLSBhZGo7IFxuIgotICAgICAgICAiICB2ZWMzIHJnYiA9IGNjX21h
dHJpeCAqIHZlYzMoeSwgdSwgdik7ICAgICAgICAgICAgICBcbiIKLSAgICAgICAgIiAgZ2xfRnJh
Z0NvbG9yID0gdmVjNChyZ2IsIGZsb2F0KDEpKSAqIGFscGhhOyAgICAgICAgXG4iCi0gICAgICAg
ICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu
IjsKLQotICAgIGNoYXIgcmdiYUZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAg
ICAgICAgInZhcnlpbmcgdmVjMiB5X3RleENvb3JkOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCByZ2JhX3RleHR1cmU7ICAgICAgICAg
ICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInZvaWQgbWFpbigpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAi
ICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHJnYmFfdGV4dHVyZSwgdmVjMih5X3RleENvb3Jk
LngsIGZsb2F0KDEpIC0geV90ZXhDb29yZC55KSk7IFxuIgotICAgICAgICAiICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9yLncp
ICogYWxwaGE7IFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSAgICBtX3JnYmFTaGFkZXJQcm9ncmFtID0gY3Jl
YXRlU2hhZGVyUHJvZ3JhbShtX2NvbnRleHQsIHZlcnRleFNoYWRlclN0cmluZywgcmdiYUZyYWdt
ZW50U2hhZGVyU3RyaW5nKTsKLSAgICBpZiAoIW1fcmdiYVNoYWRlclByb2dyYW0pIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJWaWRlb0xheWVyQ2hyb21pdW06IEZhaWxlZCB0byBjcmVhdGUgcmdiYSBz
aGFkZXIgcHJvZ3JhbSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV95dXZTaGFk
ZXJQcm9ncmFtID0gY3JlYXRlU2hhZGVyUHJvZ3JhbShtX2NvbnRleHQsIHZlcnRleFNoYWRlclN0
cmluZywgeXV2RnJhZ21lbnRTaGFkZXJTdHJpbmcpOwotICAgIGlmICghbV95dXZTaGFkZXJQcm9n
cmFtKSB7Ci0gICAgICAgIExPR19FUlJPUigiVmlkZW9MYXllckNocm9taXVtOiBGYWlsZWQgdG8g
Y3JlYXRlIHl1diBzaGFkZXIgcHJvZ3JhbSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgbV95dXZTaGFkZXJNYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKG1feXV2U2hhZGVyUHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIG1feVdpZHRoU2NhbGVGYWN0
b3JMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1feXV2U2hhZGVyUHJv
Z3JhbSwgInlfd2lkdGhTY2FsZUZhY3RvciIpOwotICAgIG1fdXZXaWR0aFNjYWxlRmFjdG9yTG9j
YXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1dlNoYWRlclByb2dyYW0s
ICJ1dl93aWR0aFNjYWxlRmFjdG9yIik7Ci0gICAgbV95VGV4dHVyZUxvY2F0aW9uID0gbV9jb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZTaGFkZXJQcm9ncmFtLCAieV90ZXh0dXJlIik7
Ci0gICAgbV91VGV4dHVyZUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
bV95dXZTaGFkZXJQcm9ncmFtLCAidV90ZXh0dXJlIik7Ci0gICAgbV92VGV4dHVyZUxvY2F0aW9u
ID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZTaGFkZXJQcm9ncmFtLCAidl90
ZXh0dXJlIik7Ci0gICAgbV9jY01hdHJpeExvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24obV95dXZTaGFkZXJQcm9ncmFtLCAiY2NfbWF0cml4Iik7Ci0gICAgbV9zaWduQWRq
TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1dlNoYWRlclByb2dy
YW0sICJhZGoiKTsKLSAgICBtX3l1dkFscGhhTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihtX3l1dlNoYWRlclByb2dyYW0sICJhbHBoYSIpOwotCi0gICAgQVNTRVJUKG1f
eXV2U2hhZGVyTWF0cml4TG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3lXaWR0aFNjYWxl
RmFjdG9yTG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3V2V2lkdGhTY2FsZUZhY3Rvckxv
Y2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV95VGV4dHVyZUxvY2F0aW9uICE9IC0xKTsKLSAg
ICBBU1NFUlQobV91VGV4dHVyZUxvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV92VGV4dHVy
ZUxvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV9jY01hdHJpeExvY2F0aW9uICE9IC0xKTsK
LSAgICBBU1NFUlQobV9zaWduQWRqTG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3l1dkFs
cGhhTG9jYXRpb24gIT0gLTEpOwotCi0gICAgbV9yZ2JhU2hhZGVyTWF0cml4TG9jYXRpb24gPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3JnYmFTaGFkZXJQcm9ncmFtLCAibWF0cml4
Iik7Ci0gICAgbV9yZ2JhVGV4dHVyZUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24obV9yZ2JhU2hhZGVyUHJvZ3JhbSwgInJnYmFfdGV4dHVyZSIpOwotICAgIG1fcmdiYVdp
ZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1f
cmdiYVNoYWRlclByb2dyYW0sICJ5X3dpZHRoU2NhbGVGYWN0b3IiKTsKLSAgICBtX3JnYmFBbHBo
YUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9yZ2JhU2hhZGVyUHJv
Z3JhbSwgImFscGhhIik7Ci0KLSAgICBBU1NFUlQobV9yZ2JhU2hhZGVyTWF0cml4TG9jYXRpb24g
IT0gLTEpOwotICAgIEFTU0VSVChtX3JnYmFUZXh0dXJlTG9jYXRpb24gIT0gLTEpOwotICAgIEFT
U0VSVChtX3JnYmFXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVCht
X3JnYmFBbHBoYUxvY2F0aW9uICE9IC0xKTsKLQotICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwot
fQotCi1WaWRlb0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6flNoYXJlZFZhbHVlcygpCi17
Ci0gICAgaWYgKG1feXV2U2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5kZWxldGVQcm9ncmFtKG1feXV2U2hhZGVyUHJvZ3JhbSkpOwotICAgIGlmIChtX3Jn
YmFTaGFkZXJQcm9ncmFtKQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0
ZVByb2dyYW0obV9yZ2JhU2hhZGVyUHJvZ3JhbSkpOwotfQotCiBQYXNzUmVmUHRyPFZpZGVvTGF5
ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9t
aXVtKiBvd25lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogewpAQCAtMzU1LDE2
ICsyMjksMTggQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmRyYXcoKQogICAgICAgICByZXR1
cm47CiAKICAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKLSAgICBjb25zdCBWaWRlb0xheWVy
Q2hyb21pdW06OlNoYXJlZFZhbHVlcyogc3YgPSBsYXllclJlbmRlcmVyKCktPnZpZGVvTGF5ZXJT
aGFyZWRWYWx1ZXMoKTsKLSAgICBBU1NFUlQoc3YgJiYgc3YtPmluaXRpYWxpemVkKCkpOworICAg
IGNvbnN0IFJHQkFQcm9ncmFtKiByZ2JhUHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+dmlkZW9M
YXllclJHQkFQcm9ncmFtKCk7CisgICAgQVNTRVJUKHJnYmFQcm9ncmFtICYmIHJnYmFQcm9ncmFt
LT5pbml0aWFsaXplZCgpKTsKKyAgICBjb25zdCBZVVZQcm9ncmFtKiB5dXZQcm9ncmFtID0gbGF5
ZXJSZW5kZXJlcigpLT52aWRlb0xheWVyWVVWUHJvZ3JhbSgpOworICAgIEFTU0VSVCh5dXZQcm9n
cmFtICYmIHl1dlByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogCiAgICAgc3dpdGNoIChtX2ZyYW1l
Rm9ybWF0KSB7CiAgICAgY2FzZSBWaWRlb0ZyYW1lQ2hyb21pdW06OllWMTI6CiAgICAgY2FzZSBW
aWRlb0ZyYW1lQ2hyb21pdW06OllWMTY6Ci0gICAgICAgIGRyYXdZVVYoc3YpOworICAgICAgICBk
cmF3WVVWKHl1dlByb2dyYW0pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZpZGVvRnJhbWVD
aHJvbWl1bTo6UkdCQToKLSAgICAgICAgZHJhd1JHQkEoc3YpOworICAgICAgICBkcmF3UkdCQShy
Z2JhUHJvZ3JhbSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgb3RoZXIgcGF0aHMuCkBAIC0zODQsNyArMjYwLDcgQEAgdm9pZCBWaWRl
b0xheWVyQ2hyb21pdW06OnJlbGVhc2VDdXJyZW50RnJhbWUoKQogICAgIHJlc2V0RnJhbWVQYXJh
bWV0ZXJzKCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3WVVWKGNvbnN0IFNo
YXJlZFZhbHVlcyogc3YpCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhd1lVVihjb25zdCBW
aWRlb0xheWVyQ2hyb21pdW06OllVVlByb2dyYW0qIHByb2dyYW0pCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwogICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSkp
OwpAQCAtMzk0LDcgKzI3MCw3IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3WVVWKGNv
bnN0IFNoYXJlZFZhbHVlcyogc3YpCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUzKSk7CiAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1
cmVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6dlBsYW5lXSkpOwogCi0gICAgbGF5ZXJSZW5kZXJlcigp
LT51c2VTaGFkZXIoc3YtPnl1dlNoYWRlclByb2dyYW0oKSk7CisgICAgbGF5ZXJSZW5kZXJlcigp
LT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsKICAgICB1bnNpZ25lZCB5RnJhbWVXaWR0
aCA9IG1fZnJhbWVTaXplc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnlQbGFuZV0ud2lkdGgoKTsKICAg
ICB1bnNpZ25lZCB5VGV4dHVyZVdpZHRoID0gbV90ZXh0dXJlU2l6ZXNbVmlkZW9GcmFtZUNocm9t
aXVtOjp5UGxhbmVdLndpZHRoKCk7CiAgICAgLy8gQXJiaXRyYXJpbHkgdGFrZSB0aGUgdSBzaXpl
cyBiZWNhdXNlIHUgYW5kIHYgZGltZW5zaW9ucyBhcmUgaWRlbnRpY2FsLgpAQCAtNDAzLDQ2ICsy
NzksNDggQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmRyYXdZVVYoY29uc3QgU2hhcmVkVmFs
dWVzKiBzdikKIAogICAgIGZsb2F0IHlXaWR0aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHlGcmFtZVdpZHRoKSAvIHlUZXh0dXJlV2lkdGg7CiAgICAgZmxvYXQgdXZXaWR0aFNjYWxl
RmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHV2RnJhbWVXaWR0aCkgLyB1dlRleHR1cmVXaWR0
aDsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHN2LT55V2lkdGhTY2FsZUZh
Y3RvckxvY2F0aW9uKCksIHlXaWR0aFNjYWxlRmFjdG9yKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnVuaWZvcm0xZihzdi0+dXZXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oKSwgdXZXaWR0
aFNjYWxlRmFjdG9yKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xZihwcm9n
cmFtLT52ZXJ0ZXhTaGFkZXIoKS55V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCksIHlXaWR0aFNj
YWxlRmFjdG9yKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xZihwcm9ncmFt
LT52ZXJ0ZXhTaGFkZXIoKS51dldpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbigpLCB1dldpZHRoU2Nh
bGVGYWN0b3IpKTsKIAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc3YtPnlU
ZXh0dXJlTG9jYXRpb24oKSwgMSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3Jt
MWkoc3YtPnVUZXh0dXJlTG9jYXRpb24oKSwgMikpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT51bmlmb3JtMWkoc3YtPnZUZXh0dXJlTG9jYXRpb24oKSwgMykpOworICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS55VGV4dHVyZUxv
Y2F0aW9uKCksIDEpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkudVRleHR1cmVMb2NhdGlvbigpLCAyKSk7CisgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnZUZXh0
dXJlTG9jYXRpb24oKSwgMykpOwogCiAgICAgLy8gVGhpcyB2YWx1ZSBvZiAwLjUgbWFwcyB0byAx
MjguIEl0IGlzIHVzZWQgaW4gdGhlIFlVViB0byBSR0IgY29udmVyc2lvbgogICAgIC8vIGZvcm11
bGEgdG8gdHVybiB1bnNpZ25lZCB1IGFuZCB2IHZhbHVlcyB0byBzaWduZWQgdSBhbmQgdiB2YWx1
ZXMuCiAgICAgLy8gVGhpcyBpcyBsb2FkZWQgYXMgYSB1bmlmb3JtIGJlY2F1c2UgY2VydGFpbiBk
cml2ZXJzIGhhdmUgcHJvYmxlbXMKICAgICAvLyByZWFkaW5nIGxpdGVyYWwgZmxvYXQgdmFsdWVz
LgotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWYoc3YtPnNpZ25BZGpMb2NhdGlv
bigpLCAwLjUpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHByb2dyYW0t
PmZyYWdtZW50U2hhZGVyKCkuc2lnbkFkakxvY2F0aW9uKCksIDAuNSkpOwogCi0gICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYoc3YtPmNjTWF0cml4TG9jYXRpb24oKSwg
MCwgY29uc3RfY2FzdDxmbG9hdCo+KHl1djJSR0IpLCAxKSk7CisgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnVuaWZvcm1NYXRyaXgzZnYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5jY01hdHJp
eExvY2F0aW9uKCksIDAsIGNvbnN0X2Nhc3Q8ZmxvYXQqPih5dXYyUkdCKSwgMSkpOwogCiAgICAg
ZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRy
aXgoKSwgZHJhd1RyYW5zZm9ybSgpLAogICAgICAgICAgICAgICAgICAgICAgYm91bmRzKCkud2lk
dGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksCi0gICAgICAgICAgICAgICAg
ICAgICBzdi0+eXV2U2hhZGVyTWF0cml4TG9jYXRpb24oKSwgc3YtPnl1dkFscGhhTG9jYXRpb24o
KSk7CisgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhM
b2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KS5hbHBoYUxvY2F0aW9uKCkpOwogCiAgICAgLy8gUmVzZXQgYWN0aXZlIHRleHR1cmUgYmFjayB0
byB0ZXh0dXJlIDAuCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVt
OjpkcmF3UkdCQShjb25zdCBTaGFyZWRWYWx1ZXMqIHN2KQordm9pZCBWaWRlb0xheWVyQ2hyb21p
dW06OmRyYXdSR0JBKGNvbnN0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6UkdCQVByb2dyYW0qIHByb2dy
YW0pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29u
dGV4dCgpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlc1tWaWRlb0ZyYW1l
Q2hyb21pdW06OnJnYlBsYW5lXSkpOwogCi0gICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIo
c3YtPnJnYmFTaGFkZXJQcm9ncmFtKCkpOworICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVy
KHByb2dyYW0tPnByb2dyYW0oKSk7CiAgICAgdW5zaWduZWQgZnJhbWVXaWR0aCA9IG1fZnJhbWVT
aXplc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnJnYlBsYW5lXS53aWR0aCgpOwogICAgIHVuc2lnbmVk
IHRleHR1cmVXaWR0aCA9IG1fdGV4dHVyZVNpemVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6cmdiUGxh
bmVdLndpZHRoKCk7CiAgICAgZmxvYXQgd2lkdGhTY2FsZUZhY3RvciA9IHN0YXRpY19jYXN0PGZs
b2F0PihmcmFtZVdpZHRoKSAvIHRleHR1cmVXaWR0aDsKLSAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybTFmKHN2LT5yZ2JhV2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCksIHdpZHRoU2Nh
bGVGYWN0b3IpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHByb2dyYW0t
PnZlcnRleFNoYWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9uKCksIDAsIDAsIHdpZHRoU2NhbGVG
YWN0b3IsIDEpKTsKIAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc3YtPnJn
YmFUZXh0dXJlTG9jYXRpb24oKSwgMCkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlm
b3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwog
CiAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rp
b25NYXRyaXgoKSwgZHJhd1RyYW5zZm9ybSgpLAogICAgICAgICAgICAgICAgICAgICAgYm91bmRz
KCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksCi0gICAgICAgICAg
ICAgICAgICAgICBzdi0+cmdiYVNoYWRlck1hdHJpeExvY2F0aW9uKCksIHN2LT5yZ2JhQWxwaGFM
b2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigp
Lm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVu
dFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSk7CiB9CiAKIHZvaWQgVmlkZW9MYXllckNocm9taXVt
OjpyZXNldEZyYW1lUGFyYW1ldGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDM0NDliODFiZGZjNzI3MTY2MDk4YjViMDFmNWE2MzNkNmRjOGYxYmMuLmQzYTU5ZmFjYjhkMzg4
MjI2ODdhNmI5NzY4MmMzZjVmMTJlNmUyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5o
CkBAIC01Myw0NSArNTMsOCBAQCBwdWJsaWM6CiAgICAgLy8gcHV0Q3VycmVudEZyYW1lKCkgbXVz
dCBiZSBjYWxsZWQgdG8gcmV0dXJuIHRoZSBmcmFtZSBjdXJyZW50bHkgaGVsZC4KICAgICB2b2lk
IHJlbGVhc2VDdXJyZW50RnJhbWUoKTsKIAotICAgIGNsYXNzIFNoYXJlZFZhbHVlcyB7Ci0gICAg
cHVibGljOgotICAgICAgICBleHBsaWNpdCBTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0M0Qq
KTsKLSAgICAgICAgflNoYXJlZFZhbHVlcygpOwotICAgICAgICB1bnNpZ25lZCB5dXZTaGFkZXJQ
cm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV95dXZTaGFkZXJQcm9ncmFtOyB9Ci0gICAgICAgIHVu
c2lnbmVkIHJnYmFTaGFkZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9yZ2JhU2hhZGVyUHJv
Z3JhbTsgfQotICAgICAgICBpbnQgeXV2U2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3l1dlNoYWRlck1hdHJpeExvY2F0aW9uOyB9Ci0gICAgICAgIGludCByZ2JhU2hhZGVy
TWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JnYmFTaGFkZXJNYXRyaXhMb2NhdGlv
bjsgfQotICAgICAgICBpbnQgeVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1feVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbjsgfQotICAgICAgICBpbnQgdXZXaWR0aFNj
YWxlRmFjdG9yTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3V2V2lkdGhTY2FsZUZhY3Rvckxv
Y2F0aW9uOyB9Ci0gICAgICAgIGludCByZ2JhV2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9yZ2JhV2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uOyB9Ci0gICAgICAgIGlu
dCB5VGV4dHVyZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV95VGV4dHVyZUxvY2F0aW9uOyB9
Ci0gICAgICAgIGludCB1VGV4dHVyZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91VGV4dHVy
ZUxvY2F0aW9uOyB9Ci0gICAgICAgIGludCB2VGV4dHVyZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV92VGV4dHVyZUxvY2F0aW9uOyB9Ci0gICAgICAgIGludCB5dXZBbHBoYUxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV95dXZBbHBoYUxvY2F0aW9uOyB9Ci0gICAgICAgIGludCByZ2JhQWxw
aGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmdiYUFscGhhTG9jYXRpb247IH0KLSAgICAg
ICAgaW50IHJnYmFUZXh0dXJlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JnYmFUZXh0dXJl
TG9jYXRpb247IH0KLSAgICAgICAgaW50IGNjTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2NjTWF0cml4TG9jYXRpb247IH0KLSAgICAgICAgaW50IHNpZ25BZGpMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2lnbkFkakxvY2F0aW9uOyB9Ci0gICAgICAgIGJvb2wgaW5pdGlhbGl6
ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9Ci0gICAgcHJpdmF0ZToKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKLSAgICAgICAgdW5zaWduZWQgbV95dXZT
aGFkZXJQcm9ncmFtOwotICAgICAgICB1bnNpZ25lZCBtX3JnYmFTaGFkZXJQcm9ncmFtOwotICAg
ICAgICBpbnQgbV95dXZTaGFkZXJNYXRyaXhMb2NhdGlvbjsKLSAgICAgICAgaW50IG1feVdpZHRo
U2NhbGVGYWN0b3JMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fdXZXaWR0aFNjYWxlRmFjdG9yTG9j
YXRpb247Ci0gICAgICAgIGludCBtX3JnYmFTaGFkZXJNYXRyaXhMb2NhdGlvbjsKLSAgICAgICAg
aW50IG1fcmdiYVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fY2NNYXRy
aXhMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fc2lnbkFkakxvY2F0aW9uOwotICAgICAgICBpbnQg
bV95VGV4dHVyZUxvY2F0aW9uOwotICAgICAgICBpbnQgbV91VGV4dHVyZUxvY2F0aW9uOwotICAg
ICAgICBpbnQgbV92VGV4dHVyZUxvY2F0aW9uOwotICAgICAgICBpbnQgbV9yZ2JhVGV4dHVyZUxv
Y2F0aW9uOwotICAgICAgICBpbnQgbV95dXZBbHBoYUxvY2F0aW9uOwotICAgICAgICBpbnQgbV9y
Z2JhQWxwaGFMb2NhdGlvbjsKLSAgICAgICAgYm9vbCBtX2luaXRpYWxpemVkOwotICAgIH07Cisg
ICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZy
YWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUkdCQVByb2dyYW07CisgICAgdHlwZWRlZiBQ
cm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoLCBGcmFnbWVudFNoYWRl
cllVVlZpZGVvPiBZVVZQcm9ncmFtOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFudXBSZXNvdXJjZXMoKTsKQEAgLTEwNSw4ICs2OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1
cGRhdGVSR0JBQ29udGVudHMoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBWaWRlb0ZyYW1lQ2hy
b21pdW0qKTsKICAgICB2b2lkIGFsbG9jYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgZGltZW5zaW9ucywgdW5zaWduZWQgdGV4
dHVyZUZvcm1hdCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBkaW1lbnNpb25zLCB1bnNpZ25lZCB0
ZXh0dXJlRm9ybWF0LCBjb25zdCB2b2lkKiBkYXRhKTsKLSAgICB2b2lkIGRyYXdZVVYoY29uc3Qg
U2hhcmVkVmFsdWVzKik7Ci0gICAgdm9pZCBkcmF3UkdCQShjb25zdCBTaGFyZWRWYWx1ZXMqKTsK
KyAgICB2b2lkIGRyYXdZVVYoY29uc3QgWVVWUHJvZ3JhbSopOworICAgIHZvaWQgZHJhd1JHQkEo
Y29uc3QgUkdCQVByb2dyYW0qKTsKICAgICB2b2lkIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7CiAg
ICAgdm9pZCBzYXZlQ3VycmVudEZyYW1lKFZpZGVvRnJhbWVDaHJvbWl1bSopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83026</attachid>
            <date>2011-02-18 15:29:04 -0800</date>
            <delta_ts>2011-02-18 15:34:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54484-20110218152903.patch</filename>
            <type>text/plain</type>
            <size>115021</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzkwMzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOTA3YTVlZTk2ZTY3ODI4
MmMxZDIzYTU0NDEyMzkyMzg3ZDYzMjViLi5lY2U4ZDgyMzQ2MmJhODc2NzM2M2QxN2I0YTVmMzI5
MjgxMjI0MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI3IEBACisyMDExLTAyLTE1ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBDbGVhbiB1cCBzaGFkZXIgY29kZSBm
cm9tIExheWVyQ2hyb21pdW0gY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQ0ODQKKworICAgICAgICBUaGlzIGlzIGEgcmVmYWN0b3Jpbmcg
YW5kIHRoZXJlIHNob3VsZCBiZSBubyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKyAgICAgICAg
QWxsIHNoYWRlciBjb2RlIGlzIHB1bGxlZCBvdXQgaW50byBjbGFzc2VzIGluIFNoYWRlckNocm9t
aXVtLgorICAgICAgICBUaGUgU2hhcmVkVmFsdWVzIGNsYXNzZXMgYXJlIG5vdyB0dXJuZWQgaW50
byBQcm9ncmFtQmluZGluZywgb25lIHBlcgorICAgICAgICBzaGFkZXIgcHJvZ3JhbS4gIFRoZXNl
IGNvbnRhaW4gc2hhZGVyIGNsYXNzZXMgdGhhdCBrbm93IGFib3V0IHdoYXQKKyAgICAgICAgdmFy
aWFibGVzIHRoZXkgY2FuIGJpbmQuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllckNocm9taXVtOjpkcmF3KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmRyYXcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9tZXRyeUJpbmRpbmc6Okdlb21ldHJ5QmluZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpHZW9tZXRyeUJpbmRpbmc6On5HZW9tZXRyeUJpbmRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbWV0cnlCaW5kaW5nOjpwcmVwYXJlRm9yRHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxh
eWVyQ2hyb21pdW0uaC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6aW5pdGlh
bGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbWV0cnlCaW5kaW5nOjpjb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6cXVhZFZlcnRpY2VzVmJvKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6cXVhZEVsZW1lbnRzVmJvKToKKyAgICAgICAg
KFdlYkNvcmU6Okdlb21ldHJ5QmluZGluZzo6cG9zaXRpb25BdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9tZXRyeUJpbmRpbmc6OnRleENvb3JkQXR0cmliTG9jYXRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9yZGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRP
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51
cFNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpzaGFyZWRHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmJvcmRlclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpjb250ZW50TGF5ZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6Y2FudmFzTGF5ZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllclJHQkFQcm9ncmFtKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllcllVVlByb2dyYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpwbHVnaW5MYXllclByb2dy
YW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJm
YWNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJl
bmRlclN1cmZhY2VNYXNrUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OnRpbGVyUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGls
ZXJDaHJvbWl1bTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06
OmRyYXdUZXh0dXJlZFF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGlsZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5
ZXJDaHJvbWl1bTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UGx1Z2luTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1Byb2dyYW1CaW5kaW5nLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFt
QmluZGluZ0Jhc2U6OlByb2dyYW1CaW5kaW5nQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9n
cmFtQmluZGluZ0Jhc2U6On5Qcm9ncmFtQmluZGluZ0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
UHJvZ3JhbUJpbmRpbmdCYXNlOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5k
aW5nQmFzZTo6bG9hZFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFtQmluZGluZ0Jh
c2U6OmNyZWF0ZVNoYWRlclByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1Byb2dyYW1CaW5kaW5nLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jh
bUJpbmRpbmdCYXNlOjpwcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5n
QmFzZTo6aW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3JhbUJpbmRpbmc6OlBy
b2dyYW1CaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1CaW5kaW5nOjp2ZXJ0ZXhT
aGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3JhbUJpbmRpbmc6OmZyYWdtZW50U2hhZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpkcmF3
U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3Vy
ZmFjZUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hh
ZGVyQ2hyb21pdW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBv
c1RleDo6VmVydGV4U2hhZGVyUG9zVGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRl
clBvc1RleDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXg6Omdl
dFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZT
dHJldGNoOjpWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlZlcnRleFNoYWRlclBvc1RleFlVVlN0cmV0Y2g6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6
VmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlZlcnRleFNoYWRlclBvczo6VmVydGV4U2hhZGVyUG9zKToKKyAgICAgICAgKFdl
YkNvcmU6OlZlcnRleFNoYWRlclBvczo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhT
aGFkZXJQb3M6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFk
ZXJQb3NUZXhUcmFuc2Zvcm06OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06OmluaXQpOgorICAgICAgICAo
V2ViQ29yZTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjpnZXRTaGFkZXJTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUJpbmRpbmc6OkZyYWdtZW50VGV4QWxw
aGFCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4QWxwaGFCaW5kaW5nOjpp
bml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYTo6
Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRl
eEFscGhhOjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFk
ZXJCR1JBVGV4QWxwaGE6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFn
bWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6Omlu
aXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrOjpn
ZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJZVVZWaWRl
bzo6RnJhZ21lbnRTaGFkZXJZVVZWaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNo
YWRlcllVVlZpZGVvOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyWVVW
VmlkZW86OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRl
ckNvbG9yOjpGcmFnbWVudFNoYWRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
U2hhZGVyQ29sb3I6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDb2xv
cjo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRl
clBvc1RleDo6bWF0cml4TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVy
UG9zVGV4WVVWU3RyZXRjaDo6bWF0cml4TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmVy
dGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6eVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoOjp1dldpZHRoU2Nh
bGVGYWN0b3JMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3M6Om1h
dHJpeExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleFRyYW5z
Zm9ybTo6bWF0cml4TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9z
VGV4VHJhbnNmb3JtOjp0ZXhUcmFuc2Zvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudFRleEFscGhhQmluZGluZzo6YWxwaGFMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudFRleEFscGhhQmluZGluZzo6c2FtcGxlckxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6YWxwaGFMb2NhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6OnNhbXBsZXJM
b2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1h
c2s6Om1hc2tTYW1wbGVyTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFk
ZXJZVVZWaWRlbzo6eVRleHR1cmVMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVu
dFNoYWRlcllVVlZpZGVvOjp1VGV4dHVyZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YWdtZW50U2hhZGVyWVVWVmlkZW86OnZUZXh0dXJlTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhZ21lbnRTaGFkZXJZVVZWaWRlbzo6YWxwaGFMb2NhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFnbWVudFNoYWRlcllVVlZpZGVvOjpjY01hdHJpeExvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyWVVWVmlkZW86OnNpZ25BZGpMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNvbG9yOjpjb2xvckxvY2F0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpkcmF3KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhd1lVVik6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0xheWVyQ2hyb21pdW06OmRyYXdSR0JBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKwogMjAxMS0wMi0xOCAgSmFtZXMgUm9i
aW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUnVzc2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiNWJiNGFiMDEyMWQ2ZWE2NTM4MTBiYTVj
NTFjNGNhMTIwZDMzMmY2Li4zOTkzNzIyOTZkNzZmOTA1OGJlMzYyM2UyNDg0NzdhYTk1ODNlNmJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNTk2LDYgKzI1OTYsOCBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFMaW51eC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0No
cm9taXVtV2luLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dl
b21ldHJ5QmluZGluZy5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0dlb21ldHJ5QmluZGluZy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HTEVTMkNhbnZhcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0dMRVMyQ2FudmFzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0dseXBoUGFnZVRyZWVOb2RlQ2hyb21pdW1XaW4uY3BwJywKQEAgLTI2MjEsOCAr
MjYyMywxMiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRm
b3JtSWNvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1
bS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNo
cm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NpbXBs
ZUZvbnREYXRhQ2hyb21pdW1XaW4uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaW1wbGVGb250RGF0YUxpbnV4LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNGFlZjI1YjE1YWVmZTk0NDA1MjIxNzQ0NGI5YWRjYTBj
ZjJhMWZkZi4uNDIyMzg3NjU5YjM3ZjJiMjY2Mzc3NjRiOGZkMjljNzVjNTg1OTI1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQxLDYwICs0MSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdW5zaWduZWQgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6bV9zaGFkZXJQcm9n
cmFtSWQgPSAwOwogCi1DYW52YXNMYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXM6OlNoYXJlZFZh
bHVlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0
KQotICAgICwgbV9jYW52YXNTaGFkZXJQcm9ncmFtKDApCi0gICAgLCBtX3NoYWRlclNhbXBsZXJM
b2NhdGlvbigtMSkKLSAgICAsIG1fc2hhZGVyTWF0cml4TG9jYXRpb24oLTEpCi0gICAgLCBtX3No
YWRlckFscGhhTG9jYXRpb24oLTEpCi0gICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQotewotICAg
IGNoYXIgdmVydGV4U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9w
b3NpdGlvbjsgICBcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7ICAgXG4i
Ci0gICAgICAgICJ1bmlmb3JtIG1hdDQgbWF0cml4OyAgICAgICAgIFxuIgotICAgICAgICAidmFy
eWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICBcbiIKLSAgICAgICAgInZvaWQgbWFpbigpICAgICAg
ICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu
IgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IG1hdHJpeCAqIGFfcG9zaXRpb247IFxuIgotICAg
ICAgICAiICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsgICBcbiIKLSAgICAgICAgIn0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXG4iOwotCi0gICAgLy8gQ2FudmFzIGxheWVycyBuZWVkIHRv
IGJlIGZsaXBwZWQgdmVydGljYWxseSBhbmQgdGhlaXIgY29sb3JzIHNob3VsZG4ndCBiZQotICAg
IC8vIHN3aXp6bGVkLgotICAgIGNoYXIgZnJhZ21lbnRTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4i
Ci0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7ICAgICAgICAg
ICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGFscGhhOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIg
IHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2ZWMyKHZfdGV4Q29vcmQueCwg
MS4wIC0gdl90ZXhDb29yZC55KSk7IFxuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9yLncpICogYWxwaGE7
IFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFxuIjsKLQotICAgIG1fY2FudmFzU2hhZGVyUHJvZ3JhbSA9IGNyZWF0ZVNoYWRl
clByb2dyYW0obV9jb250ZXh0LCB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyU3Ry
aW5nKTsKLSAgICBpZiAoIW1fY2FudmFzU2hhZGVyUHJvZ3JhbSkgewotICAgICAgICBMT0dfRVJS
T1IoIkNhbnZhc0xheWVyQ2hyb21pdW06IEZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIHByb2dyYW0i
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fc2hhZGVyU2FtcGxlckxvY2F0aW9u
ID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9jYW52YXNTaGFkZXJQcm9ncmFtLCAi
c190ZXh0dXJlIik7Ci0gICAgbV9zaGFkZXJNYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKG1fY2FudmFzU2hhZGVyUHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIG1f
c2hhZGVyQWxwaGFMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fY2Fu
dmFzU2hhZGVyUHJvZ3JhbSwgImFscGhhIik7Ci0gICAgQVNTRVJUKG1fc2hhZGVyU2FtcGxlckxv
Y2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV9zaGFkZXJNYXRyaXhMb2NhdGlvbiAhPSAtMSk7
Ci0gICAgQVNTRVJUKG1fc2hhZGVyQWxwaGFMb2NhdGlvbiAhPSAtMSk7Ci0KLSAgICBtX2luaXRp
YWxpemVkID0gdHJ1ZTsKLX0KLQotQ2FudmFzTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjp+
U2hhcmVkVmFsdWVzKCkKLXsKLSAgICBpZiAobV9jYW52YXNTaGFkZXJQcm9ncmFtKQotICAgICAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9jYW52YXNTaGFkZXJQ
cm9ncmFtKSk7Ci19Ci0KIENhbnZhc0xheWVyQ2hyb21pdW06OkNhbnZhc0xheWVyQ2hyb21pdW0o
R3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICA6IExheWVyQ2hyb21pdW0ob3duZXIp
CiAgICAgLCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCkBAIC0xMDksMTYgKzU1LDE3IEBAIENhbnZh
c0xheWVyQ2hyb21pdW06On5DYW52YXNMYXllckNocm9taXVtKCkKIHZvaWQgQ2FudmFzTGF5ZXJD
aHJvbWl1bTo6ZHJhdygpCiB7CiAgICAgQVNTRVJUKGxheWVyUmVuZGVyZXIoKSk7Ci0gICAgY29u
c3QgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzKiBzdiA9IGxheWVyUmVuZGVyZXIo
KS0+Y2FudmFzTGF5ZXJTaGFyZWRWYWx1ZXMoKTsKLSAgICBBU1NFUlQoc3YgJiYgc3YtPmluaXRp
YWxpemVkKCkpOworICAgIGNvbnN0IENhbnZhc0xheWVyQ2hyb21pdW06OlByb2dyYW0qIHByb2dy
YW0gPSBsYXllclJlbmRlcmVyKCktPmNhbnZhc0xheWVyUHJvZ3JhbSgpOworICAgIEFTU0VSVChw
cm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogICAgIEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKICAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKICAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIG1fdGV4dHVyZUlkKSk7Ci0gICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIoc3Yt
PmNhbnZhc1NoYWRlclByb2dyYW0oKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZv
cm0xaShzdi0+c2hhZGVyU2FtcGxlckxvY2F0aW9uKCksIDApKTsKKyAgICBsYXllclJlbmRlcmVy
KCktPnVzZVNoYWRlcihwcm9ncmFtLT5wcm9ncmFtKCkpOworICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24o
KSwgMCkpOwogICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5w
cm9qZWN0aW9uTWF0cml4KCksIGRyYXdUcmFuc2Zvcm0oKSwKICAgICAgICAgICAgICAgICAgICAg
IGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdodCgpLCBkcmF3T3BhY2l0eSgpLAotICAg
ICAgICAgICAgICAgICAgICAgc3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCksIHN2LT5zaGFkZXJB
bHBoYUxvY2F0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkubWF0cml4TG9jYXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZy
YWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXll
ckNocm9taXVtLmgKaW5kZXggNjUyMGI1NWI2OGQzZjM0MmNmZDI0ZDY0MzRkMTcxNjFmNmNkMTBi
ZS4uOTgxMWIwNjVjYmM2MTkwNjE1ODk4ZmE2ODRjYmEzOWRjZjhhMWU4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhc0xheWVyQ2hyb21pdW0uaApAQCAtNDUsMjUgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRyYXcoKTsKIAotICAgIGNsYXNzIFNoYXJlZFZhbHVlcyB7Ci0gICAgcHVibGlj
OgotICAgICAgICBleHBsaWNpdCBTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKLSAg
ICAgICAgflNoYXJlZFZhbHVlcygpOwotCi0gICAgICAgIHVuc2lnbmVkIGNhbnZhc1NoYWRlclBy
b2dyYW0oKSBjb25zdCB7IHJldHVybiBtX2NhbnZhc1NoYWRlclByb2dyYW07IH0KLSAgICAgICAg
aW50IHNoYWRlclNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVyU2FtcGxl
ckxvY2F0aW9uOyB9Ci0gICAgICAgIGludCBzaGFkZXJNYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhZGVyTWF0cml4TG9jYXRpb247IH0KLSAgICAgICAgaW50IHNoYWRlckFscGhh
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlckFscGhhTG9jYXRpb247IH0KLSAgICAg
ICAgYm9vbCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7IH0KLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fY2FudmFzU2hhZGVyUHJvZ3JhbTsKLSAgICAgICAgaW50IG1fc2hhZGVy
U2FtcGxlckxvY2F0aW9uOwotICAgICAgICBpbnQgbV9zaGFkZXJNYXRyaXhMb2NhdGlvbjsKLSAg
ICAgICAgaW50IG1fc2hhZGVyQWxwaGFMb2NhdGlvbjsKLSAgICAgICAgYm9vbCBtX2luaXRpYWxp
emVkOwotICAgIH07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NU
ZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUHJvZ3JhbTsKIAogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IENhbnZhc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVt
KiBvd25lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMzc3MzVh
NzkyOWFkZTQxMDhlOGUzZTgwZjM5NGMyYzM1M2U1OTk2MC4uYTk4Nzc4OTA0YmUxMDA0MTE4MDQw
OTRhMmViMWY0ZDE2YTQ5MDkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNw
cApAQCAtNTAsODEgKzUwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db250ZW50TGF5
ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjpTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fY29udGVudFNoYWRl
clByb2dyYW0oMCkKLSAgICAsIG1fc2hhZGVyU2FtcGxlckxvY2F0aW9uKC0xKQotICAgICwgbV9z
aGFkZXJNYXRyaXhMb2NhdGlvbigtMSkKLSAgICAsIG1fc2hhZGVyQWxwaGFMb2NhdGlvbigtMSkK
LSAgICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCi17Ci0gICAgLy8gU2hhZGVycyBmb3IgZHJhd2lu
ZyB0aGUgbGF5ZXIgY29udGVudHMuCi0gICAgY2hhciB2ZXJ0ZXhTaGFkZXJTdHJpbmdbXSA9Ci0g
ICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOyAgIFxuIgotICAgICAgICAiYXR0cmli
dXRlIHZlYzIgYV90ZXhDb29yZDsgICBcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0NCBtYXRyaXg7
ICAgICAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgIFxuIgot
ICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gbWF0
cml4ICogYV9wb3NpdGlvbjsgXG4iCi0gICAgICAgICIgIHZfdGV4Q29vcmQgPSBhX3RleENvb3Jk
OyAgIFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSNp
ZiBQTEFURk9STShTS0lBKQotICAgIC8vIENvbG9yIGlzIGluIFJHQkEgb3JkZXIuCi0gICAgY2hh
ciByZ2JhRnJhZ21lbnRTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5n
IHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAg
ICJ1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7ICAgICAgICAgICAgICAgICAgICAgICAgXG4i
Ci0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGFscGhhOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIHZlYzQgdGV4Q29sb3IgPSB0
ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsgXG4iCi0gICAgICAgICIgIGdsX0ZyYWdD
b2xvciA9IHRleENvbG9yICogYWxwaGE7IFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLSNlbmRpZgotCi0gICAgLy8g
Q29sb3IgaXMgaW4gQkdSQSBvcmRlci4KLSAgICBjaGFyIGJncmFGcmFnbWVudFNoYWRlclN0cmlu
Z1tdID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4
dHVyZTsgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQg
YWxwaGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAg
ICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
biIKLSAgICAgICAgIiAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZfdGV4
Q29vcmQpOyBcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci56LCB0
ZXhDb2xvci55LCB0ZXhDb2xvci54LCB0ZXhDb2xvci53KSAqIGFscGhhOyBcbiIKLSAgICAgICAg
In0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7
Ci0KLSNpZiBQTEFURk9STShTS0lBKQotICAgIC8vIEFzc3VtaW5nIHRoZSBwYWNraW5nIGlzIGVp
dGhlciBTa2lhIGRlZmF1bHQgUkdCQSBvciBDaHJvbWl1bSBkZWZhdWx0IEJHUkEuCi0gICAgY2hh
ciogZnJhZ21lbnRTaGFkZXJTdHJpbmcgPSBTS19CMzJfU0hJRlQgPyByZ2JhRnJhZ21lbnRTaGFk
ZXJTdHJpbmcgOiBiZ3JhRnJhZ21lbnRTaGFkZXJTdHJpbmc7Ci0jZWxzZQotICAgIGNoYXIqIGZy
YWdtZW50U2hhZGVyU3RyaW5nID0gYmdyYUZyYWdtZW50U2hhZGVyU3RyaW5nOwotI2VuZGlmCi0g
ICAgbV9jb250ZW50U2hhZGVyUHJvZ3JhbSA9IGNyZWF0ZVNoYWRlclByb2dyYW0obV9jb250ZXh0
LCB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nKTsKLSAgICBpZiAoIW1f
Y29udGVudFNoYWRlclByb2dyYW0pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb250ZW50TGF5ZXJD
aHJvbWl1bTogRmFpbGVkIHRvIGNyZWF0ZSBzaGFkZXIgcHJvZ3JhbSIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgbV9zaGFkZXJTYW1wbGVyTG9jYXRpb24gPSBtX2NvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihtX2NvbnRlbnRTaGFkZXJQcm9ncmFtLCAic190ZXh0dXJlIik7Ci0g
ICAgbV9zaGFkZXJNYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KG1fY29udGVudFNoYWRlclByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3NoYWRlckFscGhhTG9j
YXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX2NvbnRlbnRTaGFkZXJQcm9n
cmFtLCAiYWxwaGEiKTsKLSAgICBBU1NFUlQobV9zaGFkZXJTYW1wbGVyTG9jYXRpb24gIT0gLTEp
OwotICAgIEFTU0VSVChtX3NoYWRlck1hdHJpeExvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQo
bV9zaGFkZXJBbHBoYUxvY2F0aW9uICE9IC0xKTsKLQotICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVl
OwotfQotCi1Db250ZW50TGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjp+U2hhcmVkVmFsdWVz
KCkKLXsKLSAgICBpZiAobV9jb250ZW50U2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fY29udGVudFNoYWRlclByb2dyYW0pKTsK
LX0KLQotCiBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bShvd25lcikpOwpAQCAtNDA3LDEzICsz
MzIsMTMgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAKICAgICBBU1NFUlQo
bGF5ZXJSZW5kZXJlcigpKTsKIAotICAgIGNvbnN0IENvbnRlbnRMYXllckNocm9taXVtOjpTaGFy
ZWRWYWx1ZXMqIHN2ID0gbGF5ZXJSZW5kZXJlcigpLT5jb250ZW50TGF5ZXJTaGFyZWRWYWx1ZXMo
KTsKLSAgICBBU1NFUlQoc3YgJiYgc3YtPmluaXRpYWxpemVkKCkpOworICAgIGNvbnN0IENvbnRl
bnRMYXllckNocm9taXVtOjpQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlcigpLT5jb250
ZW50TGF5ZXJQcm9ncmFtKCk7CisgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlh
bGl6ZWQoKSk7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVy
Q29udGV4dCgpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIGJpbmRDb250ZW50c1RleHR1cmUoKTsKLSAg
ICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihzdi0+Y29udGVudFNoYWRlclByb2dyYW0oKSk7
Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShzdi0+c2hhZGVyU2FtcGxlckxv
Y2F0aW9uKCksIDApKTsKKyAgICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihwcm9ncmFtLT5w
cm9ncmFtKCkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCiAgICAgaWYgKHJlcXVp
cmVzQ2xpcHBlZFVwZGF0ZVJlY3QoKSkgewogICAgICAgICBmbG9hdCBtNDMgPSBkcmF3VHJhbnNm
b3JtKCkubTQzKCk7CkBAIC00MjIsMTIgKzM0NywxMyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9t
aXVtOjpkcmF3KCkKICAgICAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRl
cmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFu
c2Zvcm0sIG1fdmlzaWJsZVJlY3RJbkxheWVyQ29vcmRzLndpZHRoKCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV92aXNpYmxlUmVjdEluTGF5ZXJDb29yZHMuaGVpZ2h0KCksIGRyYXdPcGFj
aXR5KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3YtPnNoYWRlck1hdHJpeExvY2F0aW9u
KCksIHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
IHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCkpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5k
ZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgZHJh
d1RyYW5zZm9ybSgpLCBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBkcmF3T3BhY2l0eSgpLCBzdi0+c2hhZGVyTWF0cml4TG9jYXRp
b24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLT52ZXJ0
ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpKTsKICAgICB9CiAgICAgdW5y
ZXNlcnZlQ29udGVudHNUZXh0dXJlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aAppbmRleCAyMWY0MWZmOTNjMjUyN2YzOGQxY2M5OWZhOTliMWViODJjMmRkYzQ2Li5lMTkyMDkx
YTkzNWExOThjNGYxZTBjZmUxMTY2NjQxMzE0YzJjZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmgKQEAgLTU2LDI4ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhdygpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSB7IHJldHVybiBtX293bmVy
ICYmIG1fb3duZXItPmRyYXdzQ29udGVudCgpOyB9CiAKLSAgICAvLyBTdG9yZXMgdmFsdWVzIHRo
YXQgYXJlIHNoYXJlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHRoYXQgYXJlCi0g
ICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIExheWVyUmVuZGVyZXJDaHJvbWl1bSAoYW5k
IGhlbmNlIHRoZSBzYW1lIEdMCi0gICAgLy8gY29udGV4dCkuCi0gICAgY2xhc3MgU2hhcmVkVmFs
dWVzIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IFNoYXJlZFZhbHVlcyhHcmFwaGlj
c0NvbnRleHQzRCopOwotICAgICAgICB+U2hhcmVkVmFsdWVzKCk7Ci0KLSAgICAgICAgdW5zaWdu
ZWQgY29udGVudFNoYWRlclByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTaGFkZXJQ
cm9ncmFtOyB9Ci0gICAgICAgIGludCBzaGFkZXJTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyTWF0cml4
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlck1hdHJpeExvY2F0aW9uOyB9Ci0gICAg
ICAgIGludCBzaGFkZXJBbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJBbHBo
YUxvY2F0aW9uOyB9Ci0gICAgICAgIGludCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5pdGlhbGl6ZWQ7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNE
KiBtX2NvbnRleHQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fY29udGVudFNoYWRlclByb2dyYW07Ci0g
ICAgICAgIGludCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fc2hhZGVy
TWF0cml4TG9jYXRpb247Ci0gICAgICAgIGludCBtX3NoYWRlckFscGhhTG9jYXRpb247Ci0gICAg
ICAgIGludCBtX2luaXRpYWxpemVkOwotICAgIH07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGlu
ZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyVGV4QWxwaGE+IFByb2dyYW07CiAK
IHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bShHcmFwaGljc0xh
eWVyQ2hyb21pdW0qIG93bmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRpbmcuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE4NTlhYWU3MzNhZTBhNmZkZjBiMTVkZWRjOWM3NjY2Y2M4YzNjOWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9tZXRyeUJp
bmRpbmcuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJHZW9tZXRyeUJp
bmRpbmcuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbWV0cnlCaW5kaW5nOjpHZW9tZXRyeUJpbmRpbmcoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAs
IG1fcXVhZFZlcnRpY2VzVmJvKDApCisgICAgLCBtX3F1YWRFbGVtZW50c1ZibygwKQorICAgICwg
bV9pbml0aWFsaXplZChmYWxzZSkKK3sKKyAgICAvLyBWZXJ0ZXggcG9zaXRpb25zIGFuZCB0ZXh0
dXJlIGNvb3JkaW5hdGVzIGZvciB0aGUgNCBjb3JuZXJzIG9mIGEgMXgxIHF1YWQuCisgICAgZmxv
YXQgdmVydGljZXNbXSA9IHsgLTAuNWYsICAwLjVmLCAwLjBmLCAwLjBmLCAgMS4wZiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAtMC41ZiwgLTAuNWYsIDAuMGYsIDAuMGYsICAwLjBmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuNWYsIC0wLjVmLCAwLjBmLCAxLjBmLCAgMC4wZiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjVmLCAgMC41ZiwgMC4wZiwgMS4wZiwgIDEuMGYgfTsK
KyAgICB1aW50MTZfdCBpbmRpY2VzW10gPSB7IDAsIDEsIDIsIDAsIDIsIDMsIC8vIFRoZSB0d28g
dHJpYW5nbGVzIHRoYXQgbWFrZSB1cCB0aGUgbGF5ZXIgcXVhZC4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIDEsIDIsIDN9OyAvLyBBIGxpbmUgcGF0aCBmb3IgZHJhd2luZyB0aGUgbGF5
ZXIgYm9yZGVyLgorCisgICAgR0xDKG1fY29udGV4dCwgbV9xdWFkVmVydGljZXNWYm8gPSBtX2Nv
bnRleHQtPmNyZWF0ZUJ1ZmZlcigpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX3F1YWRFbGVtZW50
c1ZibyA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX3F1
YWRWZXJ0aWNlc1ZibykpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YnVmZmVyRGF0
YShHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBzaXplb2YodmVydGljZXMpLCB2ZXJ0
aWNlcywgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKSk7CisgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgbV9xdWFkRWxlbWVudHNWYm8pKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBz
aXplb2YoaW5kaWNlcyksIGluZGljZXMsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEFUSUNfRFJBVykp
OworCisgICAgbV9pbml0aWFsaXplZCA9IHRydWU7Cit9CisKK0dlb21ldHJ5QmluZGluZzo6fkdl
b21ldHJ5QmluZGluZygpCit7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVC
dWZmZXIobV9xdWFkVmVydGljZXNWYm8pKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmRlbGV0ZUJ1ZmZlcihtX3F1YWRFbGVtZW50c1ZibykpOworfQorCit2b2lkIEdlb21ldHJ5Qmlu
ZGluZzo6cHJlcGFyZUZvckRyYXcoKQoreworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBxdWFkVmVydGljZXNW
Ym8oKSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIsIHF1YWRFbGVtZW50c1ZibygpKSk7Cisg
ICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnZl
cnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25BdHRyaWJMb2NhdGlvbigpLCAzLCBHcmFwaGljc0Nv
bnRleHQzRDo6RkxPQVQsIGZhbHNlLCA1ICogc2l6ZW9mKGZsb2F0KSwgb2Zmc2V0KSk7CisgICAg
b2Zmc2V0ICs9IDMgKiBzaXplb2YoZmxvYXQpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+dmVydGV4QXR0cmliUG9pbnRlcih0ZXhDb29yZEF0dHJpYkxvY2F0aW9uKCksIDIsIEdyYXBo
aWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIDUgKiBzaXplb2YoZmxvYXQpLCBvZmZzZXQpKTsK
KyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBv
c2l0aW9uQXR0cmliTG9jYXRpb24oKSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodGV4Q29vcmRBdHRyaWJMb2NhdGlvbigpKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dlb21ldHJ5QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMxOTk3MDNlNzAyYzg4
NGYxYzhjMGZiYzgyYzM4MDBjNDhhMGNmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlb21ldHJ5QmluZGluZ19oCisjZGVmaW5lIEdlb21l
dHJ5QmluZGluZ19oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOworCitjbGFzcyBHZW9tZXRyeUJpbmRpbmcgeworcHVibGljOgorICAg
IGV4cGxpY2l0IEdlb21ldHJ5QmluZGluZyhHcmFwaGljc0NvbnRleHQzRCopOworICAgIH5HZW9t
ZXRyeUJpbmRpbmcoKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBt
X2luaXRpYWxpemVkOyB9CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dDsgfQorICAgIHVuc2lnbmVkIHF1YWRWZXJ0aWNlc1ZibygpIGNv
bnN0IHsgcmV0dXJuIG1fcXVhZFZlcnRpY2VzVmJvOyB9CisgICAgdW5zaWduZWQgcXVhZEVsZW1l
bnRzVmJvKCkgY29uc3QgeyByZXR1cm4gbV9xdWFkRWxlbWVudHNWYm87IH0KKworICAgIHZvaWQg
cHJlcGFyZUZvckRyYXcoKTsKKworICAgIC8vIEFsbCBsYXllciBzaGFkZXJzIHNoYXJlIHRoZSBz
YW1lIGF0dHJpYnV0ZSBsb2NhdGlvbnMgZm9yIHRoZSB2ZXJ0ZXgKKyAgICAvLyBwb3NpdGlvbnMg
YW5kIHRleHR1cmUgY29vcmRpbmF0ZXMuIFRoaXMgYWxsb3dzIHN3aXRjaGluZyBzaGFkZXJzIHdp
dGhvdXQKKyAgICAvLyByZWJpbmRpbmcgYXR0cmlidXRlIGFycmF5cy4KKyAgICBzdGF0aWMgaW50
IHBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIGludCB0
ZXhDb29yZEF0dHJpYkxvY2F0aW9uKCkgeyByZXR1cm4gMTsgfQorCitwcml2YXRlOgorICAgIEdy
YXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgdW5zaWduZWQgbV9xdWFkVmVydGljZXNW
Ym87CisgICAgdW5zaWduZWQgbV9xdWFkRWxlbWVudHNWYm87CisgICAgYm9vbCBtX2luaXRpYWxp
emVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXgg
NjFkYzg0NzlhZjNmMGM3MDRhYzU0NzQ4MDg4YjVhMzE2OWY2MDU0YS4uNmUwM2U2NGFlYjgxNzMx
NDg2OGU3ODQ4MDBmNzQyZjc2ZTE3NTc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ4
LDkzICs0OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IAotY29uc3QgdW5zaWduZWQgTGF5ZXJDaHJvbWl1bTo6c19wb3NpdGlvbkF0dHJpYkxvY2F0aW9u
ID0gMDsKLWNvbnN0IHVuc2lnbmVkIExheWVyQ2hyb21pdW06OnNfdGV4Q29vcmRBdHRyaWJMb2Nh
dGlvbiA9IDE7Ci0KLXN0YXRpYyB1bnNpZ25lZCBsb2FkU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCB0eXBlLCBjb25zdCBjaGFyKiBzaGFkZXJTb3VyY2UpCi17Ci0g
ICAgdW5zaWduZWQgc2hhZGVyID0gY29udGV4dC0+Y3JlYXRlU2hhZGVyKHR5cGUpOwotICAgIGlm
ICghc2hhZGVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBTdHJpbmcgc291cmNlU3RyaW5nKHNo
YWRlclNvdXJjZSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnNoYWRlclNvdXJjZShzaGFk
ZXIsIHNvdXJjZVN0cmluZykpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5jb21waWxlU2hh
ZGVyKHNoYWRlcikpOwotICAgIGludCBjb21waWxlZCA9IDA7Ci0gICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RB
VFVTLCAmY29tcGlsZWQpKTsKLSAgICBpZiAoIWNvbXBpbGVkKSB7Ci0gICAgICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFkZXIoc2hhZGVyKSk7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLSAgICByZXR1cm4gc2hhZGVyOwotfQotCi1MYXllckNocm9taXVtOjpTaGFyZWRWYWx1
ZXM6OlNoYXJlZFZhbHVlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKLSAgICA6IG1fY29u
dGV4dChjb250ZXh0KQotICAgICwgbV9xdWFkVmVydGljZXNWYm8oMCkKLSAgICAsIG1fcXVhZEVs
ZW1lbnRzVmJvKDApCi0gICAgLCBtX21heFRleHR1cmVTaXplKDApCi0gICAgLCBtX2JvcmRlclNo
YWRlclByb2dyYW0oMCkKLSAgICAsIG1fYm9yZGVyU2hhZGVyTWF0cml4TG9jYXRpb24oLTEpCi0g
ICAgLCBtX2JvcmRlclNoYWRlckNvbG9yTG9jYXRpb24oLTEpCi0gICAgLCBtX2luaXRpYWxpemVk
KGZhbHNlKQotewotICAgIC8vIFZlcnRleCBwb3NpdGlvbnMgYW5kIHRleHR1cmUgY29vcmRpbmF0
ZXMgZm9yIHRoZSA0IGNvcm5lcnMgb2YgYSAxeDEgcXVhZC4KLSAgICBmbG9hdCB2ZXJ0aWNlc1td
ID0geyAtMC41ZiwgIDAuNWYsIDAuMGYsIDAuMGYsICAxLjBmLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIC0wLjVmLCAtMC41ZiwgMC4wZiwgMC4wZiwgIDAuMGYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgMC41ZiwgLTAuNWYsIDAuMGYsIDEuMGYsICAwLjBmLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuNWYsICAwLjVmLCAwLjBmLCAxLjBmLCAgMS4wZiB9OwotICAgIHVpbnQxNl90
IGluZGljZXNbXSA9IHsgMCwgMSwgMiwgMCwgMiwgMywgLy8gVGhlIHR3byB0cmlhbmdsZXMgdGhh
dCBtYWtlIHVwIHRoZSBsYXllciBxdWFkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
MSwgMiwgM307IC8vIEEgbGluZSBwYXRoIGZvciBkcmF3aW5nIHRoZSBsYXllciBib3JkZXIuCi0K
LSAgICBHTEMobV9jb250ZXh0LCBtX3F1YWRWZXJ0aWNlc1ZibyA9IG1fY29udGV4dC0+Y3JlYXRl
QnVmZmVyKCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fcXVhZEVsZW1lbnRzVmJvID0gbV9jb250
ZXh0LT5jcmVhdGVCdWZmZXIoKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5k
QnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIG1fcXVhZFZlcnRpY2VzVmJv
KSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29u
dGV4dDNEOjpBUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNlcyksIHZlcnRpY2VzLCBHcmFwaGlj
c0NvbnRleHQzRDo6U1RBVElDX0RSQVcpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBtX3F1
YWRFbGVtZW50c1ZibykpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YnVmZmVyRGF0
YShHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIsIHNpemVvZihpbmRpY2Vz
KSwgaW5kaWNlcywgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKSk7Ci0KLSAgICAvLyBH
ZXQgdGhlIG1heCB0ZXh0dXJlIHNpemUgc3VwcG9ydGVkIGJ5IHRoZSBzeXN0ZW0uCi0gICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFY
X1RFWFRVUkVfU0laRSwgJm1fbWF4VGV4dHVyZVNpemUpKTsKLQotICAgIC8vIFNoYWRlcnMgZm9y
IGRyYXdpbmcgdGhlIGRlYnVnIGJvcmRlcnMgYXJvdW5kIHRoZSBsYXllcnMuCi0gICAgY2hhciBi
b3JkZXJWZXJ0ZXhTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bv
c2l0aW9uOyAgIFxuIgotICAgICAgICAidW5pZm9ybSBtYXQ0IG1hdHJpeDsgICAgICAgICBcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICAgZ2xfUG9zaXRpb24gPSBt
YXRyaXggKiBhX3Bvc2l0aW9uOyBcbiIKLSAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXG4iOwotICAgIGNoYXIgYm9yZGVyRnJhZ21lbnRTaGFkZXJTdHJpbmdbXSA9Ci0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgY29sb3I7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoY29sb3IueHl6ICogY29sb3IudywgY29sb3Iudyk7XG4iCi0gICAgICAgICJ9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotCi0gICAg
bV9ib3JkZXJTaGFkZXJQcm9ncmFtID0gY3JlYXRlU2hhZGVyUHJvZ3JhbShtX2NvbnRleHQsIGJv
cmRlclZlcnRleFNoYWRlclN0cmluZywgYm9yZGVyRnJhZ21lbnRTaGFkZXJTdHJpbmcpOwotICAg
IGlmICghbV9ib3JkZXJTaGFkZXJQcm9ncmFtKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ29udGVu
dExheWVyQ2hyb21pdW06IEZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIHByb2dyYW0iKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fYm9yZGVyU2hhZGVyTWF0cml4TG9jYXRpb24gPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX2JvcmRlclNoYWRlclByb2dyYW0sICJtYXRy
aXgiKTsKLSAgICBtX2JvcmRlclNoYWRlckNvbG9yTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihtX2JvcmRlclNoYWRlclByb2dyYW0sICJjb2xvciIpOwotICAgIEFTU0VS
VChtX2JvcmRlclNoYWRlck1hdHJpeExvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV9ib3Jk
ZXJTaGFkZXJDb2xvckxvY2F0aW9uICE9IC0xKTsKLQotICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVl
OwotfQotCi1MYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXM6On5TaGFyZWRWYWx1ZXMoKQotewot
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKG1fcXVhZFZlcnRpY2Vz
VmJvKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV9xdWFk
RWxlbWVudHNWYm8pKTsKLSAgICBpZiAobV9ib3JkZXJTaGFkZXJQcm9ncmFtKQotICAgICAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9ib3JkZXJTaGFkZXJQcm9n
cmFtKSk7Ci19Ci0KLQogUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBMYXllckNocm9taXVtOjpj
cmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IExheWVyQ2hyb21pdW0ob3duZXIpKTsKQEAgLTIwMSw0OCArMTE0LDYgQEAgUmVuZGVy
U3VyZmFjZUNocm9taXVtKiBMYXllckNocm9taXVtOjpjcmVhdGVSZW5kZXJTdXJmYWNlKCkKICAg
ICByZXR1cm4gbV9yZW5kZXJTdXJmYWNlLmdldCgpOwogfQogCi11bnNpZ25lZCBMYXllckNocm9t
aXVtOjpjcmVhdGVTaGFkZXJQcm9ncmFtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25z
dCBjaGFyKiB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyU291
cmNlKQotewotICAgIHVuc2lnbmVkIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoY29udGV4dCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIsIHZlcnRleFNoYWRlclNvdXJjZSk7Ci0g
ICAgaWYgKCF2ZXJ0ZXhTaGFkZXIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3Jl
YXRlIHZlcnRleCBzaGFkZXIiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgdW5z
aWduZWQgZnJhZ21lbnRTaGFkZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFHTUVOVF9TSEFERVIsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBpZiAoIWZy
YWdtZW50U2hhZGVyKSB7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVTaGFk
ZXIodmVydGV4U2hhZGVyKSk7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBm
cmFnbWVudCBzaGFkZXIiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgdW5zaWdu
ZWQgcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKLSAgICBpZiAoIXBy
b2dyYW1PYmplY3QpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHNoYWRl
ciBwcm9ncmFtIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5hdHRhY2hTaGFkZXIocHJvZ3JhbU9iamVjdCwgdmVydGV4U2hhZGVyKSk7Ci0g
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtT2JqZWN0LCBmcmFn
bWVudFNoYWRlcikpOwotCi0gICAgLy8gQmluZCB0aGUgY29tbW9uIGF0dHJpYiBsb2NhdGlvbnMu
Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtT2Jq
ZWN0LCBzX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24sICJhX3Bvc2l0aW9uIikpOwotICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbU9iamVjdCwgc190ZXhD
b29yZEF0dHJpYkxvY2F0aW9uLCAiYV90ZXhDb29yZCIpKTsKLQotICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5saW5rUHJvZ3JhbShwcm9ncmFtT2JqZWN0KSk7Ci0gICAgaW50IGxpbmtlZCA9IDA7
Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtT2JqZWN0LCBH
cmFwaGljc0NvbnRleHQzRDo6TElOS19TVEFUVVMsICZsaW5rZWQpKTsKLSAgICBpZiAoIWxpbmtl
ZCkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBsaW5rIHNoYWRlciBwcm9ncmFtIik7
Ci0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVQcm9ncmFtKHByb2dyYW1PYmpl
Y3QpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+ZGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKSk7Ci0gICAgcmV0dXJuIHByb2dyYW1PYmpl
Y3Q7Ci19Ci0KIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNDb21taXQoKQogewogICAgIC8v
IENhbGwgbm90aWZ5U3luY1JlcXVpcmVkKCksIHdoaWNoIGZvciBub24tcm9vdCBsYXllcnMgcGx1
bWJzIHRocm91Z2ggdG8KQEAgLTQ1MSwxNiArMzIyLDE2IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6
ZHJhd0RlYnVnQm9yZGVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGxheWVyUmVu
ZGVyZXIoKSk7Ci0gICAgY29uc3QgU2hhcmVkVmFsdWVzKiBzdiA9IGxheWVyUmVuZGVyZXIoKS0+
bGF5ZXJTaGFyZWRWYWx1ZXMoKTsKLSAgICBBU1NFUlQoc3YgJiYgc3YtPmluaXRpYWxpemVkKCkp
OwotICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5ib3JkZXJTaGFkZXJQcm9ncmFt
KCkpOworICAgIGNvbnN0IEJvcmRlclByb2dyYW0qIHByb2dyYW0gPSBsYXllclJlbmRlcmVyKCkt
PmJvcmRlclByb2dyYW0oKTsKKyAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0aWFs
aXplZCgpKTsKKyAgICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihwcm9ncmFtLT5wcm9ncmFt
KCkpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlck1hdHJpeCA9IGRyYXdUcmFuc2Zv
cm0oKTsKICAgICByZW5kZXJNYXRyaXguc2NhbGUzZChib3VuZHMoKS53aWR0aCgpLCBib3VuZHMo
KS5oZWlnaHQoKSwgMSk7CiAgICAgdG9HTE1hdHJpeCgmZ2xNYXRyaXhbMF0sIGxheWVyUmVuZGVy
ZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpICogcmVuZGVyTWF0cml4KTsKICAgICBHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7Ci0gICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYoc3YtPmJvcmRlclNoYWRlck1hdHJpeExvY2F0
aW9uKCksIGZhbHNlLCAmZ2xNYXRyaXhbMF0sIDEpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybU1hdHJpeDRmdihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlv
bigpLCBmYWxzZSwgJmdsTWF0cml4WzBdLCAxKSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybTRmKHN2LT5ib3JkZXJTaGFkZXJDb2xvckxvY2F0aW9uKCksIGJvcmRlckNvbG9y
KCkucmVkKCkgLyAyNTUuMCwgYm9yZGVyQ29sb3IoKS5ncmVlbigpIC8gMjU1LjAsIGJvcmRlckNv
bG9yKCkuYmx1ZSgpIC8gMjU1LjAsIDEpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5p
Zm9ybTRmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuY29sb3JMb2NhdGlvbigpLCBib3JkZXJD
b2xvcigpLnJlZCgpIC8gMjU1LjAsIGJvcmRlckNvbG9yKCkuZ3JlZW4oKSAvIDI1NS4wLCBib3Jk
ZXJDb2xvcigpLmJsdWUoKSAvIDI1NS4wLCAxKSk7CiAKICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+bGluZVdpZHRoKGJvcmRlcldpZHRoKCkpKTsKIApAQCAtNTAwLDE5ICszNzEsNSBAQCBib29s
IExheWVyQ2hyb21pdW06OmRlc2NlbmRhbnRzRHJhd0NvbnRlbnRSZWN1cnNpdmUoKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotLy8gc3RhdGljCi12b2lkIExheWVyQ2hyb21pdW06OnByZXBhcmVG
b3JEcmF3KGNvbnN0IFNoYXJlZFZhbHVlcyogc3YpCi17Ci0gICAgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQgPSBzdi0+Y29udGV4dCgpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5k
QnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIHN2LT5xdWFkVmVydGljZXNW
Ym8oKSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiwgc3YtPnF1YWRFbGVtZW50c1ZibygpKSk7Ci0g
ICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dmVydGV4
QXR0cmliUG9pbnRlcihzX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24sIDMsIEdyYXBoaWNzQ29udGV4
dDNEOjpGTE9BVCwgZmFsc2UsIDUgKiBzaXplb2YoZmxvYXQpLCBvZmZzZXQpKTsKLSAgICBvZmZz
ZXQgKz0gMyAqIHNpemVvZihmbG9hdCk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnZlcnRl
eEF0dHJpYlBvaW50ZXIoc190ZXhDb29yZEF0dHJpYkxvY2F0aW9uLCAyLCBHcmFwaGljc0NvbnRl
eHQzRDo6RkxPQVQsIGZhbHNlLCA1ICogc2l6ZW9mKGZsb2F0KSwgb2Zmc2V0KSk7Ci0gICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNfcG9zaXRpb25BdHRy
aWJMb2NhdGlvbikpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShzX3RleENvb3JkQXR0cmliTG9jYXRpb24pKTsKLX0KLQogfQogI2VuZGlmIC8vIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBkNDU3YWM2
OWI1YzNlMzFmNzM3YWUwMmVjM2NkOGE5OGU1OTUxYTJkLi5jYzZhODExNWIzMWQyNWMwMTI0M2E4
MmI3YjQ3YTQxNTQ0ZWY1NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOCw3ICszOCw5IEBA
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJQcm9ncmFt
QmluZGluZy5oIgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgorI2luY2x1ZGUg
IlNoYWRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTYw
LDcgKzYyLDYgQEAgY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogLy8gdGhpcyBjbGFzcy4K
IGNsYXNzIExheWVyQ2hyb21pdW0gOiBwdWJsaWMgUmVmQ291bnRlZDxMYXllckNocm9taXVtPiB7
CiAgICAgZnJpZW5kIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKLSAgICBmcmllbmQgY2xh
c3MgTGF5ZXJUaWxlckNocm9taXVtOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExh
eWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyID0gMCk7CiAK
QEAgLTE3Miw0NSArMTczLDE1IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1
bSogY3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogCi0gICAgLy8gU3RvcmVzIHZhbHVlcyB0aGF0IGFy
ZSBzaGFyZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyB0aGF0IGFyZQotICAgIC8v
IGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FtZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gKGFuZCBoZW5j
ZSB0aGUgc2FtZSBHTAotICAgIC8vIGNvbnRleHQpLgotICAgIGNsYXNzIFNoYXJlZFZhbHVlcyB7
Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250
ZXh0M0QqKTsKLSAgICAgICAgflNoYXJlZFZhbHVlcygpOwotCi0gICAgICAgIEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9Ci0gICAgICAgIHVu
c2lnbmVkIHF1YWRWZXJ0aWNlc1ZibygpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZFZlcnRpY2VzVmJv
OyB9Ci0gICAgICAgIHVuc2lnbmVkIHF1YWRFbGVtZW50c1ZibygpIGNvbnN0IHsgcmV0dXJuIG1f
cXVhZEVsZW1lbnRzVmJvOyB9Ci0gICAgICAgIGludCBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWF4VGV4dHVyZVNpemU7IH0KLSAgICAgICAgdW5zaWduZWQgYm9yZGVyU2hhZGVy
UHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9yZGVyU2hhZGVyUHJvZ3JhbTsgfQotICAgICAg
ICBpbnQgYm9yZGVyU2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2JvcmRl
clNoYWRlck1hdHJpeExvY2F0aW9uOyB9Ci0gICAgICAgIGludCBib3JkZXJTaGFkZXJDb2xvckxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ib3JkZXJTaGFkZXJDb2xvckxvY2F0aW9uOyB9Ci0g
ICAgICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0Owot
ICAgICAgICB1bnNpZ25lZCBtX3F1YWRWZXJ0aWNlc1ZibzsKLSAgICAgICAgdW5zaWduZWQgbV9x
dWFkRWxlbWVudHNWYm87Ci0gICAgICAgIGludCBtX21heFRleHR1cmVTaXplOwotICAgICAgICB1
bnNpZ25lZCBtX2JvcmRlclNoYWRlclByb2dyYW07Ci0gICAgICAgIGludCBtX2JvcmRlclNoYWRl
ck1hdHJpeExvY2F0aW9uOwotICAgICAgICBpbnQgbV9ib3JkZXJTaGFkZXJDb2xvckxvY2F0aW9u
OwotICAgICAgICBib29sIG1faW5pdGlhbGl6ZWQ7Ci0gICAgfTsKLQotICAgIHN0YXRpYyB2b2lk
IHByZXBhcmVGb3JEcmF3KGNvbnN0IFNoYXJlZFZhbHVlcyopOwotCiAgICAgTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiBsYXllclJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclJlbmRlcmVy
LmdldCgpOyB9CiAKLSAgICBzdGF0aWMgdW5zaWduZWQgY3JlYXRlU2hhZGVyUHJvZ3JhbShHcmFw
aGljc0NvbnRleHQzRCosIGNvbnN0IGNoYXIqIHZlcnRleFNoYWRlclNvdXJjZSwgY29uc3QgY2hh
ciogZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwogICAgIHN0YXRpYyB2b2lkIHRvR0xNYXRyaXgoZmxv
YXQqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogCiAgICAgc3RhdGljIHZvaWQgZHJh
d1RleHR1cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBwcm9qZWN0aW9uTWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJN
YXRyaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0LCBmbG9hdCBvcGFjaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IG1hdHJpeExvY2F0aW9uLCBpbnQgYWxwaGFMb2NhdGlvbik7CiAKKyAgICB0eXBlZGVm
IFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvcywgRnJhZ21lbnRTaGFkZXJDb2xvcj4gQm9y
ZGVyUHJvZ3JhbTsKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0qIG1fb3du
ZXI7CiAgICAgTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKTsKQEAg
LTIzNywxMiArMjA4LDYgQEAgcHJvdGVjdGVkOgogICAgIC8vIGNvb3JkaW5hdGUgc3lzdGVtIHRo
ZSBsYXllcidzIHRyYW5zZm9ybXMgYXJlIHJlbGF0aXZlIHRvLgogICAgIFJlbmRlclN1cmZhY2VD
aHJvbWl1bSogbV90YXJnZXRSZW5kZXJTdXJmYWNlOwogCi0gICAgLy8gQWxsIGxheWVyIHNoYWRl
cnMgc2hhcmUgdGhlIHNhbWUgYXR0cmlidXRlIGxvY2F0aW9ucyBmb3IgdGhlIHZlcnRleCBwb3Np
dGlvbnMKLSAgICAvLyBhbmQgdGV4dHVyZSBjb29yZGluYXRlcy4gVGhpcyBhbGxvd3Mgc3dpdGNo
aW5nIHNoYWRlcnMgd2l0aG91dCByZWJpbmRpbmcgYXR0cmlidXRlCi0gICAgLy8gYXJyYXlzLgot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3Bvc2l0aW9uQXR0cmliTG9jYXRpb247Ci0gICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfdGV4Q29vcmRBdHRyaWJMb2NhdGlvbjsKLQogcHJpdmF0
ZToKICAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwCmluZGV4IDkwNWQ2ZGEzM2RlM2VmYzFkMjUzM2Y5OTI0NTgzNzgwYzZjODE4
MzcuLmVmZTM1NDgyMGE5Mjg1Nzg1OGI0YTcwZDIxMDVkMWYyMjg3OTJiMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiQ2FudmFzMkRMYXllckNocm9t
aXVtLmgiCisjaW5jbHVkZSAiR2VvbWV0cnlCaW5kaW5nLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJU
ZXh0dXJlLmgiCkBAIC0yMzYsNyArMjM3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdMYXllcnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QKICAg
ICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIHZpc2libGVS
ZWN0V2lkdGgsIHZpc2libGVSZWN0SGVpZ2h0KSk7CiAKICAgICAvLyBCaW5kIHRoZSBjb21tb24g
dmVydGV4IGF0dHJpYnV0ZXMgdXNlZCBmb3IgZHJhd2luZyBhbGwgdGhlIGxheWVycy4KLSAgICBM
YXllckNocm9taXVtOjpwcmVwYXJlRm9yRHJhdyhsYXllclNoYXJlZFZhbHVlcygpKTsKKyAgICBt
X3NoYXJlZEdlb21ldHJ5LT5wcmVwYXJlRm9yRHJhdygpOwogCiAgICAgLy8gRklYTUU6IFRoZXNl
IGNhbGxzIGNhbiBiZSBtYWRlIG9uY2UsIHdoZW4gdGhlIGNvbXBvc2l0b3IgY29udGV4dCBpcyBp
bml0aWFsaXplZC4KICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRpc2FibGUo
R3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1RFU1QpKTsKQEAgLTgwOCwxNyArODA5LDIzIEBAIGJv
b2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygpCiAgICAg
Ly8gQ3JlYXRlIGFuIEZCTyBmb3IgZG9pbmcgb2Zmc2NyZWVuIHJlbmRlcmluZy4KICAgICBHTEMo
bV9jb250ZXh0LmdldCgpLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQgPSBtX2NvbnRleHQtPmNy
ZWF0ZUZyYW1lYnVmZmVyKCkpOwogCi0gICAgbV9sYXllclNoYXJlZFZhbHVlcyA9IGFkb3B0UHRy
KG5ldyBMYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMobV9jb250ZXh0LmdldCgpKSk7Ci0gICAg
bV9jb250ZW50TGF5ZXJTaGFyZWRWYWx1ZXMgPSBhZG9wdFB0cihuZXcgQ29udGVudExheWVyQ2hy
b21pdW06OlNoYXJlZFZhbHVlcyhtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICBtX2NhbnZhc0xheWVy
U2hhcmVkVmFsdWVzID0gYWRvcHRQdHIobmV3IENhbnZhc0xheWVyQ2hyb21pdW06OlNoYXJlZFZh
bHVlcyhtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICBtX3ZpZGVvTGF5ZXJTaGFyZWRWYWx1ZXMgPSBh
ZG9wdFB0cihuZXcgVmlkZW9MYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMobV9jb250ZXh0Lmdl
dCgpKSk7Ci0gICAgbV9wbHVnaW5MYXllclNoYXJlZFZhbHVlcyA9IGFkb3B0UHRyKG5ldyBQbHVn
aW5MYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgbV9y
ZW5kZXJTdXJmYWNlU2hhcmVkVmFsdWVzID0gYWRvcHRQdHIobmV3IFJlbmRlclN1cmZhY2VDaHJv
bWl1bTo6U2hhcmVkVmFsdWVzKG1fY29udGV4dC5nZXQoKSkpOwotICAgIG1fdGlsZXJTaGFyZWRW
YWx1ZXMgPSBhZG9wdFB0cihuZXcgTGF5ZXJUaWxlckNocm9taXVtOjpTaGFyZWRWYWx1ZXMobV9j
b250ZXh0LmdldCgpKSk7Ci0KLSAgICBpZiAoIW1fbGF5ZXJTaGFyZWRWYWx1ZXMtPmluaXRpYWxp
emVkKCkgfHwgIW1fY29udGVudExheWVyU2hhcmVkVmFsdWVzLT5pbml0aWFsaXplZCgpIHx8ICFt
X2NhbnZhc0xheWVyU2hhcmVkVmFsdWVzLT5pbml0aWFsaXplZCgpCi0gICAgICAgIHx8ICFtX3Zp
ZGVvTGF5ZXJTaGFyZWRWYWx1ZXMtPmluaXRpYWxpemVkKCkgfHwgIW1fcGx1Z2luTGF5ZXJTaGFy
ZWRWYWx1ZXMtPmluaXRpYWxpemVkKCkgfHwgIW1fcmVuZGVyU3VyZmFjZVNoYXJlZFZhbHVlcy0+
aW5pdGlhbGl6ZWQoKQotICAgICAgICB8fCAhbV90aWxlclNoYXJlZFZhbHVlcy0+aW5pdGlhbGl6
ZWQoKSkgeworICAgIG1fc2hhcmVkR2VvbWV0cnkgPSBhZG9wdFB0cihuZXcgR2VvbWV0cnlCaW5k
aW5nKG1fY29udGV4dC5nZXQoKSkpOworICAgIG1fYm9yZGVyUHJvZ3JhbSA9IGFkb3B0UHRyKG5l
dyBMYXllckNocm9taXVtOjpCb3JkZXJQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgIG1f
Y29udGVudExheWVyUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBtX2NhbnZhc0xheWVyUHJvZ3JhbSA9IGFk
b3B0UHRyKG5ldyBDYW52YXNMYXllckNocm9taXVtOjpQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkp
OworICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtID0gYWRvcHRQdHIobmV3IFZpZGVvTGF5ZXJD
aHJvbWl1bTo6UkdCQVByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgbV92aWRlb0xheWVy
WVVWUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBWaWRlb0xheWVyQ2hyb21pdW06OllVVlByb2dyYW0o
bV9jb250ZXh0LmdldCgpKSk7CisgICAgbV9wbHVnaW5MYXllclByb2dyYW0gPSBhZG9wdFB0cihu
ZXcgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBt
X3JlbmRlclN1cmZhY2VQcm9ncmFtID0gYWRvcHRQdHIobmV3IFJlbmRlclN1cmZhY2VDaHJvbWl1
bTo6UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJv
Z3JhbSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJTdXJmYWNlQ2hyb21pdW06Ok1hc2tQcm9ncmFtKG1f
Y29udGV4dC5nZXQoKSkpOworICAgIG1fdGlsZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3IExheWVy
VGlsZXJDaHJvbWl1bTo6UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKworICAgIGlmICghbV9z
aGFyZWRHZW9tZXRyeS0+aW5pdGlhbGl6ZWQoKSB8fCAhbV9ib3JkZXJQcm9ncmFtLT5pbml0aWFs
aXplZCgpCisgICAgICAgIHx8ICFtX2NvbnRlbnRMYXllclByb2dyYW0tPmluaXRpYWxpemVkKCkg
fHwgIW1fY2FudmFzTGF5ZXJQcm9ncmFtLT5pbml0aWFsaXplZCgpCisgICAgICAgIHx8ICFtX3Zp
ZGVvTGF5ZXJSR0JBUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSB8fCAhbV92aWRlb0xheWVyWVVWUHJv
Z3JhbS0+aW5pdGlhbGl6ZWQoKQorICAgICAgICB8fCAhbV9wbHVnaW5MYXllclByb2dyYW0tPmlu
aXRpYWxpemVkKCkgfHwgIW1fcmVuZGVyU3VyZmFjZVByb2dyYW0tPmluaXRpYWxpemVkKCkKKyAg
ICAgICAgfHwgIW1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLT5pbml0aWFsaXplZCgpIHx8ICFt
X3RpbGVyUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBMT0dfRVJST1IoIkNvbXBv
c2l0b3IgZmFpbGVkIHRvIGluaXRpYWxpemUgc2hhZGVycy4gRmFsbGluZyBiYWNrIHRvIHNvZnR3
YXJlLiIpOwogICAgICAgICBjbGVhbnVwU2hhcmVkT2JqZWN0cygpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpAQCAtODMxLDEzICs4MzgsMTYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKIAotICAgIG1fbGF5ZXJTaGFyZWRWYWx1ZXMuY2xlYXIoKTsKLSAgICBtX2NvbnRlbnRMYXll
clNoYXJlZFZhbHVlcy5jbGVhcigpOwotICAgIG1fY2FudmFzTGF5ZXJTaGFyZWRWYWx1ZXMuY2xl
YXIoKTsKLSAgICBtX3ZpZGVvTGF5ZXJTaGFyZWRWYWx1ZXMuY2xlYXIoKTsKLSAgICBtX3BsdWdp
bkxheWVyU2hhcmVkVmFsdWVzLmNsZWFyKCk7Ci0gICAgbV9yZW5kZXJTdXJmYWNlU2hhcmVkVmFs
dWVzLmNsZWFyKCk7Ci0gICAgbV90aWxlclNoYXJlZFZhbHVlcy5jbGVhcigpOworICAgIG1fc2hh
cmVkR2VvbWV0cnkuY2xlYXIoKTsKKyAgICBtX2JvcmRlclByb2dyYW0uY2xlYXIoKTsKKyAgICBt
X2NvbnRlbnRMYXllclByb2dyYW0uY2xlYXIoKTsKKyAgICBtX2NhbnZhc0xheWVyUHJvZ3JhbS5j
bGVhcigpOworICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLmNsZWFyKCk7CisgICAgbV92aWRl
b0xheWVyWVVWUHJvZ3JhbS5jbGVhcigpOworICAgIG1fcGx1Z2luTGF5ZXJQcm9ncmFtLmNsZWFy
KCk7CisgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbS5jbGVhcigpOworICAgIG1fcmVuZGVyU3Vy
ZmFjZU1hc2tQcm9ncmFtLmNsZWFyKCk7CisgICAgbV90aWxlclByb2dyYW0uY2xlYXIoKTsKICAg
ICBpZiAobV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKQogICAgICAgICBHTEMobV9jb250ZXh0Lmdl
dCgpLCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJ
ZCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDViOTAwZTQ3MjU3
YjhmNjdlMzNjM2FhZDA3Y2U5MGQ3MmU0MmRjZDkuLjFjMjAzOTNhNzYxNmM5YzZjMWMzZDA0NTUz
MDQ5YTBhNDY2MzY0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC01
Nyw2ICs1Nyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR2VvbWV0cnlCaW5k
aW5nOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIC8vIENsYXNzIHRoYXQgaGFuZGxlcyBk
cmF3aW5nIG9mIGNvbXBvc2l0ZWQgcmVuZGVyIGxheWVycyB1c2luZyBHTC4KQEAgLTEwNywxMyAr
MTA4LDE2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2hlY2tUZXh0dXJlU2l6ZShjb25zdCBJbnRT
aXplJik7CiAKLSAgICBjb25zdCBMYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMqIGxheWVyU2hh
cmVkVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclNoYXJlZFZhbHVlcy5nZXQoKTsgfQot
ICAgIGNvbnN0IENvbnRlbnRMYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMqIGNvbnRlbnRMYXll
clNoYXJlZFZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudExheWVyU2hhcmVkVmFsdWVz
LmdldCgpOyB9Ci0gICAgY29uc3QgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzKiBj
YW52YXNMYXllclNoYXJlZFZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FudmFzTGF5ZXJTaGFy
ZWRWYWx1ZXMuZ2V0KCk7IH0KLSAgICBjb25zdCBWaWRlb0xheWVyQ2hyb21pdW06OlNoYXJlZFZh
bHVlcyogdmlkZW9MYXllclNoYXJlZFZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9MYXll
clNoYXJlZFZhbHVlcy5nZXQoKTsgfQotICAgIGNvbnN0IFBsdWdpbkxheWVyQ2hyb21pdW06OlNo
YXJlZFZhbHVlcyogcGx1Z2luTGF5ZXJTaGFyZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3Bs
dWdpbkxheWVyU2hhcmVkVmFsdWVzLmdldCgpOyB9Ci0gICAgY29uc3QgUmVuZGVyU3VyZmFjZUNo
cm9taXVtOjpTaGFyZWRWYWx1ZXMqIHJlbmRlclN1cmZhY2VTaGFyZWRWYWx1ZXMoKSBjb25zdCB7
IHJldHVybiBtX3JlbmRlclN1cmZhY2VTaGFyZWRWYWx1ZXMuZ2V0KCk7IH0KLSAgICBjb25zdCBM
YXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogdGlsZXJTaGFyZWRWYWx1ZXMoKSBjb25z
dCB7IHJldHVybiBtX3RpbGVyU2hhcmVkVmFsdWVzLmdldCgpOyB9CisgICAgY29uc3QgR2VvbWV0
cnlCaW5kaW5nKiBzaGFyZWRHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkR2VvbWV0
cnkuZ2V0KCk7IH0KKyAgICBjb25zdCBMYXllckNocm9taXVtOjpCb3JkZXJQcm9ncmFtKiBib3Jk
ZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9ib3JkZXJQcm9ncmFtLmdldCgpOyB9CisgICAg
Y29uc3QgQ29udGVudExheWVyQ2hyb21pdW06OlByb2dyYW0qIGNvbnRlbnRMYXllclByb2dyYW0o
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYXllclByb2dyYW0uZ2V0KCk7IH0KKyAgICBjb25z
dCBDYW52YXNMYXllckNocm9taXVtOjpQcm9ncmFtKiBjYW52YXNMYXllclByb2dyYW0oKSBjb25z
dCB7IHJldHVybiBtX2NhbnZhc0xheWVyUHJvZ3JhbS5nZXQoKTsgfQorICAgIGNvbnN0IFZpZGVv
TGF5ZXJDaHJvbWl1bTo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLmdldCgpOyB9CisgICAgY29uc3QgVmlk
ZW9MYXllckNocm9taXVtOjpZVVZQcm9ncmFtKiB2aWRlb0xheWVyWVVWUHJvZ3JhbSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW9MYXllcllVVlByb2dyYW0uZ2V0KCk7IH0KKyAgICBjb25zdCBQbHVn
aW5MYXllckNocm9taXVtOjpQcm9ncmFtKiBwbHVnaW5MYXllclByb2dyYW0oKSBjb25zdCB7IHJl
dHVybiBtX3BsdWdpbkxheWVyUHJvZ3JhbS5nZXQoKTsgfQorICAgIGNvbnN0IFJlbmRlclN1cmZh
Y2VDaHJvbWl1bTo6UHJvZ3JhbSogcmVuZGVyU3VyZmFjZVByb2dyYW0oKSBjb25zdCB7IHJldHVy
biBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmdldCgpOyB9CisgICAgY29uc3QgUmVuZGVyU3VyZmFj
ZUNocm9taXVtOjpNYXNrUHJvZ3JhbSogcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCkgY29uc3Qg
eyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0uZ2V0KCk7IH0KKyAgICBjb25zdCBM
YXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qIHRpbGVyUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGlsZXJQcm9ncmFtLmdldCgpOyB9CiAKICAgICB2b2lkIHJlc2l6ZU9uc2NyZWVuQ29udGVu
dChjb25zdCBJbnRTaXplJik7CiAKQEAgLTE5MCwxMyArMTk0LDE2IEBAIHByaXZhdGU6CiAgICAg
Ly8gYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvc2l0b3IuIFNpbmNl
IHRoZXJlIGNhbiBiZQogICAgIC8vIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUgY29tcG9zaXRv
ciBydW5uaW5nIGluIHRoZSBzYW1lIHJlbmRlcmVyIHByb2Nlc3MKICAgICAvLyB3ZSBjYW5ub3Qg
c3RvcmUgdGhlc2UgdmFsdWVzIGluIHN0YXRpYyB2YXJpYWJsZXMuCi0gICAgT3duUHRyPExheWVy
Q2hyb21pdW06OlNoYXJlZFZhbHVlcz4gbV9sYXllclNoYXJlZFZhbHVlczsKLSAgICBPd25QdHI8
Q29udGVudExheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcz4gbV9jb250ZW50TGF5ZXJTaGFyZWRW
YWx1ZXM7Ci0gICAgT3duUHRyPENhbnZhc0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcz4gbV9j
YW52YXNMYXllclNoYXJlZFZhbHVlczsKLSAgICBPd25QdHI8VmlkZW9MYXllckNocm9taXVtOjpT
aGFyZWRWYWx1ZXM+IG1fdmlkZW9MYXllclNoYXJlZFZhbHVlczsKLSAgICBPd25QdHI8UGx1Z2lu
TGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzPiBtX3BsdWdpbkxheWVyU2hhcmVkVmFsdWVzOwot
ICAgIE93blB0cjxSZW5kZXJTdXJmYWNlQ2hyb21pdW06OlNoYXJlZFZhbHVlcz4gbV9yZW5kZXJT
dXJmYWNlU2hhcmVkVmFsdWVzOwotICAgIE93blB0cjxMYXllclRpbGVyQ2hyb21pdW06OlNoYXJl
ZFZhbHVlcz4gbV90aWxlclNoYXJlZFZhbHVlczsKKyAgICBPd25QdHI8R2VvbWV0cnlCaW5kaW5n
PiBtX3NoYXJlZEdlb21ldHJ5OworICAgIE93blB0cjxMYXllckNocm9taXVtOjpCb3JkZXJQcm9n
cmFtPiBtX2JvcmRlclByb2dyYW07CisgICAgT3duUHRyPENvbnRlbnRMYXllckNocm9taXVtOjpQ
cm9ncmFtPiBtX2NvbnRlbnRMYXllclByb2dyYW07CisgICAgT3duUHRyPENhbnZhc0xheWVyQ2hy
b21pdW06OlByb2dyYW0+IG1fY2FudmFzTGF5ZXJQcm9ncmFtOworICAgIE93blB0cjxWaWRlb0xh
eWVyQ2hyb21pdW06OlJHQkFQcm9ncmFtPiBtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbTsKKyAgICBP
d25QdHI8VmlkZW9MYXllckNocm9taXVtOjpZVVZQcm9ncmFtPiBtX3ZpZGVvTGF5ZXJZVVZQcm9n
cmFtOworICAgIE93blB0cjxQbHVnaW5MYXllckNocm9taXVtOjpQcm9ncmFtPiBtX3BsdWdpbkxh
eWVyUHJvZ3JhbTsKKyAgICBPd25QdHI8UmVuZGVyU3VyZmFjZUNocm9taXVtOjpQcm9ncmFtPiBt
X3JlbmRlclN1cmZhY2VQcm9ncmFtOworICAgIE93blB0cjxSZW5kZXJTdXJmYWNlQ2hyb21pdW06
Ok1hc2tQcm9ncmFtPiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbTsKKyAgICBPd25QdHI8TGF5
ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtPiBtX3RpbGVyUHJvZ3JhbTsKIAogICAgIE93blB0cjxU
ZXh0dXJlTWFuYWdlcj4gbV90ZXh0dXJlTWFuYWdlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJv
bWl1bS5jcHAKaW5kZXggYzhhYzAyMTY3ODMzMzU1YjNjNzYwZDU0YTg3NmQ2ZDZkNDdmY2E2MC4u
MWI2MDgyOTE2OWIzMzI5Yjc0NTQzMDg0ZmE2ZTc0NjU3NDViOWI0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uY3BwCkBAIC0zOTEsOSArMzkxLDkgQEAgdm9pZCBMYXllclRpbGVyQ2hy
b21pdW06OmRyYXcoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQo
KTsKLSAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogc2hhcmVkVmFs
dWVzID0gbGF5ZXJSZW5kZXJlcigpLT50aWxlclNoYXJlZFZhbHVlcygpOwotICAgIGxheWVyUmVu
ZGVyZXIoKS0+dXNlU2hhZGVyKHNoYXJlZFZhbHVlcy0+dGlsZXJTaGFkZXJQcm9ncmFtKCkpOwot
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc2hhcmVkVmFsdWVzLT5zaGFkZXJT
YW1wbGVyTG9jYXRpb24oKSwgMCkpOworICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJv
Z3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+dGlsZXJQcm9ncmFtKCk7CisgICAgbGF5
ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsKKyAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxl
ckxvY2F0aW9uKCksIDApKTsKIAogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAg
ICAgY29udGVudFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0
LCBib3R0b20pOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpk
cmF3KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgICAgICAgICAgZmxvYXQgdGV4U2Nh
bGVYID0gdGlsZVJlY3Qud2lkdGgoKSAvIHRpbGVXaWR0aDsKICAgICAgICAgICAgIGZsb2F0IHRl
eFNjYWxlWSA9IHRpbGVSZWN0LmhlaWdodCgpIC8gdGlsZUhlaWdodDsKIAotICAgICAgICAgICAg
ZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRy
aXgoKSwgdGlsZU1hdHJpeCwgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIDEs
IHRleFRyYW5zbGF0ZVgsIHRleFRyYW5zbGF0ZVksIHRleFNjYWxlWCwgdGV4U2NhbGVZLCBzaGFy
ZWRWYWx1ZXMpOworICAgICAgICAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJl
bmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgdGlsZU1hdHJpeCwgdGlsZVJlY3Qud2lkdGgo
KSwgdGlsZVJlY3QuaGVpZ2h0KCksIDEsIHRleFRyYW5zbGF0ZVgsIHRleFRyYW5zbGF0ZVksIHRl
eFNjYWxlWCwgdGV4U2NhbGVZLCBwcm9ncmFtKTsKIAogICAgICAgICAgICAgdGlsZS0+dGV4dHVy
ZSgpLT51bnJlc2VydmUoKTsKICAgICAgICAgfQpAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQgTGF5
ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBjb25zdCBUcmFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xhdGVYLCBmbG9hdCB0ZXhUcmFuc2xh
dGVZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxl
WCwgZmxvYXQgdGV4U2NhbGVZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzKiBzdikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dy
YW0qIHByb2dyYW0pCiB7CiAgICAgc3RhdGljIGZsb2F0IGdsTWF0cml4WzE2XTsKIApAQCAtNDc3
LDkzICs0NzcsMTYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFRyYW4KICAgICAvLyBBcHBseSB0aGUg
cHJvamVjdGlvbiBtYXRyaXggYmVmb3JlIHNlbmRpbmcgdGhlIHRyYW5zZm9ybSBvdmVyIHRvIHRo
ZSBzaGFkZXIuCiAgICAgTGF5ZXJDaHJvbWl1bTo6dG9HTE1hdHJpeCgmZ2xNYXRyaXhbMF0sIHBy
b2plY3Rpb25NYXRyaXggKiByZW5kZXJNYXRyaXgpOwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnVuaWZvcm1NYXRyaXg0ZnYoc3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCksIGZhbHNlLCAm
Z2xNYXRyaXhbMF0sIDEpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybU1hdHJp
eDRmdihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLCBmYWxzZSwgJmds
TWF0cml4WzBdLCAxKSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHN2
LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCksIG9wYWNpdHkpKTsKKyAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigp
LCBvcGFjaXR5KSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHN2LT5z
aGFkZXJUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLAorICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51
bmlmb3JtNGYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkudGV4VHJhbnNmb3JtTG9jYXRpb24oKSwK
ICAgICAgICAgdGV4VHJhbnNsYXRlWCwgdGV4VHJhbnNsYXRlWSwgdGV4U2NhbGVYLCB0ZXhTY2Fs
ZVkpKTsKIAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kcmF3RWxlbWVudHMoR3JhcGhpY3ND
b250ZXh0M0Q6OlRSSUFOR0xFUywgNiwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JU
LCAwKSk7CiB9CiAKLUxheWVyVGlsZXJDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjpTaGFyZWRWYWx1
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkK
LSAgICAsIG1fdGlsZXJTaGFkZXJQcm9ncmFtKDApCi0gICAgLCBtX3NoYWRlclNhbXBsZXJMb2Nh
dGlvbigtMSkKLSAgICAsIG1fc2hhZGVyTWF0cml4TG9jYXRpb24oLTEpCi0gICAgLCBtX3NoYWRl
ckFscGhhTG9jYXRpb24oLTEpCi0gICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQotewotICAgIC8v
IFNoYWRlcnMgZm9yIGRyYXdpbmcgdGhlIGxheWVyIGNvbnRlbnRzLgotICAgIGNoYXIgdmVydGV4
U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsgICBc
biIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7ICAgXG4iCi0gICAgICAgICJ1
bmlmb3JtIG1hdDQgbWF0cml4OyAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHRl
eFRyYW5zZm9ybTsgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAg
XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAi
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24g
PSBtYXRyaXggKiBhX3Bvc2l0aW9uOyBcbiIKLSAgICAgICAgIiAgdl90ZXhDb29yZCA9IGFfdGV4
Q29vcmQgKiB0ZXhUcmFuc2Zvcm0uencgKyB0ZXhUcmFuc2Zvcm0ueHk7XG4iCi0gICAgICAgICJ9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLQotI2lmIFBMQVRGT1JNKFNLSUEpCi0g
ICAgLy8gQ29sb3IgaXMgaW4gUkdCQSBvcmRlci4KLSAgICBjaGFyIHJnYmFGcmFnbWVudFNoYWRl
clN0cmluZ1tdID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJE
IHNfdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0g
ZmxvYXQgYWxwaGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIK
LSAgICAgICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcbiIKLSAgICAgICAgIiAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUs
IHZfdGV4Q29vcmQpOyBcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdGV4Q29sb3IgKiBh
bHBoYTsgXG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXG4iOwotI2VuZGlmCi0KLSAgICAvLyBDb2xvciBpcyBpbiBCR1JBIG9y
ZGVyLgotICAgIGNoYXIgYmdyYUZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAg
ICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAg
ICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICB2ZWM0
IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCk7IFxuIgotICAgICAg
ICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENvbG9yLnosIHRleENvbG9yLnksIHRleENvbG9y
LngsIHRleENvbG9yLncpICogYWxwaGE7IFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLQotI2lmIFBMQVRGT1JNKFNL
SUEpCi0gICAgLy8gQXNzdW1pbmcgdGhlIHBhY2tpbmcgaXMgZWl0aGVyIFNraWEgZGVmYXVsdCBS
R0JBIG9yIENocm9taXVtIGRlZmF1bHQgQkdSQS4KLSAgICBjaGFyKiBmcmFnbWVudFNoYWRlclN0
cmluZyA9IFNLX0IzMl9TSElGVCA/IHJnYmFGcmFnbWVudFNoYWRlclN0cmluZyA6IGJncmFGcmFn
bWVudFNoYWRlclN0cmluZzsKLSNlbHNlCi0gICAgY2hhciogZnJhZ21lbnRTaGFkZXJTdHJpbmcg
PSBiZ3JhRnJhZ21lbnRTaGFkZXJTdHJpbmc7Ci0jZW5kaWYKLSAgICBtX3RpbGVyU2hhZGVyUHJv
Z3JhbSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZVNoYWRlclByb2dyYW0obV9jb250ZXh0LCB2ZXJ0
ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nKTsKLSAgICBpZiAoIW1fdGlsZXJT
aGFkZXJQcm9ncmFtKSB7Ci0gICAgICAgIExPR19FUlJPUigiTGF5ZXJUaWxlckNocm9taXVtOiBG
YWlsZWQgdG8gY3JlYXRlIHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1fdGlsZXJTaGFkZXJQcm9ncmFtLCAic190ZXh0dXJlIik7Ci0gICAgbV9zaGFkZXJN
YXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fdGlsZXJTaGFk
ZXJQcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV9zaGFkZXJBbHBoYUxvY2F0aW9uID0gbV9jb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV90aWxlclNoYWRlclByb2dyYW0sICJhbHBoYSIpOwot
ICAgIG1fc2hhZGVyVGV4VHJhbnNmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihtX3RpbGVyU2hhZGVyUHJvZ3JhbSwgInRleFRyYW5zZm9ybSIpOwotICAgIEFTU0VS
VChtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fc2hhZGVyTWF0
cml4TG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3NoYWRlckFscGhhTG9jYXRpb24gIT0g
LTEpOwotICAgIEFTU0VSVChtX3NoYWRlclRleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xKTsKLQot
ICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwotfQotCi1MYXllclRpbGVyQ2hyb21pdW06OlNoYXJl
ZFZhbHVlczo6flNoYXJlZFZhbHVlcygpCi17Ci0gICAgaWYgKG1fdGlsZXJTaGFkZXJQcm9ncmFt
KQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV90aWxl
clNoYWRlclByb2dyYW0pKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0u
aAppbmRleCA0YjYzOTlkMDdkNWFlNmYyYWI4ZWZmMmZlOTg0MTQ4MTBkYTJkZmQzLi4zN2U1MGVm
YzY2NGViOTIzNGE4MGYzYzVlZDYzM2RlNGIzYWNmMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hy
b21pdW0uaApAQCAtNjMsMjcgKzYzLDcgQEAgcHVibGljOgogICAgIC8vIENoYW5nZSB0aGUgdGls
ZSBzaXplLiAgVGhpcyBtYXkgaW52YWxpZGF0ZSBhbGwgdGhlIGV4aXN0aW5nIHRpbGVzLgogICAg
IHZvaWQgc2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSk7CiAKLSAgICBjbGFzcyBTaGFy
ZWRWYWx1ZXMgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgU2hhcmVkVmFsdWVzKEdy
YXBoaWNzQ29udGV4dDNEKik7Ci0gICAgICAgIH5TaGFyZWRWYWx1ZXMoKTsKLQotICAgICAgICB1
bnNpZ25lZCB0aWxlclNoYWRlclByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3RpbGVyU2hhZGVy
UHJvZ3JhbTsgfQotICAgICAgICBpbnQgc2hhZGVyU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaGFkZXJTYW1wbGVyTG9jYXRpb247IH0KLSAgICAgICAgaW50IHNoYWRlck1hdHJp
eExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJNYXRyaXhMb2NhdGlvbjsgfQotICAg
ICAgICBpbnQgc2hhZGVyQWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVyQWxw
aGFMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyVGV4VHJhbnNmb3JtTG9jYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3NoYWRlclRleFRyYW5zZm9ybUxvY2F0aW9uOyB9Ci0gICAgICAgIGlu
dCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7IH0KLQotICAgIHBy
aXZhdGU6Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7Ci0gICAgICAgIHVu
c2lnbmVkIG1fdGlsZXJTaGFkZXJQcm9ncmFtOwotICAgICAgICBpbnQgbV9zaGFkZXJTYW1wbGVy
TG9jYXRpb247Ci0gICAgICAgIGludCBtX3NoYWRlck1hdHJpeExvY2F0aW9uOwotICAgICAgICBp
bnQgbV9zaGFkZXJBbHBoYUxvY2F0aW9uOwotICAgICAgICBpbnQgbV9zaGFkZXJUZXhUcmFuc2Zv
cm1Mb2NhdGlvbjsKLSAgICAgICAgaW50IG1faW5pdGlhbGl6ZWQ7Ci0gICAgfTsKKyAgICB0eXBl
ZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRT
aGFkZXJUZXhBbHBoYT4gUHJvZ3JhbTsKIAogcHJpdmF0ZToKICAgICBMYXllclRpbGVyQ2hyb21p
dW0oTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRl
clRleGVsT3B0aW9uKTsKQEAgLTEwOCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFRyYW5zbGF0ZVgsIGZsb2F0IHRleFRy
YW5zbGF0ZVksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCwgZmxv
YXQgdGV4U2NhbGVZLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXllclRpbGVy
Q2hyb21pdW06OlNoYXJlZFZhbHVlcyopOworICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qKTsKIAogICAgIHZvaWQgcmVzaXplTGF5ZXIo
Y29uc3QgSW50U2l6ZSYgc2l6ZSk7CiAgICAgLy8gR3JvdyBsYXllciBzaXplIHRvIGNvbnRhaW4g
dGhpcyByZWN0YW5nbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDg3
OGMxNDJjODc5YTcyZGQ3ZjE5NDhiMmNlZDZlNDVmMmY5YWY5MTAuLjgwOWViMzc2NDQ5ODI2NDRh
NGFiODhmMTZhZmFkMDUzMTk2YzIzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0u
Y3BwCkBAIC0zNSw1OCArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBsdWdpbkxh
eWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6U2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3NoYWRlclByb2dy
YW0oMCkKLSAgICAsIG1fc2hhZGVyU2FtcGxlckxvY2F0aW9uKC0xKQotICAgICwgbV9zaGFkZXJN
YXRyaXhMb2NhdGlvbigtMSkKLSAgICAsIG1fc2hhZGVyQWxwaGFMb2NhdGlvbigtMSkKLSAgICAs
IG1faW5pdGlhbGl6ZWQoZmFsc2UpCi17Ci0gICAgY2hhciB2ZXJ0ZXhTaGFkZXJTdHJpbmdbXSA9
Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOyAgIFxuIgotICAgICAgICAiYXR0
cmlidXRlIHZlYzIgYV90ZXhDb29yZDsgICBcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0NCBtYXRy
aXg7ICAgICAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgIFxu
IgotICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0g
bWF0cml4ICogYV9wb3NpdGlvbjsgXG4iCi0gICAgICAgICIgIHZfdGV4Q29vcmQgPSBhX3RleENv
b3JkOyAgIFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0K
LSAgICBjaGFyIGZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidmFy
eWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAg
ICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAg
IFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICB2ZWM0IHRleENvbG9y
ID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdmVjMih2X3RleENvb3JkLngsIHZfdGV4Q29vcmQueSkp
OyBcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci54LCB0ZXhDb2xv
ci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFscGhhOyBcbiIKLSAgICAgICAgIn0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSAg
ICBtX3NoYWRlclByb2dyYW0gPSBjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29udGV4dCwgdmVydGV4
U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZyk7Ci0gICAgaWYgKCFtX3NoYWRlclBy
b2dyYW0pIHsKLSAgICAgICAgTE9HX0VSUk9SKCJQbHVnaW5MYXllckNocm9taXVtOiBGYWlsZWQg
dG8gY3JlYXRlIHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KG1fc2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIpOwotICAgIG1fc2hhZGVyTWF0cml4TG9jYXRp
b24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJtYXRy
aXgiKTsKLSAgICBtX3NoYWRlckFscGhhTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJhbHBoYSIpOwotICAgIEFTU0VSVChtX3NoYWRlclNh
bXBsZXJMb2NhdGlvbiAhPSAtMSk7Ci0gICAgQVNTRVJUKG1fc2hhZGVyTWF0cml4TG9jYXRpb24g
IT0gLTEpOwotICAgIEFTU0VSVChtX3NoYWRlckFscGhhTG9jYXRpb24gIT0gLTEpOwotCi0gICAg
bV9pbml0aWFsaXplZCA9IHRydWU7Ci19Ci0KLVBsdWdpbkxheWVyQ2hyb21pdW06OlNoYXJlZFZh
bHVlczo6flNoYXJlZFZhbHVlcygpCi17Ci0gICAgaWYgKG1fc2hhZGVyUHJvZ3JhbSkKLSAgICAg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fc2hhZGVyUHJvZ3Jh
bSkpOwotfQotCiBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IFBsdWdpbkxheWVyQ2hy
b21pdW06OmNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogewogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGx1Z2luTGF5ZXJDaHJvbWl1bShvd25lcikpOwpAQCAtMTA5LDggKzU3
LDggQEAgdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c0lmRGlydHkoKQog
dm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpkcmF3KCkKIHsKICAgICBBU1NFUlQobGF5ZXJSZW5k
ZXJlcigpKTsKLSAgICBjb25zdCBQbHVnaW5MYXllckNocm9taXVtOjpTaGFyZWRWYWx1ZXMqIHN2
ID0gbGF5ZXJSZW5kZXJlcigpLT5wbHVnaW5MYXllclNoYXJlZFZhbHVlcygpOwotICAgIEFTU0VS
VChzdiAmJiBzdi0+aW5pdGlhbGl6ZWQoKSk7CisgICAgY29uc3QgUGx1Z2luTGF5ZXJDaHJvbWl1
bTo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+cGx1Z2luTGF5ZXJQcm9ncmFt
KCk7CisgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CiAgICAg
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwogICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKSk7CiAgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVy
ZUlkKSk7CkBAIC0xMjIsMTEgKzcwLDEyIEBAIHZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6ZHJh
dygpCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpKTsKICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
VCwgR0xfQ0xBTVBfVE9fRURHRSkpOwogICAgIAotICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hh
ZGVyKHN2LT5zaGFkZXJQcm9ncmFtKCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlm
b3JtMWkoc3YtPnNoYWRlclNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CisgICAgbGF5ZXJSZW5kZXJl
cigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsKKyAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9u
KCksIDApKTsKICAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+
cHJvamVjdGlvbk1hdHJpeCgpLCBkcmF3VHJhbnNmb3JtKCksCiAgICAgICAgICAgICAgICAgICAg
ICBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSwgZHJhd09wYWNpdHkoKSwKLSAg
ICAgICAgICAgICAgICAgICAgIHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBzdi0+c2hhZGVy
QWxwaGFMb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNo
YWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5m
cmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxh
eWVyQ2hyb21pdW0uaAppbmRleCA4NTNiMzI4OTc3YzQ0M2NkZjcwN2NjM2E5NWI3OTVmOWRiOTM2
ZmRmLi5jMTZiNGU1OWE1OGUyYTYyYzVkNTVlNWNmMTY1M2YwYjM3NGY1YTUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UGx1Z2luTGF5ZXJDaHJvbWl1bS5oCkBAIC00MywyNSArNDMsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKTsKICAgICAgICAgCi0gICAg
Y2xhc3MgU2hhcmVkVmFsdWVzIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNoYXJlZFZhbHVlcyhH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCk7Ci0gICAgICAgIH5TaGFyZWRWYWx1ZXMoKTsKLQot
ICAgICAgICB1bnNpZ25lZCBzaGFkZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJQ
cm9ncmFtOyB9Ci0gICAgICAgIGludCBzaGFkZXJTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyTWF0cml4
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlck1hdHJpeExvY2F0aW9uOyB9Ci0gICAg
ICAgIGludCBzaGFkZXJBbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJBbHBo
YUxvY2F0aW9uOyB9Ci0gICAgICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBt
X2luaXRpYWxpemVkOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBHcmFwaGljc0NvbnRleHQz
RCogbV9jb250ZXh0OwotICAgICAgICB1bnNpZ25lZCBtX3NoYWRlclByb2dyYW07Ci0gICAgICAg
IGludCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fc2hhZGVyTWF0cml4
TG9jYXRpb247Ci0gICAgICAgIGludCBtX3NoYWRlckFscGhhTG9jYXRpb247Ci0gICAgICAgIGJv
b2wgbV9pbml0aWFsaXplZDsKLSAgICB9OworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUHJvZ3JhbTsKIAog
cHJpdmF0ZToKICAgICBQbHVnaW5MYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSog
b3duZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiZTAwZWZmZGJlNTRi
ZWZkYzI0MmU1ODQ1MDVkM2QxZGI1M2RlZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHAKQEAgLTAs
MCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgorCisjaW5j
bHVkZSAiR2VvbWV0cnlCaW5kaW5nLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hy
b21pdW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQcm9ncmFtQmluZGluZ0Jhc2U6OlBy
b2dyYW1CaW5kaW5nQmFzZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICA6IG1fY29u
dGV4dChjb250ZXh0KQorICAgICwgbV9wcm9ncmFtKDApCisgICAgLCBtX2luaXRpYWxpemVkKGZh
bHNlKQoreworfQorCitQcm9ncmFtQmluZGluZ0Jhc2U6On5Qcm9ncmFtQmluZGluZ0Jhc2UoKQor
eworICAgIGlmIChtX3Byb2dyYW0pCisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
ZGVsZXRlUHJvZ3JhbShtX3Byb2dyYW0pKTsKK30KKworYm9vbCBQcm9ncmFtQmluZGluZ0Jhc2U6
OmluaXQoY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRT
aGFkZXIpCit7CisgICAgbV9wcm9ncmFtID0gY3JlYXRlU2hhZGVyUHJvZ3JhbSh2ZXJ0ZXhTaGFk
ZXIsIGZyYWdtZW50U2hhZGVyKTsKKyAgICBpZiAoIW1fcHJvZ3JhbSkgeworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIHByb2dyYW0iKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordW5zaWduZWQgUHJvZ3JhbUJp
bmRpbmdCYXNlOjpsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVy
U291cmNlKQoreworICAgIHVuc2lnbmVkIHNoYWRlciA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVy
KHR5cGUpOworICAgIGlmICghc2hhZGVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICBTdHJpbmcg
c291cmNlU3RyaW5nKHNoYWRlclNvdXJjZSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzb3VyY2VTdHJpbmcpKTsKKyAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoc2hhZGVyKSk7CisgICAgaW50IGNvbXBpbGVkID0g
MDsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVTLCAmY29tcGlsZWQpKTsKKyAgICBpZiAoIWNv
bXBpbGVkKSB7CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVy
KHNoYWRlcikpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHNoYWRlcjsK
K30KKwordW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtKGNv
bnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU291cmNlLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hh
ZGVyU291cmNlKQoreworICAgIHVuc2lnbmVkIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIsIHZlcnRleFNoYWRlclNvdXJjZSk7CisgICAg
aWYgKCF2ZXJ0ZXhTaGFkZXIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IHZlcnRleCBzaGFkZXIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgZnJhZ21lbnRTaGFkZXIgPSBsb2FkU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVO
VF9TSEFERVIsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBpZiAoIWZyYWdtZW50U2hhZGVy
KSB7CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRl
eFNoYWRlcikpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZnJhZ21lbnQg
c2hhZGVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHVuc2lnbmVkIHByb2dy
YW1PYmplY3QgPSBtX2NvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICBpZiAoIXByb2dyYW1P
YmplY3QpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBwcm9n
cmFtIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW1PYmplY3QsIHZlcnRleFNoYWRlcikpOworICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW1PYmplY3QsIGZy
YWdtZW50U2hhZGVyKSk7CisKKyAgICAvLyBCaW5kIHRoZSBjb21tb24gYXR0cmliIGxvY2F0aW9u
cy4KKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9n
cmFtT2JqZWN0LCBHZW9tZXRyeUJpbmRpbmc6OnBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSwgImFf
cG9zaXRpb24iKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kQXR0cmliTG9j
YXRpb24ocHJvZ3JhbU9iamVjdCwgR2VvbWV0cnlCaW5kaW5nOjp0ZXhDb29yZEF0dHJpYkxvY2F0
aW9uKCksICJhX3RleENvb3JkIikpOworCisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5s
aW5rUHJvZ3JhbShwcm9ncmFtT2JqZWN0KSk7CisgICAgaW50IGxpbmtlZCA9IDA7CisgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbU9iamVjdCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTktfU1RBVFVTLCAmbGlua2VkKSk7CisgICAgaWYgKCFsaW5rZWQpIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbGluayBzaGFkZXIgcHJvZ3JhbSIpOworICAg
ICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbU9iamVj
dCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpKTsKKyAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmRlbGV0ZVNoYWRlcihmcmFnbWVudFNoYWRlcikpOworICAgIHJldHVybiBwcm9n
cmFtT2JqZWN0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
NmJmNjA1NjE2ZGQ3MmJjNDI4ODA4NmY2YmY0OGI2NDI0M2RjNmYyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRp
bmcuaApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQcm9ncmFtQmluZGluZ19oCisj
ZGVmaW5lIFByb2dyYW1CaW5kaW5nX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisKK2NsYXNzIFByb2dyYW1CaW5kaW5nQmFzZSB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgUHJvZ3JhbUJpbmRpbmdCYXNlKEdyYXBoaWNzQ29udGV4
dDNEKik7CisgICAgflByb2dyYW1CaW5kaW5nQmFzZSgpOworCisgICAgYm9vbCBpbml0KGNvbnN0
IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyKTsKKwor
ICAgIHVuc2lnbmVkIHByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW07IH0KKyAgICBi
b29sIGluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplZDsgfQorCitwcm90
ZWN0ZWQ6CisKKyAgICB1bnNpZ25lZCBsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNvbnN0IFN0
cmluZyYgc2hhZGVyU291cmNlKTsKKyAgICB1bnNpZ25lZCBjcmVhdGVTaGFkZXJQcm9ncmFtKGNv
bnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU291cmNlLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hh
ZGVyU291cmNlKTsKKworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgdW5z
aWduZWQgbV9wcm9ncmFtOworICAgIGJvb2wgbV9pbml0aWFsaXplZDsKK307CisKK3RlbXBsYXRl
PGNsYXNzIFZlcnRleFNoYWRlciwgY2xhc3MgRnJhZ21lbnRTaGFkZXI+CitjbGFzcyBQcm9ncmFt
QmluZGluZyA6IHB1YmxpYyBQcm9ncmFtQmluZGluZ0Jhc2UgeworcHVibGljOgorICAgIGV4cGxp
Y2l0IFByb2dyYW1CaW5kaW5nKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAgICA6
IFByb2dyYW1CaW5kaW5nQmFzZShjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFQcm9ncmFt
QmluZGluZ0Jhc2U6OmluaXQobV92ZXJ0ZXhTaGFkZXIuZ2V0U2hhZGVyU3RyaW5nKCksIG1fZnJh
Z21lbnRTaGFkZXIuZ2V0U2hhZGVyU3RyaW5nKCkpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAoIW1fdmVydGV4U2hhZGVyLmluaXQobV9jb250ZXh0LCBtX3Byb2dyYW0pKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIW1fZnJhZ21lbnRTaGFkZXIuaW5pdChtX2Nv
bnRleHQsIG1fcHJvZ3JhbSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1faW5pdGlh
bGl6ZWQgPSB0cnVlOworICAgIH0KKworICAgIGNvbnN0IFZlcnRleFNoYWRlciYgdmVydGV4U2hh
ZGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhTaGFkZXI7IH0KKyAgICBjb25zdCBGcmFnbWVu
dFNoYWRlciYgZnJhZ21lbnRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVy
OyB9CisKK3ByaXZhdGU6CisKKyAgICBWZXJ0ZXhTaGFkZXIgbV92ZXJ0ZXhTaGFkZXI7CisgICAg
RnJhZ21lbnRTaGFkZXIgbV9mcmFnbWVudFNoYWRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9S
ZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAppbmRleCBiM2NlOWQ3MjM3MTY4
Yzk1NDcwMTRkMmNhNTM0ZDMyZTk4YzBmMzBjLi4wYWQ2YTgyNGMwZmY5ZjlmOGMxNzI0YzY1NDlh
YWZlY2QyZGM2MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKQEAg
LTM1LDkxICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU3VyZmFjZUNo
cm9taXVtOjpTaGFyZWRWYWx1ZXM6OlNoYXJlZFZhbHVlcyhHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9zaGFkZXJQcm9ncmFtKDAp
Ci0gICAgLCBtX21hc2tTaGFkZXJQcm9ncmFtKDApCi0gICAgLCBtX3NoYWRlclNhbXBsZXJMb2Nh
dGlvbigtMSkKLSAgICAsIG1fc2hhZGVyTWF0cml4TG9jYXRpb24oLTEpCi0gICAgLCBtX3NoYWRl
ckFscGhhTG9jYXRpb24oLTEpCi0gICAgLCBtX21hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb24oLTEp
Ci0gICAgLCBtX21hc2tTaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uKC0xKQotICAgICwgbV9tYXNr
U2hhZGVyTWF0cml4TG9jYXRpb24oLTEpCi0gICAgLCBtX21hc2tTaGFkZXJBbHBoYUxvY2F0aW9u
KC0xKQotICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKLXsKLSAgICBjaGFyIHZlcnRleFNoYWRl
clN0cmluZ1tdID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247ICAgXG4iCi0g
ICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOyAgIFxuIgotICAgICAgICAidW5pZm9y
bSBtYXQ0IG1hdHJpeDsgICAgICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENv
b3JkOyAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgIFxuIgot
ICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgIiAgZ2xf
UG9zaXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOyBcbiIKLSAgICAgICAgIiAgdl90ZXhDb29y
ZCA9IGFfdGV4Q29vcmQ7ICAgXG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFxuIjsKLSAgICBjaGFyIGZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAg
ICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAg
ICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAieyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICB2ZWM0
IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCk7IFxuIgotICAgICAg
ICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9y
LnosIHRleENvbG9yLncpICogYWxwaGE7IFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLSAgICBjaGFyIGZyYWdtZW50
U2hhZGVyV2l0aE1hc2tTdHJpbmdbXSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIg
dl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlm
b3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAg
ICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBzX21hc2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGFscGhhOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIHZlYzQgdGV4Q29sb3Ig
PSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsgXG4iCi0gICAgICAgICIgIHZlYzQg
bWFza0NvbG9yID0gdGV4dHVyZTJEKHNfbWFzaywgdl90ZXhDb29yZCk7ICAgXG4iCi0gICAgICAg
ICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQodGV4Q29sb3IueCwgdGV4Q29sb3IueSwgdGV4Q29sb3Iu
eiwgdGV4Q29sb3IudykgKiBhbHBoYSAqIG1hc2tDb2xvci53OyBcbiIKLSAgICAgICAgIn0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSAg
ICBtX3NoYWRlclByb2dyYW0gPSBMYXllckNocm9taXVtOjpjcmVhdGVTaGFkZXJQcm9ncmFtKG1f
Y29udGV4dCwgdmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZyk7Ci0gICAg
bV9tYXNrU2hhZGVyUHJvZ3JhbSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZVNoYWRlclByb2dyYW0o
bV9jb250ZXh0LCB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyV2l0aE1hc2tTdHJp
bmcpOwotICAgIGlmICghbV9zaGFkZXJQcm9ncmFtIHx8ICFtX21hc2tTaGFkZXJQcm9ncmFtKSB7
Ci0gICAgICAgIExPR19FUlJPUigiUmVuZGVyU3VyZmFjZUNocm9taXVtOiBGYWlsZWQgdG8gY3Jl
YXRlIHNoYWRlciBwcm9ncmFtIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTEMo
bV9jb250ZXh0LCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIpKTsKLSAgICBHTEMobV9jb250
ZXh0LCBtX3NoYWRlck1hdHJpeExvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24obV9zaGFkZXJQcm9ncmFtLCAibWF0cml4IikpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fc2hh
ZGVyQWxwaGFMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fc2hhZGVy
UHJvZ3JhbSwgImFscGhhIikpOwotCi0gICAgR0xDKG1fY29udGV4dCwgbV9tYXNrU2hhZGVyU2Ft
cGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9tYXNrU2hhZGVy
UHJvZ3JhbSwgInNfdGV4dHVyZSIpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX21hc2tTaGFkZXJN
YXNrU2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9tYXNr
U2hhZGVyUHJvZ3JhbSwgInNfbWFzayIpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX21hc2tTaGFk
ZXJNYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fbWFza1No
YWRlclByb2dyYW0sICJtYXRyaXgiKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9tYXNrU2hhZGVy
QWxwaGFMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fbWFza1NoYWRl
clByb2dyYW0sICJhbHBoYSIpKTsKLQotICAgIGlmIChtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9
PSAtMSB8fCBtX3NoYWRlck1hdHJpeExvY2F0aW9uID09IC0xIHx8IG1fc2hhZGVyQWxwaGFMb2Nh
dGlvbiA9PSAtMQotICAgICAgICB8fCBtX21hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb24gPT0gLTEg
fHwgbV9tYXNrU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiA9PSAtMSB8fCBtX21hc2tTaGFkZXJN
YXRyaXhMb2NhdGlvbiA9PSAtMSB8fCBtX21hc2tTaGFkZXJBbHBoYUxvY2F0aW9uID09IC0xKSB7
Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxpemUgcmVuZGVyIHN1cmZhY2Ug
c2hhZGVycy4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+dXNlUHJvZ3JhbShtX3NoYWRlclByb2dyYW0pKTsKLSAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPnVuaWZvcm0xaShtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiwgMCkpOwot
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3JhbShtX21hc2tTaGFkZXJQcm9n
cmFtKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkobV9tYXNrU2hh
ZGVyU2FtcGxlckxvY2F0aW9uLCAwKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51
bmlmb3JtMWkobV9tYXNrU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgMSkpOwotICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3JhbSgwKSk7Ci0gICAgbV9pbml0aWFsaXplZCA9
IHRydWU7Ci19Ci0KLVJlbmRlclN1cmZhY2VDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjp+U2hhcmVk
VmFsdWVzKCkKLXsKLSAgICBpZiAobV9zaGFkZXJQcm9ncmFtKQotICAgICAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9zaGFkZXJQcm9ncmFtKSk7Ci0gICAgaWYg
KG1fbWFza1NoYWRlclByb2dyYW0pCi0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
ZGVsZXRlUHJvZ3JhbShtX21hc2tTaGFkZXJQcm9ncmFtKSk7Ci19Ci0KIFJlbmRlclN1cmZhY2VD
aHJvbWl1bTo6UmVuZGVyU3VyZmFjZUNocm9taXVtKExheWVyQ2hyb21pdW0qIG93bmluZ0xheWVy
KQogICAgIDogbV9vd25pbmdMYXllcihvd25pbmdMYXllcikKICAgICAsIG1fbWFza0xheWVyKDAp
CkBAIC0xODUsMzAgKzEwMCwzNCBAQCB2b2lkIFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6ZHJhd1N1
cmZhY2UoTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyLCBjb25zdCBUcmFuc2ZvcgogCiAgICAgaW50
IHNoYWRlck1hdHJpeExvY2F0aW9uID0gLTE7CiAgICAgaW50IHNoYWRlckFscGhhTG9jYXRpb24g
PSAtMTsKLSAgICBjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogc3Yg
PSBsYXllclJlbmRlcmVyKCktPnJlbmRlclN1cmZhY2VTaGFyZWRWYWx1ZXMoKTsKLSAgICBBU1NF
UlQoc3YgJiYgc3YtPmluaXRpYWxpemVkKCkpOworICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJv
bWl1bTo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+cmVuZGVyU3VyZmFjZVBy
b2dyYW0oKTsKKyAgICBjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06Ok1hc2tQcm9ncmFtKiBt
YXNrUHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7
CisgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CiAgICAgYm9v
bCB1c2VNYXNrID0gZmFsc2U7CiAgICAgaWYgKG1hc2tMYXllciAmJiBtYXNrTGF5ZXItPmRyYXdz
Q29udGVudCgpKSB7CiAgICAgICAgIG1hc2tMYXllci0+dXBkYXRlQ29udGVudHNJZkRpcnR5KCk7
CiAgICAgICAgIGlmICghbWFza0xheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIGNvbnRleHQzRC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgICAgICAgICBsYXllclJl
bmRlcmVyKCktPnVzZVNoYWRlcihzdi0+bWFza1NoYWRlclByb2dyYW0oKSk7CisgICAgICAgICAg
ICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihtYXNrUHJvZ3JhbS0+cHJvZ3JhbSgpKTsKICAg
ICAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRTApKTsKKyAgICAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRl
eHQzRC0+dW5pZm9ybTFpKG1hc2tQcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2Nh
dGlvbigpLCAwKSk7CiAgICAgICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+YmluZFRleHR1cmUo
KTsKICAgICAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsKKyAgICAgICAgICAgIEdMQyhjb250ZXh0M0Qs
IGNvbnRleHQzRC0+dW5pZm9ybTFpKG1hc2tQcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tT
YW1wbGVyTG9jYXRpb24oKSwgMSkpOwogICAgICAgICAgICAgbWFza0xheWVyLT5iaW5kQ29udGVu
dHNUZXh0dXJlKCk7CiAgICAgICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgICAgICAgICBzaGFk
ZXJNYXRyaXhMb2NhdGlvbiA9IHN2LT5tYXNrU2hhZGVyTWF0cml4TG9jYXRpb24oKTsKLSAgICAg
ICAgICAgIHNoYWRlckFscGhhTG9jYXRpb24gPSBzdi0+bWFza1NoYWRlckFscGhhTG9jYXRpb24o
KTsKKyAgICAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uID0gbWFza1Byb2dyYW0tPnZlcnRl
eFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCk7CisgICAgICAgICAgICBzaGFkZXJBbHBoYUxvY2F0
aW9uID0gbWFza1Byb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOwogICAg
ICAgICAgICAgdXNlTWFzayA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXVz
ZU1hc2spIHsKLSAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIoc3YtPnNoYWRlclBy
b2dyYW0oKSk7CisgICAgICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHByb2dyYW0tPnBy
b2dyYW0oKSk7CiAgICAgICAgIG1fY29udGVudHNUZXh0dXJlLT5iaW5kVGV4dHVyZSgpOwotICAg
ICAgICBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpOwot
ICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9uID0gc3YtPnNoYWRlckFscGhhTG9jYXRpb24oKTsK
KyAgICAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJh
Z21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOworICAgICAgICBzaGFkZXJNYXRy
aXhMb2NhdGlvbiA9IHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCk7Cisg
ICAgICAgIHNoYWRlckFscGhhTG9jYXRpb24gPSBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFs
cGhhTG9jYXRpb24oKTsKICAgICB9CiAgICAgCiAgICAgTGF5ZXJDaHJvbWl1bTo6ZHJhd1RleHR1
cmVkUXVhZChsYXllclJlbmRlcmVyKCktPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlcigpLT5wcm9q
ZWN0aW9uTWF0cml4KCksIGRyYXdUcmFuc2Zvcm0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJv
bWl1bS5oCmluZGV4IGIxZjZhNWNlYzgxZjBhY2QzM2M5ODhjODc3MzU0ZDdjYjI3Mjg3NzYuLjNl
ODlkNzk1ODZmMTE0ZGQ3MTczYzJmM2EzNDI0ZjBkOTY3ZTYxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRl
clN1cmZhY2VDaHJvbWl1bS5oCkBAIC0zMSw2ICszMSw4IEBACiAKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUHJvZ3JhbUJpbmRpbmcuaCIK
KyNpbmNsdWRlICJTaGFkZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KQEAgLTYwLDM5ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGRyYXdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFuc2Zvcm07IH0K
IAotICAgIC8vIFN0b3JlcyB2YWx1ZXMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4gaW5zdGFuY2Vz
IG9mIHRoaXMgY2xhc3MgdGhhdCBhcmUKLSAgICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUg
TGF5ZXJSZW5kZXJlckNocm9taXVtIChhbmQgaGVuY2UgdGhlIHNhbWUgR0wKLSAgICAvLyBjb250
ZXh0KS4KLSAgICBjbGFzcyBTaGFyZWRWYWx1ZXMgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhw
bGljaXQgU2hhcmVkVmFsdWVzKEdyYXBoaWNzQ29udGV4dDNEKik7Ci0gICAgICAgIH5TaGFyZWRW
YWx1ZXMoKTsKLQotICAgICAgICB1bnNpZ25lZCBzaGFkZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1
cm4gbV9zaGFkZXJQcm9ncmFtOyB9Ci0gICAgICAgIHVuc2lnbmVkIG1hc2tTaGFkZXJQcm9ncmFt
KCkgY29uc3QgeyByZXR1cm4gbV9tYXNrU2hhZGVyUHJvZ3JhbTsgfQotICAgICAgICBpbnQgc2hh
ZGVyU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkZXJTYW1wbGVyTG9jYXRp
b247IH0KLSAgICAgICAgaW50IHNoYWRlck1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zaGFkZXJNYXRyaXhMb2NhdGlvbjsgfQotICAgICAgICBpbnQgc2hhZGVyQWxwaGFMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVyQWxwaGFMb2NhdGlvbjsgfQotICAgICAgICBpbnQg
bWFza1NoYWRlclNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1NoYWRlclNh
bXBsZXJMb2NhdGlvbjsgfQotICAgICAgICBpbnQgbWFza1NoYWRlck1hc2tTYW1wbGVyTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX21hc2tTaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uOyB9Ci0g
ICAgICAgIGludCBtYXNrU2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21h
c2tTaGFkZXJNYXRyaXhMb2NhdGlvbjsgfQotICAgICAgICBpbnQgbWFza1NoYWRlckFscGhhTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hc2tTaGFkZXJBbHBoYUxvY2F0aW9uOyB9Ci0gICAg
ICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwotCi0g
ICAgICAgIHVuc2lnbmVkIG1fc2hhZGVyUHJvZ3JhbTsKLSAgICAgICAgdW5zaWduZWQgbV9tYXNr
U2hhZGVyUHJvZ3JhbTsKLSAgICAgICAgaW50IG1fc2hhZGVyU2FtcGxlckxvY2F0aW9uOwotICAg
ICAgICBpbnQgbV9zaGFkZXJNYXRyaXhMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fc2hhZGVyQWxw
aGFMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fbWFza1NoYWRlclNhbXBsZXJMb2NhdGlvbjsKLSAg
ICAgICAgaW50IG1fbWFza1NoYWRlck1hc2tTYW1wbGVyTG9jYXRpb247Ci0gICAgICAgIGludCBt
X21hc2tTaGFkZXJNYXRyaXhMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fbWFza1NoYWRlckFscGhh
TG9jYXRpb247Ci0gICAgICAgIGJvb2wgbV9pbml0aWFsaXplZDsKLSAgICB9OworICAgIHR5cGVk
ZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFU
ZXhBbHBoYT4gUHJvZ3JhbTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRl
clBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrPiBNYXNrUHJvZ3JhbTsKIAog
cHJpdmF0ZToKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRl
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NoYWRlckNocm9taXVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWIzNDYyZTU1ZTFjNDdhMDg0ZjNmM2M3
ODYzZWZkZWI5MzY5NWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsMzE3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorCisjaW5jbHVkZSAiU2hhZGVyQ2hyb21pdW0uaCIKKworI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisKKyNkZWZpbmUg
U0hBREVSMChTcmMpICNTcmMKKyNkZWZpbmUgU0hBREVSKFNyYykgU0hBREVSMChTcmMpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworVmVydGV4U2hhZGVyUG9zVGV4OjpWZXJ0ZXhTaGFkZXJQb3NU
ZXgoKQorICAgIDogbV9tYXRyaXhMb2NhdGlvbigtMSkKK3sKK30KKworYm9vbCBWZXJ0ZXhTaGFk
ZXJQb3NUZXg6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dy
YW0pCit7CisgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAibWF0cml4Iik7CisgICAgcmV0dXJuIG1fbWF0cml4TG9jYXRpb24gIT0gLTE7
Cit9CisKK1N0cmluZyBWZXJ0ZXhTaGFkZXJQb3NUZXg6OmdldFNoYWRlclN0cmluZygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlv
bjsKKyAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBt
YXQ0IG1hdHJpeDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHZv
aWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gbWF0cml4ICog
YV9wb3NpdGlvbjsKKyAgICAgICAgICAgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOworICAgICAg
ICB9CisgICAgKTsKK30KKworVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaDo6VmVydGV4U2hh
ZGVyUG9zVGV4WVVWU3RyZXRjaCgpCisgICAgOiBtX21hdHJpeExvY2F0aW9uKC0xKQorICAgICwg
bV95V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKC0xKQorICAgICwgbV91dldpZHRoU2NhbGVGYWN0
b3JMb2NhdGlvbigtMSkKK3sKK30KKworYm9vbCBWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNo
Ojppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQorewor
ICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bSwgIm1hdHJpeCIpOworICAgIG1feVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiA9IGNvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAieV93aWR0aFNjYWxlRmFjdG9yIik7CisgICAg
bV91dldpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAidXZfd2lkdGhTY2FsZUZhY3RvciIpOworICAgIHJldHVybiBtX21hdHJpeExv
Y2F0aW9uICE9IC0xICYmIG1feVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiAhPSAtMSAmJiBtX3V2
V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uICE9IC0xOworfQorCitTdHJpbmcgVmVydGV4U2hhZGVy
UG9zVGV4WVVWU3RyZXRjaDo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
U0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgYXR0cmli
dXRlIHZlYzQgYV9wb3NpdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsK
KyAgICAgICAgdW5pZm9ybSBtYXQ0IG1hdHJpeDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHlfdGV4
Q29vcmQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB1dl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9y
bSBmbG9hdCB5X3dpZHRoU2NhbGVGYWN0b3I7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgdXZfd2lk
dGhTY2FsZUZhY3RvcjsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOworICAgICAgICAgICAgeV90ZXhD
b29yZCA9IHZlYzIoeV93aWR0aFNjYWxlRmFjdG9yICogYV90ZXhDb29yZC54LCBhX3RleENvb3Jk
LnkpOworICAgICAgICAgICAgdXZfdGV4Q29vcmQgPSB2ZWMyKHV2X3dpZHRoU2NhbGVGYWN0b3Ig
KiBhX3RleENvb3JkLngsIGFfdGV4Q29vcmQueSk7CisgICAgICAgIH0KKyAgICApOworfQorCitW
ZXJ0ZXhTaGFkZXJQb3M6OlZlcnRleFNoYWRlclBvcygpCisgICAgOiBtX21hdHJpeExvY2F0aW9u
KC0xKQoreworfQorCitib29sIFZlcnRleFNoYWRlclBvczo6aW5pdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX21hdHJpeExvY2F0aW9uID0g
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKKyAgICByZXR1
cm4gbV9tYXRyaXhMb2NhdGlvbiAhPSAtMTsKK30KKworU3RyaW5nIFZlcnRleFNoYWRlclBvczo6
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBh
dHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICB1bmlmb3JtIG1hdDQgbWF0cml4Owor
ICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9
IG1hdHJpeCAqIGFfcG9zaXRpb247CisgICAgICAgIH0KKyAgICApOworfQorCitWZXJ0ZXhTaGFk
ZXJQb3NUZXhUcmFuc2Zvcm06OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSgpCisgICAgOiBt
X21hdHJpeExvY2F0aW9uKC0xKQorICAgICwgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbigtMSkKK3sK
K30KKworYm9vbCBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06OmluaXQoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit7CisgICAgbV9tYXRyaXhMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7CisgICAg
bV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAidGV4VHJhbnNmb3JtIik7CisgICAgcmV0dXJuIG1fbWF0cml4TG9jYXRpb24gIT0gLTEg
JiYgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMTsKK30KKworU3RyaW5nIFZlcnRleFNoYWRl
clBvc1RleFRyYW5zZm9ybTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
U0hBREVSKAorICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICBhdHRy
aWJ1dGUgdmVjMiBhX3RleENvb3JkOworICAgICAgICB1bmlmb3JtIG1hdDQgbWF0cml4OworICAg
ICAgICB1bmlmb3JtIHZlYzQgdGV4VHJhbnNmb3JtOworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90
ZXhDb29yZDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xf
UG9zaXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOworICAgICAgICAgICAgdl90ZXhDb29yZCA9
IGFfdGV4Q29vcmQgKiB0ZXhUcmFuc2Zvcm0uencgKyB0ZXhUcmFuc2Zvcm0ueHk7CisgICAgICAg
IH0KKyAgICApOworfQorCitGcmFnbWVudFRleEFscGhhQmluZGluZzo6RnJhZ21lbnRUZXhBbHBo
YUJpbmRpbmcoKQorICAgIDogbV9zYW1wbGVyTG9jYXRpb24oLTEpCisgICAgLCBtX2FscGhhTG9j
YXRpb24oLTEpCit7Cit9CisKK2Jvb2wgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmc6OmluaXQoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit7CisgICAgbV9zYW1w
bGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4
dHVyZSIpOworICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAiYWxwaGEiKTsKKworICAgIHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbiAhPSAt
MSAmJiBtX2FscGhhTG9jYXRpb24gIT0gLTE7Cit9CisKK1N0cmluZyBGcmFnbWVudFNoYWRlclJH
QkFUZXhGbGlwQWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNI
QURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcg
dmVjMiB2X3RleENvb3JkOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7Cisg
ICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2ZWMy
KHZfdGV4Q29vcmQueCwgMS4wIC0gdl90ZXhDb29yZC55KSk7CisgICAgICAgICAgICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9y
LncpICogYWxwaGE7CisgICAgICAgIH0KKyAgICApOworfQorCitTdHJpbmcgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4QWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNI
QURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcg
dmVjMiB2X3RleENvb3JkOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7Cisg
ICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3Rl
eENvb3JkKTsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleENvbG9yICogYWxwaGE7Cisg
ICAgICAgIH0KKyAgICApOworfQorCitTdHJpbmcgRnJhZ21lbnRTaGFkZXJCR1JBVGV4QWxwaGE6
OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3Jk
OworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0g
ZmxvYXQgYWxwaGE7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsKKyAgICAg
ICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodGV4Q29sb3IueiwgdGV4Q29sb3IueSwgdGV4Q29s
b3IueCwgdGV4Q29sb3IudykgKiBhbHBoYTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK0ZyYWdt
ZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNr
KCkKKyAgICA6IG1fc2FtcGxlckxvY2F0aW9uKC0xKQorICAgICwgbV9tYXNrU2FtcGxlckxvY2F0
aW9uKC0xKQorICAgICwgbV9hbHBoYUxvY2F0aW9uKC0xKQoreworfQorCitib29sIEZyYWdtZW50
U2hhZGVyUkdCQVRleEFscGhhTWFzazo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
dW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CisgICAgbV9tYXNrU2FtcGxl
ckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX21hc2si
KTsKKyAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgImFscGhhIik7CisKKyAgICByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYg
bV9tYXNrU2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAtMTsKK30K
KworU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6Z2V0U2hhZGVyU3RyaW5n
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHVuaWZv
cm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc19tYXNr
OworICAgICAgICB1bmlmb3JtIGZsb2F0IGFscGhhOworICAgICAgICB2b2lkIG1haW4oKQorICAg
ICAgICB7CisgICAgICAgICAgICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwg
dl90ZXhDb29yZCk7CisgICAgICAgICAgICB2ZWM0IG1hc2tDb2xvciA9IHRleHR1cmUyRChzX21h
c2ssIHZfdGV4Q29vcmQpOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xv
ci54LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFscGhhICogbWFza0Nv
bG9yLnc7CisgICAgICAgIH0KKyAgICApOworfQorCitGcmFnbWVudFNoYWRlcllVVlZpZGVvOjpG
cmFnbWVudFNoYWRlcllVVlZpZGVvKCkKKyAgICA6IG1feVRleHR1cmVMb2NhdGlvbigtMSkKKyAg
ICAsIG1fdVRleHR1cmVMb2NhdGlvbigtMSkKKyAgICAsIG1fdlRleHR1cmVMb2NhdGlvbigtMSkK
KyAgICAsIG1fYWxwaGFMb2NhdGlvbigtMSkKKyAgICAsIG1fY2NNYXRyaXhMb2NhdGlvbigtMSkK
KyAgICAsIG1fc2lnbkFkakxvY2F0aW9uKC0xKQoreworfQorCitib29sIEZyYWdtZW50U2hhZGVy
WVVWVmlkZW86OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dy
YW0pCit7CisgICAgbV95VGV4dHVyZUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJ5X3RleHR1cmUiKTsKKyAgICBtX3VUZXh0dXJlTG9jYXRpb24gPSBjb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfdGV4dHVyZSIpOworICAgIG1fdlRl
eHR1cmVMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidl90
ZXh0dXJlIik7CisgICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJhbHBoYSIpOworICAgIG1fY2NNYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiY2NfbWF0cml4Iik7CisgICAgbV9zaWduQWRq
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFkaiIpOwor
CisgICAgcmV0dXJuIG1feVRleHR1cmVMb2NhdGlvbiAhPSAtMSAmJiBtX3VUZXh0dXJlTG9jYXRp
b24gIT0gLTEgJiYgbV92VGV4dHVyZUxvY2F0aW9uICE9IC0xCisgICAgICAgICAgICYmIG1fYWxw
aGFMb2NhdGlvbiAhPSAtMSAmJiBtX2NjTWF0cml4TG9jYXRpb24gIT0gLTEgJiYgbV9zaWduQWRq
TG9jYXRpb24gIT0gLTE7Cit9CisKK1N0cmluZyBGcmFnbWVudFNoYWRlcllVVlZpZGVvOjpnZXRT
aGFkZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisgICAg
ICAgIHZhcnlpbmcgdmVjMiB5X3RleENvb3JkOworICAgICAgICB2YXJ5aW5nIHZlYzIgdXZfdGV4
Q29vcmQ7CisgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHlfdGV4dHVyZTsKKyAgICAgICAgdW5p
Zm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB2X3Rl
eHR1cmU7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7CisgICAgICAgIHVuaWZvcm0gZmxv
YXQgYWRqOworICAgICAgICB1bmlmb3JtIG1hdDMgY2NfbWF0cml4OworICAgICAgICB2b2lkIG1h
aW4oKQorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdCB5ID0gdGV4dHVyZTJEKHlfdGV4dHVy
ZSwgeV90ZXhDb29yZCkueDsKKyAgICAgICAgICAgIGZsb2F0IHUgPSB0ZXh0dXJlMkQodV90ZXh0
dXJlLCB1dl90ZXhDb29yZCkueCAtIGFkajsKKyAgICAgICAgICAgIGZsb2F0IHYgPSB0ZXh0dXJl
MkQodl90ZXh0dXJlLCB1dl90ZXhDb29yZCkueCAtIGFkajsKKyAgICAgICAgICAgIHZlYzMgcmdi
ID0gY2NfbWF0cml4ICogdmVjMyh5LCB1LCB2KTsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQocmdiLCBmbG9hdCgxKSkgKiBhbHBoYTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK0Zy
YWdtZW50U2hhZGVyQ29sb3I6OkZyYWdtZW50U2hhZGVyQ29sb3IoKQorICAgIDogbV9jb2xvckxv
Y2F0aW9uKC0xKQoreworfQorCitib29sIEZyYWdtZW50U2hhZGVyQ29sb3I6OmluaXQoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit7CisgICAgbV9jb2xvckxv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJjb2xvciIpOwor
ICAgIHJldHVybiBtX2NvbG9yTG9jYXRpb24gIT0gLTE7Cit9CisKK1N0cmluZyBGcmFnbWVudFNo
YWRlckNvbG9yOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTSEFERVIo
CisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB1bmlmb3JtIHZlYzQg
Y29sb3I7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoY29sb3IueHl6ICogY29sb3IudywgY29sb3Iudyk7CisgICAgICAgIH0K
KyAgICApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGMz
MzkyYWVmNGYzMWI0YzY0ZDNlZjFkODU5Y2E5MTIwN2ZmMGZlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0u
aApAQCAtMCwwICsxLDE4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhZGVyQ2hyb21pdW1faAorI2Rl
ZmluZSBTaGFkZXJDaHJvbWl1bV9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworCitjbGFzcyBWZXJ0ZXhTaGFkZXJQb3NUZXggewor
cHVibGljOgorICAgIFZlcnRleFNoYWRlclBvc1RleCgpOworCisgICAgYm9vbCBpbml0KEdyYXBo
aWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0
cmluZygpIGNvbnN0OworCisgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9tYXRyaXhMb2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBtX21hdHJpeExvY2F0aW9u
OworfTsKKworY2xhc3MgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCB7CitwdWJsaWM6Cisg
ICAgVmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCgpOworCisgICAgYm9vbCBpbml0KEdyYXBo
aWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0
cmluZygpIGNvbnN0OworCisgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9tYXRyaXhMb2NhdGlvbjsgfQorICAgIGludCB5V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV95V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uOyB9CisgICAgaW50IHV2
V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91dldpZHRoU2NhbGVG
YWN0b3JMb2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBtX21hdHJpeExvY2F0aW9uOwor
ICAgIGludCBtX3lXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb247CisgICAgaW50IG1fdXZXaWR0aFNj
YWxlRmFjdG9yTG9jYXRpb247Cit9OworCitjbGFzcyBWZXJ0ZXhTaGFkZXJQb3MgeworcHVibGlj
OgorICAgIFZlcnRleFNoYWRlclBvcygpOworCisgICAgYm9vbCBpbml0KEdyYXBoaWNzQ29udGV4
dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNv
bnN0OworCisgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhM
b2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBtX21hdHJpeExvY2F0aW9uOworfTsKKwor
Y2xhc3MgVmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtIHsKK3B1YmxpYzoKKyAgICBWZXJ0ZXhT
aGFkZXJQb3NUZXhUcmFuc2Zvcm0oKTsKKworICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQz
RCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25z
dDsKKworICAgIGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9j
YXRpb247IH0KKyAgICBpbnQgdGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3RleFRyYW5zZm9ybUxvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fbWF0cml4TG9j
YXRpb247CisgICAgaW50IG1fdGV4VHJhbnNmb3JtTG9jYXRpb247Cit9OworCitjbGFzcyBGcmFn
bWVudFRleEFscGhhQmluZGluZyB7CitwdWJsaWM6CisgICAgRnJhZ21lbnRUZXhBbHBoYUJpbmRp
bmcoKTsKKworICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dy
YW0pOworICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYUxvY2F0
aW9uOyB9CisgICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxl
ckxvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOworICAg
IGludCBtX2FscGhhTG9jYXRpb247Cit9OworCitjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhG
bGlwQWxwaGEgOiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgeworcHVibGljOgorICAg
IFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKK307CisKK2NsYXNzIEZyYWdtZW50U2hh
ZGVyUkdCQVRleEFscGhhIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKK3B1Ymxp
YzoKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7Cit9OworCitjbGFzcyBGcmFn
bWVudFNoYWRlckJHUkFUZXhBbHBoYSA6IHB1YmxpYyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7
CitwdWJsaWM6CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworfTsKKworY2xh
c3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrIHsKK3B1YmxpYzoKKyAgICBGcmFnbWVu
dFNoYWRlclJHQkFUZXhBbHBoYU1hc2soKTsKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkg
Y29uc3Q7CisKKyAgICBib29sIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9n
cmFtKTsKKyAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2Nh
dGlvbjsgfQorICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBs
ZXJMb2NhdGlvbjsgfQorICAgIGludCBtYXNrU2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9tYXNrU2FtcGxlckxvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fc2FtcGxl
ckxvY2F0aW9uOworICAgIGludCBtX21hc2tTYW1wbGVyTG9jYXRpb247CisgICAgaW50IG1fYWxw
aGFMb2NhdGlvbjsKK307CisKKyNpZiBQTEFURk9STShTS0lBKSAmJiBTS19CMzJfU0hJRlQKK3R5
cGVkZWYgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGEgRnJhZ21lbnRTaGFkZXJUZXhBbHBoYTsK
KyNlbHNlCit0eXBlZGVmIEZyYWdtZW50U2hhZGVyQkdSQVRleEFscGhhIEZyYWdtZW50U2hhZGVy
VGV4QWxwaGE7CisjZW5kaWYKKworY2xhc3MgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbyB7CitwdWJs
aWM6CisgICAgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbygpOworICAgIFN0cmluZyBnZXRTaGFkZXJT
dHJpbmcoKSBjb25zdDsKKworICAgIGJvb2wgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2ln
bmVkIHByb2dyYW0pOworCisgICAgaW50IHlUZXh0dXJlTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3lUZXh0dXJlTG9jYXRpb247IH0KKyAgICBpbnQgdVRleHR1cmVMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdVRleHR1cmVMb2NhdGlvbjsgfQorICAgIGludCB2VGV4dHVyZUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV92VGV4dHVyZUxvY2F0aW9uOyB9CisgICAgaW50IGFscGhhTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KKyAgICBpbnQgY2NNYXRy
aXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2NNYXRyaXhMb2NhdGlvbjsgfQorICAgIGlu
dCBzaWduQWRqTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NpZ25BZGpMb2NhdGlvbjsgfQor
Citwcml2YXRlOgorICAgIGludCBtX3lUZXh0dXJlTG9jYXRpb247CisgICAgaW50IG1fdVRleHR1
cmVMb2NhdGlvbjsKKyAgICBpbnQgbV92VGV4dHVyZUxvY2F0aW9uOworICAgIGludCBtX2FscGhh
TG9jYXRpb247CisgICAgaW50IG1fY2NNYXRyaXhMb2NhdGlvbjsKKyAgICBpbnQgbV9zaWduQWRq
TG9jYXRpb247Cit9OworCitjbGFzcyBGcmFnbWVudFNoYWRlckNvbG9yIHsKK3B1YmxpYzoKKyAg
ICBGcmFnbWVudFNoYWRlckNvbG9yKCk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNv
bnN0OworCisgICAgYm9vbCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3Jh
bSk7CisgICAgaW50IGNvbG9yTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbG9yTG9jYXRp
b247IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9jb2xvckxvY2F0aW9uOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGQ5OWNhZDBi
YTIwNTdlNzZhZjQ0NmY3OGRiMTZhZWRjOTRiOTY4NTIuLjQ5ZmFhNWY2OTQxMTM0ZDhhMjA1ZDI4
MDQzMzNlODI5YzZjZTk3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApAQCAt
NTEsMTMyICs1MSw2IEBAIGNvbnN0IGZsb2F0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6eXV2MlJHQls5
XSA9IHsKICAgICAxLjQwM2YsIC0uNzE0ZiwgMC5mLAogfTsKIAotVmlkZW9MYXllckNocm9taXVt
OjpTaGFyZWRWYWx1ZXM6OlNoYXJlZFZhbHVlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkK
LSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV95dXZTaGFkZXJQcm9ncmFtKDApCi0g
ICAgLCBtX3JnYmFTaGFkZXJQcm9ncmFtKDApCi0gICAgLCBtX3l1dlNoYWRlck1hdHJpeExvY2F0
aW9uKDApCi0gICAgLCBtX3lXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oMCkKLSAgICAsIG1fdXZX
aWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oMCkKLSAgICAsIG1fcmdiYVNoYWRlck1hdHJpeExvY2F0
aW9uKDApCi0gICAgLCBtX3JnYmFXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oMCkKLSAgICAsIG1f
Y2NNYXRyaXhMb2NhdGlvbigwKQotICAgICwgbV9zaWduQWRqTG9jYXRpb24oMCkKLSAgICAsIG1f
eVRleHR1cmVMb2NhdGlvbigwKQotICAgICwgbV91VGV4dHVyZUxvY2F0aW9uKDApCi0gICAgLCBt
X3ZUZXh0dXJlTG9jYXRpb24oMCkKLSAgICAsIG1fcmdiYVRleHR1cmVMb2NhdGlvbigwKQotICAg
ICwgbV95dXZBbHBoYUxvY2F0aW9uKDApCi0gICAgLCBtX3JnYmFBbHBoYUxvY2F0aW9uKDApCi0g
ICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQotewotICAgIC8vIEZyYW1lIHRleHR1cmVzIGFyZSBh
bGxvY2F0ZWQgYmFzZWQgb24gc3RyaWRlIHdpZHRoLCBub3QgdmlzaWJsZSBmcmFtZQotICAgIC8v
IHdpZHRoLCBzdWNoIHRoYXQgdGhlcmUgaXMgYSBndWFyYW50ZWUgdGhhdCB0aGUgZnJhbWUgcm93
cyBsaW5lIHVwCi0gICAgLy8gcHJvcGVybHkgYW5kIGFyZSBub3Qgc2hpZnRlZCBieSAoc3RyaWRl
IC0gd2lkdGgpIHBpeGVscy4gVG8gaGlkZSB0aGUKLSAgICAvLyAicGFkZGluZyIgcGl4ZWxzIGJl
dHdlZW4gdGhlIGVkZ2Ugb2YgdGhlIHZpc2libGUgZnJhbWUgd2lkdGggYW5kIHRoZSBlbmQKLSAg
ICAvLyBvZiB0aGUgc3RyaWRlLCB3ZSBnaXZlIHRoZSBzaGFkZXIgYSB3aWR0aFNjYWxlRmFjdG9y
ICg8PTEuMCkgb2YgaG93IG11Y2gKLSAgICAvLyBvZiB0aGUgd2lkdGggb2YgdGhlIHRleHR1cmUg
c2hvdWxkIGJlIHNob3duIHdoZW4gZHJhd2luZyB0aGUgdGV4dHVyZSBvbnRvCi0gICAgLy8gdGhl
IHZlcnRpY2VzLgotICAgIGNoYXIgdmVydGV4U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICBcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFf
cG9zaXRpb247ICAgXG4iCi0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOyAgIFxu
IgotICAgICAgICAidW5pZm9ybSBtYXQ0IG1hdHJpeDsgICAgICAgICBcbiIKLSAgICAgICAgInZh
cnlpbmcgdmVjMiB5X3RleENvb3JkOyAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdXZf
dGV4Q29vcmQ7ICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB5X3dpZHRoU2NhbGVGYWN0
b3I7IFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1dl93aWR0aFNjYWxlRmFjdG9yOyBcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IG1h
dHJpeCAqIGFfcG9zaXRpb247IFxuIgotICAgICAgICAiICB5X3RleENvb3JkID0gdmVjMih5X3dp
ZHRoU2NhbGVGYWN0b3IgKiBhX3RleENvb3JkLngsIGFfdGV4Q29vcmQueSk7IFxuIgotICAgICAg
ICAiICB1dl90ZXhDb29yZCA9IHZlYzIodXZfd2lkdGhTY2FsZUZhY3RvciAqIGFfdGV4Q29vcmQu
eCwgYV90ZXhDb29yZC55KTsgXG4iCi0gICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFxuIjsKLQotICAgIGNoYXIgeXV2RnJhZ21lbnRTaGFkZXJTdHJpbmdbXSA9Ci0gICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu
IgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgaW50OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB5X3RleENvb3JkOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdXZfdGV4Q29vcmQ7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVy
MkQgeV90ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZv
cm0gc2FtcGxlcjJEIHVfdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAg
ICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB2X3RleHR1cmU7ICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgYWRqOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDMgY2NfbWF0cml4
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidm9pZCBtYWluKCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0g
ICAgICAgICIgIGZsb2F0IHkgPSB0ZXh0dXJlMkQoeV90ZXh0dXJlLCB5X3RleENvb3JkKS54OyAg
ICAgIFxuIgotICAgICAgICAiICBmbG9hdCB1ID0gdGV4dHVyZTJEKHVfdGV4dHVyZSwgdXZfdGV4
Q29vcmQpLnggLSBhZGo7IFxuIgotICAgICAgICAiICBmbG9hdCB2ID0gdGV4dHVyZTJEKHZfdGV4
dHVyZSwgdXZfdGV4Q29vcmQpLnggLSBhZGo7IFxuIgotICAgICAgICAiICB2ZWMzIHJnYiA9IGNj
X21hdHJpeCAqIHZlYzMoeSwgdSwgdik7ICAgICAgICAgICAgICBcbiIKLSAgICAgICAgIiAgZ2xf
RnJhZ0NvbG9yID0gdmVjNChyZ2IsIGZsb2F0KDEpKSAqIGFscGhhOyAgICAgICAgXG4iCi0gICAg
ICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIjsKLQotICAgIGNoYXIgcmdiYUZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIK
LSAgICAgICAgInZhcnlpbmcgdmVjMiB5X3RleENvb3JkOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCByZ2JhX3RleHR1cmU7ICAgICAg
ICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgInZvaWQgbWFpbigpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJ7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAg
ICAiICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHJnYmFfdGV4dHVyZSwgdmVjMih5X3RleENv
b3JkLngsIGZsb2F0KDEpIC0geV90ZXhDb29yZC55KSk7IFxuIgotICAgICAgICAiICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9y
LncpICogYWxwaGE7IFxuIgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0KLSAgICBtX3JnYmFTaGFkZXJQcm9ncmFtID0g
Y3JlYXRlU2hhZGVyUHJvZ3JhbShtX2NvbnRleHQsIHZlcnRleFNoYWRlclN0cmluZywgcmdiYUZy
YWdtZW50U2hhZGVyU3RyaW5nKTsKLSAgICBpZiAoIW1fcmdiYVNoYWRlclByb2dyYW0pIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJWaWRlb0xheWVyQ2hyb21pdW06IEZhaWxlZCB0byBjcmVhdGUgcmdi
YSBzaGFkZXIgcHJvZ3JhbSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV95dXZT
aGFkZXJQcm9ncmFtID0gY3JlYXRlU2hhZGVyUHJvZ3JhbShtX2NvbnRleHQsIHZlcnRleFNoYWRl
clN0cmluZywgeXV2RnJhZ21lbnRTaGFkZXJTdHJpbmcpOwotICAgIGlmICghbV95dXZTaGFkZXJQ
cm9ncmFtKSB7Ci0gICAgICAgIExPR19FUlJPUigiVmlkZW9MYXllckNocm9taXVtOiBGYWlsZWQg
dG8gY3JlYXRlIHl1diBzaGFkZXIgcHJvZ3JhbSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgbV95dXZTaGFkZXJNYXRyaXhMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1feXV2U2hhZGVyUHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIG1feVdpZHRoU2NhbGVG
YWN0b3JMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1feXV2U2hhZGVy
UHJvZ3JhbSwgInlfd2lkdGhTY2FsZUZhY3RvciIpOwotICAgIG1fdXZXaWR0aFNjYWxlRmFjdG9y
TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1dlNoYWRlclByb2dy
YW0sICJ1dl93aWR0aFNjYWxlRmFjdG9yIik7Ci0gICAgbV95VGV4dHVyZUxvY2F0aW9uID0gbV9j
b250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZTaGFkZXJQcm9ncmFtLCAieV90ZXh0dXJl
Iik7Ci0gICAgbV91VGV4dHVyZUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24obV95dXZTaGFkZXJQcm9ncmFtLCAidV90ZXh0dXJlIik7Ci0gICAgbV92VGV4dHVyZUxvY2F0
aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZTaGFkZXJQcm9ncmFtLCAi
dl90ZXh0dXJlIik7Ci0gICAgbV9jY01hdHJpeExvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24obV95dXZTaGFkZXJQcm9ncmFtLCAiY2NfbWF0cml4Iik7Ci0gICAgbV9zaWdu
QWRqTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1dlNoYWRlclBy
b2dyYW0sICJhZGoiKTsKLSAgICBtX3l1dkFscGhhTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihtX3l1dlNoYWRlclByb2dyYW0sICJhbHBoYSIpOwotCi0gICAgQVNTRVJU
KG1feXV2U2hhZGVyTWF0cml4TG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3lXaWR0aFNj
YWxlRmFjdG9yTG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3V2V2lkdGhTY2FsZUZhY3Rv
ckxvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV95VGV4dHVyZUxvY2F0aW9uICE9IC0xKTsK
LSAgICBBU1NFUlQobV91VGV4dHVyZUxvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV92VGV4
dHVyZUxvY2F0aW9uICE9IC0xKTsKLSAgICBBU1NFUlQobV9jY01hdHJpeExvY2F0aW9uICE9IC0x
KTsKLSAgICBBU1NFUlQobV9zaWduQWRqTG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VSVChtX3l1
dkFscGhhTG9jYXRpb24gIT0gLTEpOwotCi0gICAgbV9yZ2JhU2hhZGVyTWF0cml4TG9jYXRpb24g
PSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3JnYmFTaGFkZXJQcm9ncmFtLCAibWF0
cml4Iik7Ci0gICAgbV9yZ2JhVGV4dHVyZUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24obV9yZ2JhU2hhZGVyUHJvZ3JhbSwgInJnYmFfdGV4dHVyZSIpOwotICAgIG1fcmdi
YVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KG1fcmdiYVNoYWRlclByb2dyYW0sICJ5X3dpZHRoU2NhbGVGYWN0b3IiKTsKLSAgICBtX3JnYmFB
bHBoYUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9yZ2JhU2hhZGVy
UHJvZ3JhbSwgImFscGhhIik7Ci0KLSAgICBBU1NFUlQobV9yZ2JhU2hhZGVyTWF0cml4TG9jYXRp
b24gIT0gLTEpOwotICAgIEFTU0VSVChtX3JnYmFUZXh0dXJlTG9jYXRpb24gIT0gLTEpOwotICAg
IEFTU0VSVChtX3JnYmFXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24gIT0gLTEpOwotICAgIEFTU0VS
VChtX3JnYmFBbHBoYUxvY2F0aW9uICE9IC0xKTsKLQotICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVl
OwotfQotCi1WaWRlb0xheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6flNoYXJlZFZhbHVlcygp
Ci17Ci0gICAgaWYgKG1feXV2U2hhZGVyUHJvZ3JhbSkKLSAgICAgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1feXV2U2hhZGVyUHJvZ3JhbSkpOwotICAgIGlmICht
X3JnYmFTaGFkZXJQcm9ncmFtKQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRl
bGV0ZVByb2dyYW0obV9yZ2JhU2hhZGVyUHJvZ3JhbSkpOwotfQotCiBQYXNzUmVmUHRyPFZpZGVv
TGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNo
cm9taXVtKiBvd25lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogewpAQCAtMzU1
LDE2ICsyMjksMTggQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmRyYXcoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKLSAgICBjb25zdCBWaWRlb0xh
eWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyogc3YgPSBsYXllclJlbmRlcmVyKCktPnZpZGVvTGF5
ZXJTaGFyZWRWYWx1ZXMoKTsKLSAgICBBU1NFUlQoc3YgJiYgc3YtPmluaXRpYWxpemVkKCkpOwor
ICAgIGNvbnN0IFJHQkFQcm9ncmFtKiByZ2JhUHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+dmlk
ZW9MYXllclJHQkFQcm9ncmFtKCk7CisgICAgQVNTRVJUKHJnYmFQcm9ncmFtICYmIHJnYmFQcm9n
cmFtLT5pbml0aWFsaXplZCgpKTsKKyAgICBjb25zdCBZVVZQcm9ncmFtKiB5dXZQcm9ncmFtID0g
bGF5ZXJSZW5kZXJlcigpLT52aWRlb0xheWVyWVVWUHJvZ3JhbSgpOworICAgIEFTU0VSVCh5dXZQ
cm9ncmFtICYmIHl1dlByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogCiAgICAgc3dpdGNoIChtX2Zy
YW1lRm9ybWF0KSB7CiAgICAgY2FzZSBWaWRlb0ZyYW1lQ2hyb21pdW06OllWMTI6CiAgICAgY2Fz
ZSBWaWRlb0ZyYW1lQ2hyb21pdW06OllWMTY6Ci0gICAgICAgIGRyYXdZVVYoc3YpOworICAgICAg
ICBkcmF3WVVWKHl1dlByb2dyYW0pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZpZGVvRnJh
bWVDaHJvbWl1bTo6UkdCQToKLSAgICAgICAgZHJhd1JHQkEoc3YpOworICAgICAgICBkcmF3UkdC
QShyZ2JhUHJvZ3JhbSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgb3RoZXIgcGF0aHMuCkBAIC0zODQsNyArMjYwLDcgQEAgdm9pZCBW
aWRlb0xheWVyQ2hyb21pdW06OnJlbGVhc2VDdXJyZW50RnJhbWUoKQogICAgIHJlc2V0RnJhbWVQ
YXJhbWV0ZXJzKCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3WVVWKGNvbnN0
IFNoYXJlZFZhbHVlcyogc3YpCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhd1lVVihjb25z
dCBWaWRlb0xheWVyQ2hyb21pdW06OllVVlByb2dyYW0qIHByb2dyYW0pCiB7CiAgICAgR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwogICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
MSkpOwpAQCAtMzk0LDcgKzI3MCw3IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3WVVW
KGNvbnN0IFNoYXJlZFZhbHVlcyogc3YpCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUzKSk7CiAgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3Rl
eHR1cmVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6dlBsYW5lXSkpOwogCi0gICAgbGF5ZXJSZW5kZXJl
cigpLT51c2VTaGFkZXIoc3YtPnl1dlNoYWRlclByb2dyYW0oKSk7CisgICAgbGF5ZXJSZW5kZXJl
cigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsKICAgICB1bnNpZ25lZCB5RnJhbWVX
aWR0aCA9IG1fZnJhbWVTaXplc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnlQbGFuZV0ud2lkdGgoKTsK
ICAgICB1bnNpZ25lZCB5VGV4dHVyZVdpZHRoID0gbV90ZXh0dXJlU2l6ZXNbVmlkZW9GcmFtZUNo
cm9taXVtOjp5UGxhbmVdLndpZHRoKCk7CiAgICAgLy8gQXJiaXRyYXJpbHkgdGFrZSB0aGUgdSBz
aXplcyBiZWNhdXNlIHUgYW5kIHYgZGltZW5zaW9ucyBhcmUgaWRlbnRpY2FsLgpAQCAtNDAzLDQ2
ICsyNzksNDggQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmRyYXdZVVYoY29uc3QgU2hhcmVk
VmFsdWVzKiBzdikKIAogICAgIGZsb2F0IHlXaWR0aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHlGcmFtZVdpZHRoKSAvIHlUZXh0dXJlV2lkdGg7CiAgICAgZmxvYXQgdXZXaWR0aFNj
YWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHV2RnJhbWVXaWR0aCkgLyB1dlRleHR1cmVX
aWR0aDsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHN2LT55V2lkdGhTY2Fs
ZUZhY3RvckxvY2F0aW9uKCksIHlXaWR0aFNjYWxlRmFjdG9yKSk7Ci0gICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPnVuaWZvcm0xZihzdi0+dXZXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oKSwgdXZX
aWR0aFNjYWxlRmFjdG9yKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xZihw
cm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS55V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCksIHlXaWR0
aFNjYWxlRmFjdG9yKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xZihwcm9n
cmFtLT52ZXJ0ZXhTaGFkZXIoKS51dldpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbigpLCB1dldpZHRo
U2NhbGVGYWN0b3IpKTsKIAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc3Yt
PnlUZXh0dXJlTG9jYXRpb24oKSwgMSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlm
b3JtMWkoc3YtPnVUZXh0dXJlTG9jYXRpb24oKSwgMikpOwotICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT51bmlmb3JtMWkoc3YtPnZUZXh0dXJlTG9jYXRpb24oKSwgMykpOworICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS55VGV4dHVy
ZUxvY2F0aW9uKCksIDEpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHBy
b2dyYW0tPmZyYWdtZW50U2hhZGVyKCkudVRleHR1cmVMb2NhdGlvbigpLCAyKSk7CisgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnZU
ZXh0dXJlTG9jYXRpb24oKSwgMykpOwogCiAgICAgLy8gVGhpcyB2YWx1ZSBvZiAwLjUgbWFwcyB0
byAxMjguIEl0IGlzIHVzZWQgaW4gdGhlIFlVViB0byBSR0IgY29udmVyc2lvbgogICAgIC8vIGZv
cm11bGEgdG8gdHVybiB1bnNpZ25lZCB1IGFuZCB2IHZhbHVlcyB0byBzaWduZWQgdSBhbmQgdiB2
YWx1ZXMuCiAgICAgLy8gVGhpcyBpcyBsb2FkZWQgYXMgYSB1bmlmb3JtIGJlY2F1c2UgY2VydGFp
biBkcml2ZXJzIGhhdmUgcHJvYmxlbXMKICAgICAvLyByZWFkaW5nIGxpdGVyYWwgZmxvYXQgdmFs
dWVzLgotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWYoc3YtPnNpZ25BZGpMb2Nh
dGlvbigpLCAwLjUpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkuc2lnbkFkakxvY2F0aW9uKCksIDAuNSkpOwogCi0gICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYoc3YtPmNjTWF0cml4TG9jYXRpb24o
KSwgMCwgY29uc3RfY2FzdDxmbG9hdCo+KHl1djJSR0IpLCAxKSk7CisgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5jY01h
dHJpeExvY2F0aW9uKCksIDAsIGNvbnN0X2Nhc3Q8ZmxvYXQqPih5dXYyUkdCKSwgMSkpOwogCiAg
ICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25N
YXRyaXgoKSwgZHJhd1RyYW5zZm9ybSgpLAogICAgICAgICAgICAgICAgICAgICAgYm91bmRzKCku
d2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksCi0gICAgICAgICAgICAg
ICAgICAgICBzdi0+eXV2U2hhZGVyTWF0cml4TG9jYXRpb24oKSwgc3YtPnl1dkFscGhhTG9jYXRp
b24oKSk7CisgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRy
aXhMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFk
ZXIoKS5hbHBoYUxvY2F0aW9uKCkpOwogCiAgICAgLy8gUmVzZXQgYWN0aXZlIHRleHR1cmUgYmFj
ayB0byB0ZXh0dXJlIDAuCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9t
aXVtOjpkcmF3UkdCQShjb25zdCBTaGFyZWRWYWx1ZXMqIHN2KQordm9pZCBWaWRlb0xheWVyQ2hy
b21pdW06OmRyYXdSR0JBKGNvbnN0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6UkdCQVByb2dyYW0qIHBy
b2dyYW0pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVy
Q29udGV4dCgpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlc1tWaWRlb0Zy
YW1lQ2hyb21pdW06OnJnYlBsYW5lXSkpOwogCi0gICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFk
ZXIoc3YtPnJnYmFTaGFkZXJQcm9ncmFtKCkpOworICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hh
ZGVyKHByb2dyYW0tPnByb2dyYW0oKSk7CiAgICAgdW5zaWduZWQgZnJhbWVXaWR0aCA9IG1fZnJh
bWVTaXplc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnJnYlBsYW5lXS53aWR0aCgpOwogICAgIHVuc2ln
bmVkIHRleHR1cmVXaWR0aCA9IG1fdGV4dHVyZVNpemVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6cmdi
UGxhbmVdLndpZHRoKCk7CiAgICAgZmxvYXQgd2lkdGhTY2FsZUZhY3RvciA9IHN0YXRpY19jYXN0
PGZsb2F0PihmcmFtZVdpZHRoKSAvIHRleHR1cmVXaWR0aDsKLSAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+dW5pZm9ybTFmKHN2LT5yZ2JhV2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCksIHdpZHRo
U2NhbGVGYWN0b3IpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHByb2dy
YW0tPnZlcnRleFNoYWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9uKCksIDAsIDAsIHdpZHRoU2Nh
bGVGYWN0b3IsIDEpKTsKIAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc3Yt
PnJnYmFUZXh0dXJlTG9jYXRpb24oKSwgMCkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51
bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkp
OwogCiAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2pl
Y3Rpb25NYXRyaXgoKSwgZHJhd1RyYW5zZm9ybSgpLAogICAgICAgICAgICAgICAgICAgICAgYm91
bmRzKCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksCi0gICAgICAg
ICAgICAgICAgICAgICBzdi0+cmdiYVNoYWRlck1hdHJpeExvY2F0aW9uKCksIHN2LT5yZ2JhQWxw
aGFMb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRl
cigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFn
bWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSk7CiB9CiAKIHZvaWQgVmlkZW9MYXllckNocm9t
aXVtOjpyZXNldEZyYW1lUGFyYW1ldGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IDM0NDliODFiZGZjNzI3MTY2MDk4YjViMDFmNWE2MzNkNmRjOGYxYmMuLmQzYTU5ZmFjYjhk
Mzg4MjI2ODdhNmI5NzY4MmMzZjVmMTJlNmUyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1
bS5oCkBAIC01Myw0NSArNTMsOCBAQCBwdWJsaWM6CiAgICAgLy8gcHV0Q3VycmVudEZyYW1lKCkg
bXVzdCBiZSBjYWxsZWQgdG8gcmV0dXJuIHRoZSBmcmFtZSBjdXJyZW50bHkgaGVsZC4KICAgICB2
b2lkIHJlbGVhc2VDdXJyZW50RnJhbWUoKTsKIAotICAgIGNsYXNzIFNoYXJlZFZhbHVlcyB7Ci0g
ICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBTaGFyZWRWYWx1ZXMoR3JhcGhpY3NDb250ZXh0
M0QqKTsKLSAgICAgICAgflNoYXJlZFZhbHVlcygpOwotICAgICAgICB1bnNpZ25lZCB5dXZTaGFk
ZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV95dXZTaGFkZXJQcm9ncmFtOyB9Ci0gICAgICAg
IHVuc2lnbmVkIHJnYmFTaGFkZXJQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9yZ2JhU2hhZGVy
UHJvZ3JhbTsgfQotICAgICAgICBpbnQgeXV2U2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3l1dlNoYWRlck1hdHJpeExvY2F0aW9uOyB9Ci0gICAgICAgIGludCByZ2JhU2hh
ZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JnYmFTaGFkZXJNYXRyaXhMb2Nh
dGlvbjsgfQotICAgICAgICBpbnQgeVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1feVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbjsgfQotICAgICAgICBpbnQgdXZXaWR0
aFNjYWxlRmFjdG9yTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3V2V2lkdGhTY2FsZUZhY3Rv
ckxvY2F0aW9uOyB9Ci0gICAgICAgIGludCByZ2JhV2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9yZ2JhV2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uOyB9Ci0gICAgICAg
IGludCB5VGV4dHVyZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV95VGV4dHVyZUxvY2F0aW9u
OyB9Ci0gICAgICAgIGludCB1VGV4dHVyZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91VGV4
dHVyZUxvY2F0aW9uOyB9Ci0gICAgICAgIGludCB2VGV4dHVyZUxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV92VGV4dHVyZUxvY2F0aW9uOyB9Ci0gICAgICAgIGludCB5dXZBbHBoYUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV95dXZBbHBoYUxvY2F0aW9uOyB9Ci0gICAgICAgIGludCByZ2Jh
QWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmdiYUFscGhhTG9jYXRpb247IH0KLSAg
ICAgICAgaW50IHJnYmFUZXh0dXJlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JnYmFUZXh0
dXJlTG9jYXRpb247IH0KLSAgICAgICAgaW50IGNjTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2NjTWF0cml4TG9jYXRpb247IH0KLSAgICAgICAgaW50IHNpZ25BZGpMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2lnbkFkakxvY2F0aW9uOyB9Ci0gICAgICAgIGJvb2wgaW5pdGlh
bGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9Ci0gICAgcHJpdmF0ZToKLSAg
ICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKLSAgICAgICAgdW5zaWduZWQgbV95
dXZTaGFkZXJQcm9ncmFtOwotICAgICAgICB1bnNpZ25lZCBtX3JnYmFTaGFkZXJQcm9ncmFtOwot
ICAgICAgICBpbnQgbV95dXZTaGFkZXJNYXRyaXhMb2NhdGlvbjsKLSAgICAgICAgaW50IG1feVdp
ZHRoU2NhbGVGYWN0b3JMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fdXZXaWR0aFNjYWxlRmFjdG9y
TG9jYXRpb247Ci0gICAgICAgIGludCBtX3JnYmFTaGFkZXJNYXRyaXhMb2NhdGlvbjsKLSAgICAg
ICAgaW50IG1fcmdiYVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fY2NN
YXRyaXhMb2NhdGlvbjsKLSAgICAgICAgaW50IG1fc2lnbkFkakxvY2F0aW9uOwotICAgICAgICBp
bnQgbV95VGV4dHVyZUxvY2F0aW9uOwotICAgICAgICBpbnQgbV91VGV4dHVyZUxvY2F0aW9uOwot
ICAgICAgICBpbnQgbV92VGV4dHVyZUxvY2F0aW9uOwotICAgICAgICBpbnQgbV9yZ2JhVGV4dHVy
ZUxvY2F0aW9uOwotICAgICAgICBpbnQgbV95dXZBbHBoYUxvY2F0aW9uOwotICAgICAgICBpbnQg
bV9yZ2JhQWxwaGFMb2NhdGlvbjsKLSAgICAgICAgYm9vbCBtX2luaXRpYWxpemVkOwotICAgIH07
CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0s
IEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUkdCQVByb2dyYW07CisgICAgdHlwZWRl
ZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhZVVZTdHJldGNoLCBGcmFnbWVudFNo
YWRlcllVVlZpZGVvPiBZVVZQcm9ncmFtOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IGNsZWFudXBSZXNvdXJjZXMoKTsKQEAgLTEwNSw4ICs2OCw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGVSR0JBQ29udGVudHMoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBWaWRlb0ZyYW1l
Q2hyb21pdW0qKTsKICAgICB2b2lkIGFsbG9jYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCos
IHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgZGltZW5zaW9ucywgdW5zaWduZWQg
dGV4dHVyZUZvcm1hdCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
KiwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBkaW1lbnNpb25zLCB1bnNpZ25l
ZCB0ZXh0dXJlRm9ybWF0LCBjb25zdCB2b2lkKiBkYXRhKTsKLSAgICB2b2lkIGRyYXdZVVYoY29u
c3QgU2hhcmVkVmFsdWVzKik7Ci0gICAgdm9pZCBkcmF3UkdCQShjb25zdCBTaGFyZWRWYWx1ZXMq
KTsKKyAgICB2b2lkIGRyYXdZVVYoY29uc3QgWVVWUHJvZ3JhbSopOworICAgIHZvaWQgZHJhd1JH
QkEoY29uc3QgUkdCQVByb2dyYW0qKTsKICAgICB2b2lkIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7
CiAgICAgdm9pZCBzYXZlQ3VycmVudEZyYW1lKFZpZGVvRnJhbWVDaHJvbWl1bSopOwogCg==
</data>
<flag name="review"
          id="74768"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>