<?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>66536</bug_id>
          
          <creation_ts>2011-08-18 21:44:26 -0700</creation_ts>
          <short_desc>Implement Web IDL Constructor extended attribute in IDLParser.pm and CodeGeneratorV8.pm</short_desc>
          <delta_ts>2011-10-12 01:35:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>
          
          <blocked>65839</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dominicc</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>453624</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-18 21:44:26 -0700</bug_when>
    <thetext>Currently, all constructors of V8 are manually written as Custom constructors in WebCore/binding/v8/custom/*.cpp. 

IDLParser.pm and CodeGeneratorV8.pm should parse Web IDL Constructor extended attribute, and generate the constructor codes. The spec is here: http://www.w3.org/TR/WebIDL/#Constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453630</commentid>
    <comment_count>1</comment_count>
      <attachid>104458</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-18 21:55:05 -0700</bug_when>
    <thetext>Created attachment 104458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455969</commentid>
    <comment_count>2</comment_count>
      <attachid>104961</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-23 21:59:35 -0700</bug_when>
    <thetext>Created attachment 104961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458736</commentid>
    <comment_count>3</comment_count>
      <attachid>105588</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-29 23:44:28 -0700</bug_when>
    <thetext>Created attachment 105588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458738</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-29 23:46:19 -0700</bug_when>
    <thetext>Nit: Changed a &apos;V8ConstructorSetsDOMWrapper&apos; extended attribute in the previous patches to a &apos;V8ConstructorSetsActiveDOMWrapper&apos; extended attribute. This is because I found that V8DOMWrapper::setJSWrapperForDOMObject() should be called by default and V8DOMWrapper::setJSWrapperForActiveDOMObject() should be optional. Please see the comment in IsActiveDomType subroutine in CodeGeneratorV8.pm. I will upload a follow-up patch that removes IsActiveDOMType subroutine by using the &apos;V8ConstructorSetsActiveDOMWrapper&apos; extended attribute in IDL files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458771</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-30 01:47:56 -0700</bug_when>
    <thetext>@dominicc: Would you like to do an informal review of this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459125</commentid>
    <comment_count>6</comment_count>
      <attachid>105588</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-30 13:14:47 -0700</bug_when>
    <thetext>Comment on attachment 105588
Patch

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

Is it worth including at least *one* thing that uses Constructor, so that you can have more confidence that this works?

&gt; Source/WebCore/ChangeLog:11
&gt; +        - &apos;Constructor&apos; generates constructorCallback() with no arguments.

Maybe you don’t need so much detail on point [1] since it follows from the spec.

&gt; Source/WebCore/ChangeLog:22
&gt; +        [3] Added &apos;V8ConstructorSetsActiveDOMWrapper&apos; extended attribute.

Looks like you need to update this.

&gt; Source/WebCore/ChangeLog:26
&gt; +        [4] Added &apos;ConstructorRaisesException&apos; extended attribute.

When is this used? Because the Web IDL spec does not have &apos;raises&apos; for constructors. Maybe we should email the spec author and see if it can be added, although the Web IDL spec is already in last call.

&gt; Source/WebCore/ChangeLog:29
&gt; +        - If &apos;ConstructorRaisesException&apos; and &apos;ConstructorWith=ScriptExecutionContext&apos;

You probably don’t need to be so explicit, just mention that ConstructorRaisesException and ConstructorWith can be used together.

&gt; Source/WebCore/ChangeLog:42
&gt; +        (GenerateArgumentsCountCheck): Generates a code for checking the number of arguments. This was a code existing in GenerateFunctionCallback(). This patch just moves the code into this method.

Focus on succinctness. eg. &quot;Split out of GenerateFunctionCallback for reuse&quot; or something.

&gt; Source/WebCore/ChangeLog:44
&gt; +        (GenerateConstructorCallback): Generates a code of constructorCallback().

a code -&gt; code

It might be simpler to say &quot;Generates callback definition.&quot;

&gt; Source/WebCore/ChangeLog:45
&gt; +        (GenerateImplementation): Just added a new line for readability.

Probably not worth commenting on this.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:357
&gt; +    if ($dataNode-&gt;extendedAttributes-&gt;{&quot;CanBeConstructed&quot;} || $dataNode-&gt;extendedAttributes-&gt;{&quot;CustomConstructor&quot;} || $dataNode-&gt;extendedAttributes-&gt;{&quot;V8CustomConstructor&quot;} || $dataNode-&gt;extendedAttributes-&gt;{&quot;Constructor&quot;}) {

Seems like you alphabetized these but then added &quot;Constructor&quot; out of order. Be consistent, or at least minimize the diff.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1256
&gt; +    my $argumentsCountCheckString = GenerateArgumentsCountCheck($function, $dataNode);

This variable does not explain anything that is not in the function name. What about just:

push(@implContentDecls, GenerateArgumentsCountCheck($function, $dataNode));

?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1334
&gt; +    push(@implContentDecls, &quot;$callString&quot;);

Why &quot;$callString&quot;? Why not just $callString?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1444
&gt; +            if ($function-&gt;signature &amp;&amp; $function-&gt;signature-&gt;extendedAttributes-&gt;{&quot;StrictTypeChecking&quot;}) {

Why?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1498
&gt; +    push(@implContent, &quot;\n&quot;);

Why not just make this part of the preceding here document?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459259</commentid>
    <comment_count>7</comment_count>
      <attachid>105706</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-30 15:20:44 -0700</bug_when>
    <thetext>Created attachment 105706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459260</commentid>
    <comment_count>8</comment_count>
      <attachid>105588</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-30 15:21:08 -0700</bug_when>
    <thetext>Comment on attachment 105588
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        - &apos;Constructor&apos; generates constructorCallback() with no arguments.
&gt; 
&gt; Maybe you don’t need so much detail on point [1] since it follows from the spec.

Done. Removed the redundant lines.

&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt; +        [3] Added &apos;V8ConstructorSetsActiveDOMWrapper&apos; extended attribute.
&gt; 
&gt; Looks like you need to update this.

Update what? I guess that the description is already up-to-date.

&gt;&gt; Source/WebCore/ChangeLog:26
&gt;&gt; +        [4] Added &apos;ConstructorRaisesException&apos; extended attribute.
&gt; 
&gt; When is this used? Because the Web IDL spec does not have &apos;raises&apos; for constructors. Maybe we should email the spec author and see if it can be added, although the Web IDL spec is already in last call.

&apos;ConstructorRaisesException&apos; does not mean that the constructor can raise exception (as &apos;raises&apos; means),  but just mean that XXX::create() requires a placeholder for ExceptionCode, like XXX::create(..., ec). Thus, I guess that this may be renamed to &quot;ConstructorWith=RaisesException&quot; or something.

&gt;&gt; Source/WebCore/ChangeLog:29
&gt;&gt; +        - If &apos;ConstructorRaisesException&apos; and &apos;ConstructorWith=ScriptExecutionContext&apos;
&gt; 
&gt; You probably don’t need to be so explicit, just mention that ConstructorRaisesException and ConstructorWith can be used together.

Done.

&gt;&gt; Source/WebCore/ChangeLog:42

&gt; 
&gt; Focus on succinctness. eg. &quot;Split out of GenerateFunctionCallback for reuse&quot; or something.

Done.

&gt;&gt; Source/WebCore/ChangeLog:44
&gt;&gt; +        (GenerateConstructorCallback): Generates a code of constructorCallback().
&gt; 
&gt; a code -&gt; code
&gt; 
&gt; It might be simpler to say &quot;Generates callback definition.&quot;

Done.

&gt;&gt; Source/WebCore/ChangeLog:45
&gt;&gt; +        (GenerateImplementation): Just added a new line for readability.
&gt; 
&gt; Probably not worth commenting on this.

Done. Removed this comment.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:357
&gt;&gt; +    if ($dataNode-&gt;extendedAttributes-&gt;{&quot;CanBeConstructed&quot;} || $dataNode-&gt;extendedAttributes-&gt;{&quot;CustomConstructor&quot;} || $dataNode-&gt;extendedAttributes-&gt;{&quot;V8CustomConstructor&quot;} || $dataNode-&gt;extendedAttributes-&gt;{&quot;Constructor&quot;}) {
&gt; 
&gt; Seems like you alphabetized these but then added &quot;Constructor&quot; out of order. Be consistent, or at least minimize the diff.

Done.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1256
&gt;&gt; +    my $argumentsCountCheckString = GenerateArgumentsCountCheck($function, $dataNode);
&gt; 
&gt; This variable does not explain anything that is not in the function name. What about just:
&gt; 
&gt; push(@implContentDecls, GenerateArgumentsCountCheck($function, $dataNode));
&gt; 
&gt; ?

Done here and there.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1334
&gt;&gt; +    push(@implContentDecls, &quot;$callString&quot;);
&gt; 
&gt; Why &quot;$callString&quot;? Why not just $callString?

Done. Removed $callString.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1444
&gt;&gt; +            if ($function-&gt;signature &amp;&amp; $function-&gt;signature-&gt;extendedAttributes-&gt;{&quot;StrictTypeChecking&quot;}) {
&gt; 
&gt; Why?

Done. Removed this.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1498
&gt;&gt; +    push(@implContent, &quot;\n&quot;);
&gt; 
&gt; Why not just make this part of the preceding here document?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459264</commentid>
    <comment_count>9</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-30 15:31:03 -0700</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebCore/ChangeLog:22
&gt; &gt;&gt; +        [3] Added &apos;V8ConstructorSetsActiveDOMWrapper&apos; extended attribute.
&gt; &gt; 
&gt; &gt; Looks like you need to update this.
&gt; 
&gt; Update what? I guess that the description is already up-to-date.

My bad!

&gt; &gt;&gt; Source/WebCore/ChangeLog:26
&gt; &gt;&gt; +        [4] Added &apos;ConstructorRaisesException&apos; extended attribute.
&gt; &gt; 
&gt; &gt; When is this used? Because the Web IDL spec does not have &apos;raises&apos; for constructors. Maybe we should email the spec author and see if it can be added, although the Web IDL spec is already in last call.
&gt; 
&gt; &apos;ConstructorRaisesException&apos; does not mean that the constructor can raise exception (as &apos;raises&apos; means),  but just mean that XXX::create() requires a placeholder for ExceptionCode, like XXX::create(..., ec). Thus, I guess that this may be renamed to &quot;ConstructorWith=RaisesException&quot; or something.

It seems weird that something in the WebCore layer (as opposed to bindings layer) is generating an exception, but that is not described in WebIDL with raises(…).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459447</commentid>
    <comment_count>10</comment_count>
      <attachid>105706</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-30 22:24:43 -0700</bug_when>
    <thetext>Comment on attachment 105706
Patch

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

This looks great.  We&apos;ll need to do something similar to CodeGeneratorJS if we want to use this in more than a handful of IDL files.

Thanks for writing this patch.

&gt; Source/WebCore/bindings/scripts/IDLParser.pm:158
&gt; +        if ($str =~ /^\s*=/) {
&gt; +            # Parse &apos;=&apos; value | &apos;=&apos; value &apos;,&apos;
&gt; +            $str =~ s/^\s*=//;
&gt; +            if ($str =~ /^\s*([^,]*),?/) {

Perl makes me sad face.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459490</commentid>
    <comment_count>11</comment_count>
      <attachid>105706</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-31 00:34:53 -0700</bug_when>
    <thetext>Comment on attachment 105706
Patch

Clearing flags on attachment: 105706

Committed r94156: &lt;http://trac.webkit.org/changeset/94156&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459491</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-31 00:34:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459494</commentid>
    <comment_count>13</comment_count>
      <attachid>105754</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-31 00:45:17 -0700</bug_when>
    <thetext>Created attachment 105754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459497</commentid>
    <comment_count>14</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-31 00:48:28 -0700</bug_when>
    <thetext>Sorry, I uploaded the last patch by mistake (after this CL is landed). Please ignore the last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459659</commentid>
    <comment_count>15</comment_count>
      <attachid>105754</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-31 09:14:24 -0700</bug_when>
    <thetext>Comment on attachment 105754
Patch

Apparently obsolete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482297</commentid>
    <comment_count>16</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-10-12 01:35:06 -0700</bug_when>
    <thetext>*** Bug 66278 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104458</attachid>
            <date>2011-08-18 21:55:05 -0700</date>
            <delta_ts>2011-08-23 21:59:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66536-20110819135504.patch</filename>
            <type>text/plain</type>
            <size>39915</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxNjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhODI4Y2VjMDAzMjMxNzQ3
MWE3YThiMTg3MWU1M2JlMWM1ZmIxNjNmLi5jOWQyNTg5YzZkODc1YzdmZWVlMzZmNGVjNWM5MGYx
N2U1OTA3YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTEtMDgtMTggIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViIElE
TCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gSURMUGFyc2VyLnBtIGFuZCBDb2Rl
R2VuZXJhdG9yVjgucG0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjUzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBzcGVjIGlzIGhlcmU6IGh0dHA6Ly93d3cudzMub3JnL1RSL1dlYklETC8jQ29u
c3RydWN0b3IKKworICAgICAgICBbMV0gSW50cm9kdWNlZCBXZWIgSURMICdDb25zdHJ1Y3Rvcicg
ZXh0ZW5kZWQgYXR0cmlidXRlLgorICAgICAgICAtICdDb25zdHJ1Y3RvcicgZ2VuZXJhdGVzIGNv
bnN0cnVjdG9yQ2FsbGJhY2soKSB3aXRoIG5vIGFyZ3VtZW50cy4KKyAgICAgICAgLSAnQ29uc3Ry
dWN0b3IoKScgZ2VuZXJhdGVzIGNvbnN0cnVjdG9yQ2FsbGJhY2soKSB3aXRoIG5vIGFyZ3VtZW50
cy4KKyAgICAgICAgLSAnQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHN0ciwgaW4gZmxvYXQgZikn
IGdlbmVyYXRlcyBjb25zdHJ1Y3RvckNhbGxiYWNrKCkKKyAgICAgICAgd2l0aCB0d28gYXJndW1l
bnRzLCBET01TdHJpbmcgYW5kIGZsb2F0LiBXZSBjYW4gYWxzbyBzcGVjaWZ5IGV4dGVuZGVkCisg
ICAgICAgIGF0dHJpYnV0ZXMgZm9yIGVhY2ggYXJndW1lbnQsIGxpa2UgJ0NvbnN0cnVjdG9yKGlu
IERPTVN0cmluZyBzLAorICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWUs
IENvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdCknCisKKyAgICAgICAgWzJdIEFk
ZGVkICdDb25zdHJ1Y3RXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQnIGV4dGVuZGVkIGF0dHJp
YnV0ZS4KKyAgICAgICAgLSBUaGUgY29uc3RydWN0b3IgcGFzc2VzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgdG8gYSBYWFg6OmNyZWF0ZSgpIG1ldGhvZCwKKyAgICAgICAgbGlrZSBYWFg6OmNyZWF0
ZSguLi4sIGNvbnRleHQsIC4uLikuCisKKyAgICAgICAgWzNdIEFkZGVkICdWOENvbnN0cnVjdG9y
U2V0c0RPTVdyYXBwZXInIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKyAgICAgICAgLSBUaGUgY29uc3Ry
dWN0b3IgY2FsbHMgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoKQorICAg
ICAgICBpbnN0ZWFkIG9mIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2Jq
ZWN0KCkuCisKKyAgICAgICAgWzRdIEFkZGVkICdDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbicg
ZXh0ZW5kZWQgYXR0cmlidXRlLgorICAgICAgICAtIEEgcGxhY2Vob2xkZXIgZm9yIEV4Y2VwdGlv
bkNvZGUgaXMgcGFzc2VkIHRvIGEgWFhYOjpjcmVhdGUoKSBtZXRob2QsCisgICAgICAgIGxpa2Ug
WFhYOjpjcmVhdGUoLi4uLCBlYykuCisgICAgICAgIC0gSWYgJ0NvbnN0cnVjdG9yUmFpc2VzRXhj
ZXB0aW9uJyBhbmQgJ0NvbnN0cnVjdFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCcKKyAgICAg
ICAgYXJlIHNwZWNpZmllZCBhdCB0aGUgc2FtZSB0aW1lLCB0aGUgY29uc3RydWN0b3IgY2FsbHMg
WFhYOjpjcmVhdGUoLi4uLCBjb250ZXh0LCBlYykuCisKKyAgICAgICAgTm90ZToKKyAgICAgICAg
LSBDb25zdHJ1Y3RvciBvdmVybG9hZGluZyBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorICAgICAg
ICAtIFdlIGNhbm5vdCB5ZXQgc3BlY2lmeSBbT3B0aW9uYWxdIHdpdGhvdXQgQ2FsbFdpdGhEZWZh
dWx0VmFsdWUgZm9yIGEgY29uc3RydWN0b3IuCisKKyAgICAgICAgVGVzdDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsCisgICAgICAgICAgICAg
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5l
cmF0ZUhlYWRlcik6IEdlbmVyYXRlcyBhIGhlYWRlciBmb3IgY29uc3RydWN0b3JDYWxsYmFjaygp
LCBpZiAnQ29uc3RydWN0b3InIGlzIHNwZWNpZmllZC4KKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rp
b25DYWxsYmFjayk6IFVzZXMgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCkgYW5kIEdlbmVy
YXRlUGFyYW1ldGVyc0NoZWNrKCkuCisgICAgICAgIChHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hl
Y2spOiBHZW5lcmF0ZXMgYSBjb2RlIGZvciBjaGVja2luZyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50
cy4gVGhpcyB3YXMgYSBjb2RlIGV4aXN0aW5nIGluIEdlbmVyYXRlRnVuY3Rpb25DYWxsYmFjaygp
LiBUaGlzIHBhdGNoIGp1c3QgbW92ZXMgdGhlIGNvZGUgaW50byB0aGlzIG1ldGhvZC4KKyAgICAg
ICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKTogR2VuZXJhdGVzIGEgY29kZSBmb3IgY2hlY2tp
bmcgcGFzc2VkIGFyZ3VtZW50cyBhbmQgY29udmVydGluZyB0aGVtIGludG8gV2ViQ29yZSB2YWx1
ZXMuIFRoaXMgd2FzIGEgY29kZSBleGlzdGluZyBpbiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2so
KS4gVGhpcyBwYXRjaCBqdXN0IG1vdmVzIHRoZSBjb2RlIGludG8gdGhpcyBtZXRob2QuCisgICAg
ICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2spOiBHZW5lcmF0ZXMgYSBjb2RlIG9mIGNv
bnN0cnVjdG9yQ2FsbGJhY2soKS4KKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBK
dXN0IGFkZGVkIGEgbmV3IGxpbmUgZm9yIHJlYWRhYmlsaXR5LgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvSURMUGFyc2VyLnBtOgorICAgICAgICAocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMp
OiBQcmV2aW91c2x5LCBvbmx5IGEgc3RyaW5nIGluIHRoZSAiQT1CLCBDLCBELCBFPUYiIGZvcm1h
dCBjYW4gYmUgcGFyc2VkLiBUaGlzIHBhdGNoIGVuYWJsZXMgdG8gcGFyc2UgYSBzdHJpbmcgaW4g
dGhlICJBPUIsIEMsIEQsIEU9RiwgRyhpbiBET01TdHJpbmcgcywgaW4gW0gsIEksIEpdIERPTVN0
cmluZyB0KSIgZm9ybWF0LgorICAgICAgICAocGFyc2VQYXJhbWV0ZXJzKTogVGhpcyB3YXMgYSBj
b2RlIGV4aXN0aW5nIGluIFBhcnNlSW50ZXJmYWNlKCkuIFRoaXMgcGF0Y2gganVzdCBtb3ZlcyB0
aGUgY29kZSBpbnRvIHRoaXMgbWV0aG9kLgorICAgICAgICAoUGFyc2VJbnRlcmZhY2UpOiBVc2Vz
IHBhcnNlUGFyYW1ldGVycygpLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0
dXJlLnBtOiBBZGRlZCBkb21DbGFzc3tjb25zdHJ1Y3Rvcn0uIENoYW5nZWQgdGhlIHJlZ3VsYXIg
ZXhwcmVzc2lvbiB0byBleHRyYWN0IHRoZSBsaXN0IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsOiBBZGRlZCBh
bGwgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdGhhdCB0aGlzIHBhdGNoIGlzIGdvaW5nIHRvIGlu
dHJvZHVjZS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6IEFk
ZGVkICdDb25zdHJ1Y3RvcicuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEludGVyZmFjZS5jcHA6IFVwZGF0ZWQgdGhlIHRlc3QgcmVzdWx0LgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6IERp
dHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6Y29uc3RydWN0b3JDYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oOiBEaXR0by4K
KwogMjAxMS0wOC0xNiAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gV2luZG93cyBidWlsZCBmaXggYWZ0ZXIgcjkzMTQw
LiBUYWtlIDQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCmluZGV4IDY1YTA2OGMzMTY3ZmZkZmFhMjNmMGQ1OThkNTUyNjhjMDU0OWMw
NDMuLmE3YTk4M2NkZWZjMWQ4YjU5NDc1ZTY1NTc3ZGI4YzU5MTAwMmZhNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0z
NDksNyArMzQ5LDcgQEAgRU5ECiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FuQmVDb25zdHJ1Y3RlZCJ9KSB7CisgICAgaWYgKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSB8fCAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncyk7CiBFTkQK
QEAgLTEyNDcsMjggKzEyNDcsOCBAQCBFTkQKIAogICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHsk
ZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwogCi0gICAgbXkgJHJlcXVpcmVzQWxsQXJndW1lbnRzOwot
ICAgIG15ICRyZXF1aXJlc0FsbEFyZ3VtZW50c0RlZmF1bHQgPSAiIjsKLSAgICBpZiAoISRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeURlZmF1bHRPcHRpb25hbEFyZ3VtZW50
cyJ9KSB7Ci0gICAgICAgICRyZXF1aXJlc0FsbEFyZ3VtZW50c0RlZmF1bHQgPSAiUmFpc2UiOwot
ICAgIH0KLSAgICAkcmVxdWlyZXNBbGxBcmd1bWVudHMgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcXVpcmVzQWxsQXJndW1lbnRzIn0gfHwgJHJlcXVpcmVz
QWxsQXJndW1lbnRzRGVmYXVsdDsKLSAgICBpZiAoJHJlcXVpcmVzQWxsQXJndW1lbnRzKSB7Ci0g
ICAgICAgIG15ICRudW1NYW5kYXRvcnlQYXJhbXMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307
Ci0gICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChyZXZlcnNlKEB7JGZ1bmN0aW9uLT5wYXJhbWV0
ZXJzfSkpIHsKLSAgICAgICAgICAgIGlmICgkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJP
cHRpb25hbCJ9KSB7Ci0gICAgICAgICAgICAgICAgJG51bU1hbmRhdG9yeVBhcmFtcy0tOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsYXN0OwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAkbnVtTWFuZGF0b3J5UGFyYW1zKVxuIik7Ci0gICAgICAgIGlmICgkcmVxdWly
ZXNBbGxBcmd1bWVudHMgZXEgIlJhaXNlIikgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXCJOb3QgZW5vdWdoIGFyZ3VtZW50
c1wiLCBWOFByb3h5OjpUeXBlRXJyb3IpO1xuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KCk7XG4iKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBteSAkYXJndW1lbnRzQ291
bnRDaGVja1N0cmluZyA9IEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkZnVuY3Rpb24sICRk
YXRhTm9kZSk7CisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgJGFyZ3VtZW50c0NvdW50Q2hl
Y2tTdHJpbmcpOwogCiAgICAgbXkgKCRzdmdQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlU
eXBlLCAkc3ZnTmF0aXZlVHlwZSkgPSBHZXRTVkdQcm9wZXJ0eVR5cGVzKCRpbXBsQ2xhc3NOYW1l
KTsKIApAQCAtMTM0MCw2ICsxMzIwLDYyIEBAIEVORAogRU5ECiAgICAgfQogCisgICAgbXkgKCRw
YXJhbWV0ZXJDaGVja1N0cmluZywgJHBhcmFtSW5kZXgpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2soJGZ1bmN0aW9uLCAkaW1wbENsYXNzTmFtZSk7CisgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgJHBhcmFtZXRlckNoZWNrU3RyaW5nKTsKKworICAgICMgQnVpbGQgdGhlIGZ1bmN0aW9uIGNh
bGwgc3RyaW5nLgorICAgIG15ICRjYWxsU3RyaW5nID0gR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJp
bmcoJGZ1bmN0aW9uLCAkcGFyYW1JbmRleCwgIiAgICAiLCAkaW1wbENsYXNzTmFtZSk7CisgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiRjYWxsU3RyaW5nIik7CisKKyAgICBpZiAoJHJhaXNl
c0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9XG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBmYWlsOlxuIik7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9u
KGVjKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIpOworICAgIH0KKworICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICJ9XG5cbiIpOworfQorCitzdWIgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNr
Cit7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7
CisKKyAgICBteSAkYXJndW1lbnRzQ291bnRDaGVja1N0cmluZyA9ICIiOworICAgIG15ICRyZXF1
aXJlc0FsbEFyZ3VtZW50czsKKyAgICBteSAkcmVxdWlyZXNBbGxBcmd1bWVudHNEZWZhdWx0ID0g
IiI7CisgICAgaWYgKCEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZWdhY3lEZWZh
dWx0T3B0aW9uYWxBcmd1bWVudHMifSkgeworICAgICAgICAkcmVxdWlyZXNBbGxBcmd1bWVudHNE
ZWZhdWx0ID0gIlJhaXNlIjsKKyAgICB9CisgICAgJHJlcXVpcmVzQWxsQXJndW1lbnRzID0gJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXF1aXJlc0FsbEFyZ3Vt
ZW50cyJ9IHx8ICRyZXF1aXJlc0FsbEFyZ3VtZW50c0RlZmF1bHQ7CisgICAgaWYgKCRyZXF1aXJl
c0FsbEFyZ3VtZW50cykgeworICAgICAgICBteSAkbnVtTWFuZGF0b3J5UGFyYW1zID0gQHskZnVu
Y3Rpb24tPnBhcmFtZXRlcnN9OworICAgICAgICBmb3JlYWNoIG15ICRwYXJhbSAocmV2ZXJzZShA
eyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pKSB7CisgICAgICAgICAgICBpZiAoJHBhcmFtLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgeworICAgICAgICAgICAgICAgICRudW1NYW5k
YXRvcnlQYXJhbXMtLTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGFz
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoJG51bU1hbmRhdG9yeVBh
cmFtcyA+PSAxKSB7CisgICAgICAgICAgICAkYXJndW1lbnRzQ291bnRDaGVja1N0cmluZyAuPSAi
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgJG51bU1hbmRhdG9yeVBhcmFtcylcbiI7CisgICAgICAg
ICAgICBpZiAoJHJlcXVpcmVzQWxsQXJndW1lbnRzIGVxICJSYWlzZSIpIHsKKyAgICAgICAgICAg
ICAgICAkYXJndW1lbnRzQ291bnRDaGVja1N0cmluZyAuPSAiICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihcIk5vdCBlbm91Z2ggYXJndW1lbnRzXCIsIFY4UHJveHk6OlR5cGVFcnJvcik7XG4iOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkYXJndW1lbnRzQ291bnRDaGVj
a1N0cmluZyAuPSAiICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG4iOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAkYXJndW1lbnRzQ291
bnRDaGVja1N0cmluZzsKK30KKworc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCit7CisgICAg
bXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKwor
ICAgIG15ICRwYXJhbWV0ZXJDaGVja1N0cmluZyA9ICIiOwogICAgIG15ICRwYXJhbUluZGV4ID0g
MDsKICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkg
ewogICAgICAgICBUcmFuc2xhdGVQYXJhbWV0ZXIoJHBhcmFtZXRlcik7CkBAIC0xMzUyLDEwICsx
Mzg4LDEwIEBAIEVORAogICAgICAgICBteSAkb3B0aW9uYWwgPSAkcGFyYW1ldGVyLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifTsgICAgICAgIAogICAgICAgICBpZiAoJG9wdGlvbmFs
ICYmICRvcHRpb25hbCBuZSAiQ2FsbFdpdGhEZWZhdWx0VmFsdWUiICYmICEkcGFyYW1ldGVyLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgewogICAgICAgICAgICAgIyBHZW5lcmF0
ZSBlYXJseSBjYWxsIGlmIHRoZXJlIGFyZSBub3QgZW5vdWdoIHBhcmFtZXRlcnMuCi0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9ICRw
YXJhbUluZGV4KSB7XG4iKTsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAi
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9ICRwYXJhbUluZGV4KSB7XG4iOwogICAgICAgICAgICAg
bXkgJGZ1bmN0aW9uQ2FsbCA9IEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCRmdW5jdGlvbiwg
JHBhcmFtSW5kZXgsICIgICAgIiB4IDIsICRpbXBsQ2xhc3NOYW1lKTsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICRmdW5jdGlvbkNhbGwpOwotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICB9XG4iKTsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVj
a1N0cmluZyAuPSAkZnVuY3Rpb25DYWxsOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3Ry
aW5nIC49ICIgICAgfVxuIjsKICAgICAgICAgfQogCiAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV4
Y2VwdGlvbkNvZGUuaCJ9ID0gMTsKQEAgLTEzNjQsMzMgKzE0MDAsMzMgQEAgRU5ECiAgICAgICAg
ICAgICBteSAkY2xhc3NOYW1lID0gR2V0Q2FsbGJhY2tDbGFzc05hbWUoJHBhcmFtZXRlci0+dHlw
ZSk7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIkY2xhc3NOYW1lLmgifSA9IDE7CiAgICAg
ICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0p
IHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIFJlZlB0cjwi
IC4gJHBhcmFtZXRlci0+dHlwZSAuICI+ICRwYXJhbWV0ZXJOYW1lO1xuIik7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoYXJncy5MZW5ndGgoKSA+ICRw
YXJhbUluZGV4ICYmICFhcmdzWyRwYXJhbUluZGV4XS0+SXNOdWxsKCkgJiYgIWFyZ3NbJHBhcmFt
SW5kZXhdLT5Jc1VuZGVmaW5lZCgpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiICAgICAgICBpZiAoIWFyZ3NbJHBhcmFtSW5kZXhdLT5Jc09iamVjdCgp
KVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTtcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgICRwYXJhbWV0ZXJOYW1lID0g
JHtjbGFzc05hbWV9OjpjcmVhdGUoYXJnc1skcGFyYW1JbmRleF0sIGdldFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIH1cbiIpOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAi
ICAgIFJlZlB0cjwiIC4gJHBhcmFtZXRlci0+dHlwZSAuICI+ICRwYXJhbWV0ZXJOYW1lO1xuIjsK
KyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJncy5M
ZW5ndGgoKSA+ICRwYXJhbUluZGV4ICYmICFhcmdzWyRwYXJhbUluZGV4XS0+SXNOdWxsKCkgJiYg
IWFyZ3NbJHBhcmFtSW5kZXhdLT5Jc1VuZGVmaW5lZCgpKSB7XG4iOworICAgICAgICAgICAgICAg
ICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBpZiAoIWFyZ3NbJHBhcmFtSW5kZXhd
LT5Jc09iamVjdCgpKVxuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcg
Lj0gIiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTtcbiI7
CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgICRwYXJh
bWV0ZXJOYW1lID0gJHtjbGFzc05hbWV9OjpjcmVhdGUoYXJnc1skcGFyYW1JbmRleF0sIGdldFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7XG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJD
aGVja1N0cmluZyAuPSAiICAgIH1cbiI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0g
JHBhcmFtSW5kZXggfHwgIWFyZ3NbJHBhcmFtSW5kZXhdLT5Jc09iamVjdCgpKVxuIik7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICBSZWZQdHI8IiAuICRwYXJhbWV0ZXItPnR5cGUgLiAiPiAkcGFy
YW1ldGVyTmFtZSA9ICR7Y2xhc3NOYW1lfTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCBnZXRT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpO1xuIik7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRl
ckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gJHBhcmFtSW5kZXggfHwg
IWFyZ3NbJHBhcmFtSW5kZXhdLT5Jc09iamVjdCgpKVxuIjsKKyAgICAgICAgICAgICAgICAkcGFy
YW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNN
QVRDSF9FUlIpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0g
IiAgICBSZWZQdHI8IiAuICRwYXJhbWV0ZXItPnR5cGUgLiAiPiAkcGFyYW1ldGVyTmFtZSA9ICR7
Y2xhc3NOYW1lfTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCBnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpO1xuIjsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRl
ci0+dHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewogICAgICAgICAgICAgJGltcGxJ
bmNsdWRlc3siU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgifSA9IDE7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgIGJvb2wgJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93ID0g
ZmFsc2U7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5h
dGl2ZVR5cGUgJHBhcmFtZXRlck5hbWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShh
cmdzWyRwYXJhbUluZGV4XSwgJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93KTtcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoJHtwYXJhbWV0ZXJOYW1lfURp
ZFRocm93KVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpO1xuIik7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hl
Y2tTdHJpbmcgLj0gIiAgICBib29sICR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdyA9IGZhbHNlO1xu
IjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICRuYXRpdmVUeXBl
ICRwYXJhbWV0ZXJOYW1lID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1skcGFy
YW1JbmRleF0sICR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdyk7XG4iOworICAgICAgICAgICAgJHBh
cmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKCR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdylc
biI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTtcbiI7CiAgICAgICAgIH0gZWxzaWYgKFR5cGVDYW5GYWlsQ29udmVy
c2lvbigkcGFyYW1ldGVyKSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICAkbmF0aXZlVHlwZSAkcGFyYW1ldGVyTmFtZSA9ICIgLgotICAgICAgICAgICAgICAgICBK
U1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5kZXhdIikgLiAiO1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmIChVTkxJS0VMWSgh
JHBhcmFtZXRlck5hbWUpKSB7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICIgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7XG4iKTsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIGdvdG8gZmFpbDtcbiIpOwotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9XG4iKTsKKyAgICAgICAgICAgICRwYXJh
bWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICRuYXRpdmVUeXBlICRwYXJhbWV0ZXJOYW1lID0gIiAu
CisgICAgICAgICAgICAgICAgIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiYXJnc1skcGFy
YW1JbmRleF0iKSAuICI7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49
ICIgICAgaWYgKFVOTElLRUxZKCEkcGFyYW1ldGVyTmFtZSkpIHtcbiI7CisgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjtc
biI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgZ290byBm
YWlsO1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIH1cbiI7
CiAgICAgICAgIH0gZWxzaWYgKCRuYXRpdmVUeXBlID1+IC9eVjhQYXJhbWV0ZXIvKSB7CiAgICAg
ICAgICAgICBteSAkdmFsdWUgPSBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBh
cmFtSW5kZXhdIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICIg
LiBDb252ZXJ0VG9WOFBhcmFtZXRlcigkcGFyYW1ldGVyLCAkbmF0aXZlVHlwZSwgJHBhcmFtZXRl
ck5hbWUsICR2YWx1ZSkgLiAiXG4iKTsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmlu
ZyAuPSAiICAgICIgLiBDb252ZXJ0VG9WOFBhcmFtZXRlcigkcGFyYW1ldGVyLCAkbmF0aXZlVHlw
ZSwgJHBhcmFtZXRlck5hbWUsICR2YWx1ZSkgLiAiXG4iOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhCaW5kaW5nTWFjcm9zLmgifSA9IDE7CiAgICAgICAg
ICAgICAjIElmIHRoZSAiU3RyaWN0VHlwZUNoZWNraW5nIiBleHRlbmRlZCBhdHRyaWJ1dGUgaXMg
cHJlc2VudCwgYW5kIHRoZSBhcmd1bWVudCdzIHR5cGUgaXMgYW4KQEAgLTEzOTksNDIgKzE0MzUs
MTIwIEBAIEVORAogICAgICAgICAgICAgIyBQZXIgdGhlIFdlYiBJREwgYW5kIEVDTUFTY3JpcHQg
c3BlY2lmaWNhdGlvbnMsIGluY29taW5nIHZhbHVlcyBjYW4gYWx3YXlzIGJlIGNvbnZlcnRlZAog
ICAgICAgICAgICAgIyB0byBib3RoIHN0cmluZ3MgYW5kIG51bWJlcnMsIHNvIGRvIG5vdCB0aHJv
dyBUeXBlRXJyb3IgaWYgdGhlIGFyZ3VtZW50IGlzIG9mIHRoZXNlCiAgICAgICAgICAgICAjIHR5
cGVzLgotICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiU3RyaWN0VHlwZUNoZWNraW5nIn0pIHsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rp
b24tPnNpZ25hdHVyZSAmJiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlN0cmljdFR5cGVDaGVja2luZyJ9KSB7CiAgICAgICAgICAgICAgICAgbXkgJGFyZ1ZhbHVl
ID0gImFyZ3NbJHBhcmFtSW5kZXhdIjsKICAgICAgICAgICAgICAgICBteSAkYXJnVHlwZSA9IEdl
dFR5cGVGcm9tU2lnbmF0dXJlKCRwYXJhbWV0ZXIpOwogICAgICAgICAgICAgICAgIGlmIChJc1dy
YXBwZXJUeXBlKCRhcmdUeXBlKSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgIGlmIChhcmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXggJiYgIWlzVW5k
ZWZpbmVkT3JOdWxsKCRhcmdWYWx1ZSkgJiYgIVY4JHthcmdUeXBlfTo6SGFzSW5zdGFuY2UoJGFy
Z1ZhbHVlKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICIgICAgICAgIFY4UHJveHk6OnRocm93VHlwZUVycm9yKCk7XG4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuIG5vdEhhbmRs
ZWRCeUludGVyY2VwdG9yKCk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICB9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAkcGFyYW1JbmRleCAmJiAhaXNV
bmRlZmluZWRPck51bGwoJGFyZ1ZhbHVlKSAmJiAhVjgke2FyZ1R5cGV9OjpIYXNJbnN0YW5jZSgk
YXJnVmFsdWUpKSB7XG4iOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICAgICAgVjhQcm94eTo6dGhyb3dUeXBlRXJyb3IoKTtcbiI7CisgICAgICAgICAg
ICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICByZXR1cm4gbm90SGFu
ZGxlZEJ5SW50ZXJjZXB0b3IoKTtcbiI7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJD
aGVja1N0cmluZyAuPSAiICAgIH1cbiI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBFWENFUFRJT05fQkxP
Q0soJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAiIC4KLSAgICAgICAgICAgICAgICAgSlNW
YWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpIC4gIik7XG4iKTsK
KyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIEVYQ0VQVElPTl9CTE9D
SygkbmF0aXZlVHlwZSwgJHBhcmFtZXRlck5hbWUsICIgLgorICAgICAgICAgICAgICAgICBKU1Zh
bHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5kZXhdIikgLiAiKTtcbiI7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IklzSW5kZXgifSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBp
ZiAoVU5MSUtFTFkoJHBhcmFtZXRlck5hbWUgPCAwKSkge1xuIik7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSO1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICBnb3RvIGZhaWw7XG4i
KTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgfVxuIik7CisgICAg
ICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoVU5MSUtFTFkoJHBhcmFt
ZXRlck5hbWUgPCAwKSkge1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAu
PSAiICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSO1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0
ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBnb3RvIGZhaWw7XG4iOworICAgICAgICAgICAgJHBh
cmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgfVxuIjsKICAgICAgICAgfQogCiAgICAgICAgICRw
YXJhbUluZGV4Kys7CiAgICAgfQorICAgIHJldHVybiAoJHBhcmFtZXRlckNoZWNrU3RyaW5nLCAk
cGFyYW1JbmRleCk7Cit9CiAKLSAgICAjIEJ1aWxkIHRoZSBmdW5jdGlvbiBjYWxsIHN0cmluZy4K
LSAgICBteSAkY2FsbFN0cmluZyA9IEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCRmdW5jdGlv
biwgJHBhcmFtSW5kZXgsICIgICAgIiwgJGltcGxDbGFzc05hbWUpOwotICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIkY2FsbFN0cmluZyIpOworc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxs
YmFjaworeworICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNo
aWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisKKyAgICBteSAkcmFpc2VzRXhj
ZXB0aW9ucyA9IEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfTsKKyAgICBpZiAoJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24ifSkg
eworICAgICAgICAkcmFpc2VzRXhjZXB0aW9ucyA9IDE7CisgICAgfQorICAgIGlmICghJHJhaXNl
c0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlv
bi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgICAgIGlmICgoISRwYXJhbWV0ZXItPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDYWxsYmFjayJ9IGFuZCBUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBhcmFt
ZXRlcikpIG9yICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc0luZGV4In0pIHsK
KyAgICAgICAgICAgICAgICAkcmFpc2VzRXhjZXB0aW9ucyA9IDE7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBteSBAZXh0cmFBcmd1bWVudExpc3Q7CisgICAgcHVzaChA
aW1wbENvbnRlbnQsIDw8RU5EKTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOCR7aW1wbENsYXNz
TmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sK
KyAgICBJTkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LkNvbnN0cnVjdG9yIik7CisKKyAg
ICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4i
LCBWOFByb3h5OjpUeXBlRXJyb3IpOworRU5ECisKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxu
Iik7CisgICAgbXkgJGFyZ3VtZW50c0NvdW50Q2hlY2tTdHJpbmcgPSBHZW5lcmF0ZUFyZ3VtZW50
c0NvdW50Q2hlY2soJGZ1bmN0aW9uLCAkZGF0YU5vZGUpOworICAgIHB1c2goQGltcGxDb250ZW50
LCAkYXJndW1lbnRzQ291bnRDaGVja1N0cmluZyk7CiAKICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlv
bnMpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBmYWlsOlxuIik7Ci0gICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTtcbiIp
OwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTtcbiIpOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2Rl
LmgifSA9IDE7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKICAgICB9CiAK
LSAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifVxuXG4iKTsKKyAgICBteSAoJHBhcmFtZXRl
ckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkZnVu
Y3Rpb24sICRpbXBsQ2xhc3NOYW1lKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgJHBhcmFtZXRl
ckNoZWNrU3RyaW5nKTsKKworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25zdHJ1Y3RvcldpdGgifSAmJiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
b25zdHJ1Y3RvcldpdGgifSBlcSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpIHsKKyAgICAgICAg
cHVzaChAZXh0cmFBcmd1bWVudExpc3QsICJjb250ZXh0Iik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0g
Z2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoIiR7aW1wbENsYXNzTmFtZX0gY29uc3RydWN0b3IncyBhc3NvY2lh
dGVkIGNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsK
K0VORAorICAgIH0KKworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
b25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiJ9KSB7CisgICAgICAgIHB1c2goQGV4dHJhQXJndW1l
bnRMaXN0LCAiZWMiKTsKKyAgICB9CisKKyAgICBteSBAYXJndW1lbnRMaXN0OworICAgIG15ICRp
bmRleCA9IDA7CisgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1l
dGVyc30pIHsKKyAgICAgICAgbGFzdCBpZiAkaW5kZXggZXEgJHBhcmFtSW5kZXg7CisgICAgICAg
IHB1c2goQGFyZ3VtZW50TGlzdCwgJHBhcmFtZXRlci0+bmFtZSk7CisgICAgICAgICRpbmRleCsr
OworICAgIH0KKworICAgIG15ICRhcmd1bWVudFN0cmluZyA9IGpvaW4oIiwgIiwgQGFyZ3VtZW50
TGlzdCwgQGV4dHJhQXJndW1lbnRMaXN0KTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7
CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR7aW1wbENsYXNzTmFtZX0+IG9i
aiA9ICR7aW1wbENsYXNzTmFtZX06OmNyZWF0ZSgke2FyZ3VtZW50U3RyaW5nfSk7XG4iKTsKKwor
ICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclJhaXNl
c0V4Y2VwdGlvbiJ9KSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChlYylc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZ290byBmYWlsO1xuIik7
CisgICAgfQorCisgICAgbXkgJERPTU9iamVjdCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IlY4Q29uc3RydWN0b3JTZXRzRE9NV3JhcHBlciJ9ID8gIkRPTU9iamVjdCIgOiAiQWN0
aXZlRE9NT2JqZWN0IjsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworCisgICAgVjhE
T01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBvYmouZ2V0KCkp
OworICAgIG9iai0+cmVmKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3Ike0RP
TU9iamVjdH0ob2JqLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3Mu
SG9sZGVyKCkpKTsKKyAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKK0VORAorCisgICAgaWYgKCRy
YWlzZXNFeGNlcHRpb25zKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICBmYWlsOlxu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0aHJvd0Vycm9yKGVj
KTtcbiIpOworICAgIH0KKworICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CisgICAgcHVz
aChAaW1wbENvbnRlbnQsICJcbiIpOwogfQogCiBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRl
RGF0YQpAQCAtMTg5Niw3ICsyMDEwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICBpZiAoQGRpc2FsbG93c1NoYWRvd2luZykgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
InN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIHNoYWRvd0F0dHJzW10gPSB7XG4iKTsKICAg
ICAgICAgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YSgkZGF0YU5vZGUsIFxAZGlzYWxsb3dz
U2hhZG93aW5nKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIik7CiAgICAgfQogCiAgICAgbXkgJGhhc19hdHRy
aWJ1dGVzID0gMDsKQEAgLTE5MDQsNyArMjAxOCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICRoYXNfYXR0cmlidXRlcyA9IDE7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAic3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgJHtpbnRlcmZhY2VOYW1lfUF0dHJz
W10gPSB7XG4iKTsKICAgICAgICAgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YSgkZGF0YU5v
ZGUsICRhdHRyaWJ1dGVzKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIik7CiAgICAgfQogCiAgICAgIyBTZXR1
cCB0YWJsZSBvZiBzdGFuZGFyZCBjYWxsYmFjayBmdW5jdGlvbnMKQEAgLTE5NDMsNyArMjA1Nyw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiBFTkQKICAgICAgICAgJG51bV9jYWxsYmFj
a3MrKzsKICAgICB9Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuIikgIGlmICRoYXNfY2Fs
bGJhY2tzOworICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIikgIGlmICRoYXNfY2FsbGJh
Y2tzOwogCiAgICAgIyBTZXR1cCBjb25zdGFudHMKICAgICBteSAkaGFzX2NvbnN0YW50cyA9IDA7
CkBAIC0xOTYyLDE0ICsyMDc2LDE0IEBAIEVORAogRU5ECiAgICAgfQogICAgIGlmICgkaGFzX2Nv
bnN0YW50cykgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9O1xuXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbXBpbGVUaW1lQ2hlY2tGb3JFbnVtc0lmTmVlZGVk
KCRkYXRhTm9kZSkpOwogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9IC8v
IG5hbWVzcGFjZSAke2ludGVyZmFjZU5hbWV9SW50ZXJuYWxcblxuIik7CiAKICAgICAjIEluIG5h
bWVzcGFjZSBXZWJDb3JlLCBhZGQgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uIGZvciAnQ2FuQmVD
b25zdHJ1Y3RlZCcuCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNh
bkJlQ29uc3RydWN0ZWQifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tQ29uc3RydWN0b3IifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhD
dXN0b21Db25zdHJ1Y3RvciJ9KSB7CisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9ICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIG15ICR2OENvbnN0cnVjdEZ1bmN0aW9u
OwogICAgICAgICBteSAkY2FsbFdpdGggPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDYWxsV2l0aCJ9OwogICAgICAgICBpZiAoJGNhbGxXaXRoIGFuZCAkY2FsbFdpdGggZXEgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7CkBAIC0xOTgzLDggKzIwOTcsMTMgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+ICR7Y2xhc3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmcKICAgICBJTkNfU1RBVFMoIkRPTS4ke2ludGVyZmFjZU5hbWV9LkNvbnRy
dWN0b3IiKTsKICAgICByZXR1cm4gVjhQcm94eTo6JHt2OENvbnN0cnVjdEZ1bmN0aW9ufTwkaW50
ZXJmYWNlTmFtZT4oYXJncywgJmluZm8pOwogfQorCiBFTkQKLSAgIH0KKyAgICB9CisKKyAgICBp
ZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSkgeworICAg
ICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLT5jb25zdHJ1Y3Rvciwg
JGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgfQogCiAgICAgbXkgJGFjY2Vzc19jaGVj
ayA9ICIiOwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0Rv
bWFpblNlY3VyaXR5In0gJiYgISgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikpIHsKQEAg
LTIwNDIsOSArMjE2MSw5IEBAIEVORAogICAgICAgICAkaW1wbEluY2x1ZGVzeyJ3dGYvVW51c2Vk
UGFyYW0uaCJ9ID0gMTsKICAgICB9CiAKLSAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2FuQmVDb25zdHJ1Y3RlZCJ9KSB7CisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RlciJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCA8PEVORCk7Ci0gICAgICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4JHtpbnRlcmZhY2VOYW1l
fTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CisgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjgke2lu
dGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKIEVORAogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQppbmRleCAwMmZhNjI3YjZj
NzFmMDc5YzYwYjYwZmJkZTZhN2Q2ZmMxNDAxZWVkLi43ZjA3ZWUyZjMyMDQwNWExOTFiZWRhYjc5
MmVhZmVhYjdhN2Q4YmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0lETFBhcnNlci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TFBhcnNlci5wbQpAQCAtMjIsNiArMjIsNyBAQAogcGFja2FnZSBJRExQYXJzZXI7CiAKIHVzZSBz
dHJpY3Q7Cit1c2UgcmUgJ2V2YWwnOwogCiB1c2UgSVBDOjpPcGVuMjsKIHVzZSBJRExTdHJ1Y3R1
cmU7CkBAIC0xMzksMjIgKzE0MCw4NyBAQCBzdWIgZHVtcEV4dGVuZGVkQXR0cmlidXRlcwogc3Vi
IHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzCiB7CiAgICAgbXkgJHN0ciA9IHNoaWZ0OwotICAgICRz
dHIgPX4gcy9cW1xzKiguKj8pXHMqXF0vJDEvZzsKKyAgICAkc3RyID1+IHMvXFtccyooLiopXHMq
XF0vJDEvZzsKIAogICAgIG15ICVhdHRycyA9ICgpOwogCi0gICAgZm9yZWFjaCBteSAkdmFsdWUg
KHNwbGl0KC9ccyosXHMqLywgJHN0cikpIHsKLSAgICAgICAgKG15ICRuYW1lLCBteSAkdmFsKSA9
IHNwbGl0KC9ccyo9XHMqLywgJHZhbHVlLCAyKTsKLQotICAgICAgICAjIEF0dHJpYnV0ZXMgd2l0
aCBubyB2YWx1ZSBhcmUgc2V0IHRvIGJlIHRydWUKLSAgICAgICAgJHZhbCA9IDEgdW5sZXNzIGRl
ZmluZWQgJHZhbDsKLSAgICAgICAgJGF0dHJzeyRuYW1lfSA9ICR2YWw7Ci0gICAgICAgIGRpZSgi
SW52YWxpZCBleHRlbmRlZCBhdHRyaWJ1dGUgbmFtZTogJyRuYW1lJ1xuIikgaWYgJG5hbWUgPX4g
L1xzLzsKKyAgICB3aGlsZSAoJHN0ciAhfiAvXlxzKiQvKSB7CisgICAgICAgICMgUGFyc2UgbmFt
ZQorICAgICAgICBpZiAoJHN0ciAhfiAvXlxzKihbXHdcZF0rKS8pIHsKKyAgICAgICAgICAgIGRp
ZSgiSW52YWxpZCBleHRlbmRlZCBhdHRyaWJ1dGU6ICckc3RyJ1xuIik7CisgICAgICAgIH0KKyAg
ICAgICAgbXkgJG5hbWUgPSAkMTsKKyAgICAgICAgJHN0ciA9fiBzL15ccyooW1x3XGRdKykvLzsK
KworICAgICAgICBpZiAoJHN0ciA9fiAvXlxzKj0vKSB7CisgICAgICAgICAgICAjIFBhcnNlICc9
JyB2YWx1ZSB8ICc9JyB2YWx1ZSAnLCcKKyAgICAgICAgICAgICRzdHIgPX4gcy9eXHMqPS8vOwor
ICAgICAgICAgICAgaWYgKCRzdHIgPX4gL15ccyooW14sXSopLD8vKSB7CisgICAgICAgICAgICAg
ICAgJGF0dHJzeyRuYW1lfSA9ICQxOworICAgICAgICAgICAgICAgICRhdHRyc3skbmFtZX0gPX4g
cy9eKC4qPylccyokLyQxLzsKKyAgICAgICAgICAgICAgICAkc3RyID1+IHMvXlxzKihbXixdKiks
Py8vOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaWUoIkludmFsaWQg
ZXh0ZW5kZWQgYXR0cmlidXRlOiAnJHN0cidcbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2lmICgkc3RyID1+IC9eXHMqXCgvKSB7CisgICAgICAgICAgICAjIFBhcnNlICcoJyBhcmd1
bWVudHMgJyknIHwgJygnIGFyZ3VtZW50cyAnKScgJywnCisgICAgICAgICAgICAkc3RyID1+IHMv
XlxzKlwoLy87CisgICAgICAgICAgICBpZiAoJHN0ciA9fiAvXihbXildKilcKSw/LykgeworICAg
ICAgICAgICAgICAgICRhdHRyc3skbmFtZX0gPSAkMTsKKyAgICAgICAgICAgICAgICAkYXR0cnN7
JG5hbWV9ID1+IHMvXiguKj8pXHMqJC8kMS87CisgICAgICAgICAgICAgICAgJHN0ciA9fiBzL14o
W14pXSopXCksPy8vOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaWUo
IkludmFsaWQgZXh0ZW5kZWQgYXR0cmlidXRlOiAnJHN0cidcbiIpOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2lmICgkc3RyID1+IC9eXHMqLD8vKSB7CisgICAgICAgICAgICAjIFBhcnNl
ICcnIHwgJywnCisgICAgICAgICAgICBpZiAoJG5hbWUgZXEgIkNvbnN0cnVjdG9yIikgeworICAg
ICAgICAgICAgICAgICRhdHRyc3skbmFtZX0gPSAiIjsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgJGF0dHJzeyRuYW1lfSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAkc3RyID1+IHMvXlxzKiw/Ly87CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBk
aWUoIkludmFsaWQgZXh0ZW5kZWQgYXR0cmlidXRlOiAnJHN0cidcbiIpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgcmV0dXJuIFwlYXR0cnM7CiB9CiAKK3N1YiBwYXJzZVBhcmFtZXRlcnMKK3sK
KyAgICBteSAkbmV3RGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkbWV0aG9kU2lnbmF0dXJlID0g
c2hpZnQ7CisKKyAgICAjIFNwbGl0IGFyZ3VtZW50cyBhdCBjb21tYXMgYnV0IG9ubHkgaWYgdGhl
IGNvbW1hCisgICAgIyBpcyBub3Qgd2l0aGluIGF0dHJpYnV0ZSBicmFja2V0cywgZXhwcmVzc2Vk
IGhlcmUKKyAgICAjIGFzIGJlaW5nIGZvbGxvd2VkIGJ5IGEgJ10nIHdpdGhvdXQgYSBwcmVjZWRp
bmcgJ1snLgorICAgICMgTm90ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGF0IGF0dHJpYnV0ZXMgZG9u
J3QgbmVzdC4KKyAgICBteSBAcGFyYW1zID0gc3BsaXQoLywoPyFbXltdKlxdKS8sICRtZXRob2RT
aWduYXR1cmUpOworICAgIGZvcmVhY2ggKEBwYXJhbXMpIHsKKyAgICAgICAgbXkgJGxpbmUgPSAk
XzsKKworICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlUGFyYW1ldGVy
U2VsZWN0b3IvOworICAgICAgICBteSAkcGFyYW1EaXJlY3Rpb24gPSAkMTsKKyAgICAgICAgbXkg
JHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDIpID8gJDIgOiAiICIpOyBjaG9w
KCRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcyk7CisgICAgICAgIG15ICRwYXJhbVR5cGUgPSAoZGVm
aW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikp
OworICAgICAgICBteSAkcGFyYW1OYW1lID0gKGRlZmluZWQoJDQpID8gJDQgOiBkaWUoIlBhcnNp
bmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKKworICAgICAgICBteSAkcGFyYW1EYXRh
Tm9kZSA9IG5ldyBkb21TaWduYXR1cmUoKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmRpcmVj
dGlvbigkcGFyYW1EaXJlY3Rpb24pOworICAgICAgICAkcGFyYW1EYXRhTm9kZS0+bmFtZSgkcGFy
YW1OYW1lKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoJHBhcmFtVHlwZSk7CisgICAg
ICAgICRwYXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJp
YnV0ZXMoJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7CisKKyAgICAgICAgbXkgJGFycmF5UmVm
ID0gJG5ld0RhdGFOb2RlLT5wYXJhbWV0ZXJzOworICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRw
YXJhbURhdGFOb2RlKTsKKworICAgICAgICBwcmludCAiICB8ICAgfD4gIFBhcmFtOyBUWVBFIFwi
JHBhcmFtVHlwZVwiIE5BTUUgXCIkcGFyYW1OYW1lXCIiIC4gCisgICAgICAgICAgICBkdW1wRXh0
ZW5kZWRBdHRyaWJ1dGVzKCJcbiAgfCAgICAgICAgICAgICAgIiwgJHBhcmFtRGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcykgLiAiXG4iIHVubGVzcyAkYmVRdWlldDsgICAgICAgICAgCisgICAg
fQorfQorCiBzdWIgUGFyc2VJbnRlcmZhY2UKIHsKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CkBA
IC0yMjAsNyArMjg2LDE3IEBAIHN1YiBQYXJzZUludGVyZmFjZQogCiAgICAgICAgICMgRmlsbCBp
biBrbm93biBwYXJ0cyBvZiB0aGUgZG9tQ2xhc3MgZGF0YXN0cnVjdHVyZSBub3cuLi4KICAgICAg
ICAgJGRhdGFOb2RlLT5uYW1lKCRpbnRlcmZhY2VOYW1lKTsKLSAgICAgICAgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJGludGVyZmFjZUV4dGVu
ZGVkQXR0cmlidXRlcykpOworICAgICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gcGFyc2VF
eHRlbmRlZEF0dHJpYnV0ZXMoJGludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlcyk7CisgICAgICAg
IGlmIChkZWZpbmVkICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSkgeworICAg
ICAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gbmV3IGRvbUZ1bmN0aW9uKCk7CisgICAgICAgICAg
ICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShuZXcgZG9tU2lnbmF0dXJlKCkpOworICAgICAgICAg
ICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPm5hbWUoIkNvbnN0cnVjdG9yIik7CisgICAgICAg
ICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRl
ZEF0dHJpYnV0ZXMpOworICAgICAgICAgICAgcGFyc2VQYXJhbWV0ZXJzKCRuZXdEYXRhTm9kZSwg
JGV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9KTsKKyAgICAgICAgICAgICRleHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSA9IDE7CisgICAgICAgICAgICAkZGF0YU5v
ZGUtPmNvbnN0cnVjdG9yKCRuZXdEYXRhTm9kZSk7CisgICAgICAgIH0KKyAgICAgICAgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlcyk7CiAKICAgICAgICAg
IyBJbmhlcml0YW5jZSBkZXRlY3Rpb24KICAgICAgICAgbXkgQGludGVyZmFjZVBhcmVudHMgPSBz
cGxpdCgvLC8sICRpbnRlcmZhY2VCYXNlKTsKQEAgLTI5OSwzMiArMzc1LDcgQEAgc3ViIFBhcnNl
SW50ZXJmYWNlCiAgICAgICAgICAgICAgICAgJG1ldGhvZEV4Y2VwdGlvbiA9fiBzL1xzKy8vZzsK
ICAgICAgICAgICAgICAgICBAeyRuZXdEYXRhTm9kZS0+cmFpc2VzRXhjZXB0aW9uc30gPSBzcGxp
dCgvLC8sICRtZXRob2RFeGNlcHRpb24pOwogCi0gICAgICAgICAgICAgICAgIyBTcGxpdCBhcmd1
bWVudHMgYXQgY29tbWFzIGJ1dCBvbmx5IGlmIHRoZSBjb21tYQotICAgICAgICAgICAgICAgICMg
aXMgbm90IHdpdGhpbiBhdHRyaWJ1dGUgYnJhY2tldHMsIGV4cHJlc3NlZCBoZXJlCi0gICAgICAg
ICAgICAgICAgIyBhcyBiZWluZyBmb2xsb3dlZCBieSBhICddJyB3aXRob3V0IGEgcHJlY2VkaW5n
ICdbJy4KLSAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIGFzc3VtZXMgdGhhdCBhdHRy
aWJ1dGVzIGRvbid0IG5lc3QuCi0gICAgICAgICAgICAgICAgbXkgQHBhcmFtcyA9IHNwbGl0KC8s
KD8hW15bXSpcXSkvLCAkbWV0aG9kU2lnbmF0dXJlKTsKLSAgICAgICAgICAgICAgICBmb3JlYWNo
KEBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJGxpbmUgPSAkXzsKLQotICAgICAg
ICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlUGFyYW1ldGVy
U2VsZWN0b3IvOwotICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1EaXJlY3Rpb24gPSAkMTsK
LSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmlu
ZWQoJDIpID8gJDIgOiAiICIpOyBjaG9wKCRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcyk7Ci0gICAg
ICAgICAgICAgICAgICAgIG15ICRwYXJhbVR5cGUgPSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgi
UGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwotICAgICAgICAgICAgICAgICAg
ICBteSAkcGFyYW1OYW1lID0gKGRlZmluZWQoJDQpID8gJDQgOiBkaWUoIlBhcnNpbmcgZXJyb3Ih
XG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLQotICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1E
YXRhTm9kZSA9IG5ldyBkb21TaWduYXR1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgJHBhcmFt
RGF0YU5vZGUtPmRpcmVjdGlvbigkcGFyYW1EaXJlY3Rpb24pOwotICAgICAgICAgICAgICAgICAg
ICAkcGFyYW1EYXRhTm9kZS0+bmFtZSgkcGFyYW1OYW1lKTsKLSAgICAgICAgICAgICAgICAgICAg
JHBhcmFtRGF0YU5vZGUtPnR5cGUoJHBhcmFtVHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICRw
YXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMo
JHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbXkgJGFy
cmF5UmVmID0gJG5ld0RhdGFOb2RlLT5wYXJhbWV0ZXJzOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEAkYXJyYXlSZWYsICRwYXJhbURhdGFOb2RlKTsKLQotICAgICAgICAgICAgICAgICAgICBw
cmludCAiICB8ICAgfD4gIFBhcmFtOyBUWVBFIFwiJHBhcmFtVHlwZVwiIE5BTUUgXCIkcGFyYW1O
YW1lXCIiIC4gCi0gICAgICAgICAgICAgICAgICAgICAgICBkdW1wRXh0ZW5kZWRBdHRyaWJ1dGVz
KCJcbiAgfCAgICAgICAgICAgICAgIiwgJHBhcmFtRGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cykgLiAiXG4iIHVubGVzcyAkYmVRdWlldDsgICAgICAgICAgCi0gICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHBhcnNlUGFyYW1ldGVycygkbmV3RGF0YU5vZGUsICRtZXRob2RTaWdu
YXR1cmUpOwogCiAgICAgICAgICAgICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFOb2RlLT5mdW5j
dGlvbnM7CiAgICAgICAgICAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkbmV3RGF0YU5vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbQppbmRl
eCBmOWRkNGFiYTFmMzQ5ZWI4OTMyNzMxZTdmMzRiNDY5YTg4NmY1YjNjLi4wZTkzNzQ5ZGExOGRi
ZjliZWY1MGEyMWM1Yjc1MDdmMzcxOWVmMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbQpAQCAtNDAsNiArNDAsNyBAQCBzdHJ1Y3QoIGRv
bUNsYXNzID0+IHsKICAgICBmdW5jdGlvbnMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ2RvbUZ1bmN0
aW9uJwogICAgIGF0dHJpYnV0ZXMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ2RvbUF0dHJpYnV0ZScg
ICAgCiAgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRyaWJ1dGVz
CisgICAgY29uc3RydWN0b3IgPT4gJyQnLCAjIENvbnN0cnVjdG9yCiB9KTsKIAogIyBVc2VkIHRv
IHJlcHJlc2VudCBkb21DbGFzcyBjb250ZW50cyAobmFtZSBvZiBtZXRob2QsIHNpZ25hdHVyZSkK
QEAgLTg3LDggKzg4LDggQEAgb3VyICRpZGxEYXRhVHlwZSA9ICdbYS16QS1aMC05XCBdJzsgICAj
IEdlbmVyaWMgZGF0YSB0eXBlIGlkZW50aWZpZXIKICMgTWFnaWMgSURMIHBhcnNpbmcgcmVndWxh
ciBleHByZXNzaW9ucwogbXkgJHN1cHBvcnRlZFR5cGVzID0gIigoPzp1bnNpZ25lZCApPyg/Omlu
dHxzaG9ydHwoPzpsb25nICk/bG9uZyl8KD86JGlkbElkTnMqKSkiOwogCi0jIFNwZWNpYWwgSURM
IG5vdGF0aW9ucwotb3VyICRleHRlbmRlZEF0dHJpYnV0ZVN5bnRheCA9ICdcW1teXV0qXF0nOyAj
IFVzZWQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMKKyMgU3BlY2lhbCBJREwgbm90YXRpb25zLiBU
aGlzIHJlZ3VsYXIgZXhwcmVzc2lvbiBleHRyYWN0cyB0aGUgc3RyaW5nIGJldHdlZW4gdGhlIGZp
cnN0IFsgYW5kIGl0cyBjb3JyZXNwb25kaW5nIF0uCitvdXIgJGV4dGVuZGVkQXR0cmlidXRlU3lu
dGF4ID0gcXIvXFtbXlxbXF1dKig/Oig/P3skSURMU3RydWN0dXJlOjpleHRlbmRlZEF0dHJpYnV0
ZVN5bnRheH0pW15cW1xdXSopKlxdL3g7ICMgVXNlZCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcwog
CiAjIFJlZ3VsYXIgZXhwcmVzc2lvbiBiYXNlZCBJREwgJ3N5bnRhY3RpY2FsIHRva2VuaXplcicg
dXNlZCBpbiB0aGUgSURMUGFyc2VyCiBvdXIgJG1vZHVsZVNlbGVjdG9yID0gJ21vZHVsZVxzKign
IC4gJGlkbElkIC4gJyopXHMqeyc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwKaW5kZXggMWYwYWExOGM4NDUwZWI1YWY0
MzhhZGMwYzFkYTAzYTQ3ODFkZDIwOS4uNTY3NDU0YTc0YmNiYTU5NWI0ZjA5OWQ0OGE5NzI3ZTVh
Y2E0ZWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RJbnRlcmZhY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0SW50ZXJmYWNlLmlkbApAQCAtMzIsNyArMzIsMTEgQEAgbW9kdWxlIHRlc3Qgewog
ICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUNvbmRpdGlvbjF8Q29uZGl0aW9u
MiwKICAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKLSAgICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dAorICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAor
ICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgc3RyMSwgaW4gW09wdGlvbmFsPUNhbGxX
aXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgc3RyMiksCisgICAgICAgIENvbnN0cnVjdFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAgVjhDb25zdHJ1Y3RvclNldHNET01XcmFw
cGVyLAorICAgICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbgogICAgIF0gVGVzdEludGVy
ZmFjZSB7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAppbmRleCAwNTk1YmJlMzBiMmUwZTc3OWVlOTE2ZjZiMzUyMDJmYmRl
MjU0YWM2Li5mYTBkODA4MmY3NDgyYzg3YWEzZWYyMDkwOWRhMjAzZGEzZWEzOWE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0z
Miw2ICszMiw3IEBACiBtb2R1bGUgdGVzdCB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgTGVn
YWN5RGVmYXVsdE9wdGlvbmFsQXJndW1lbnRzLAorICAgICAgICBDb25zdHJ1Y3RvcgogICAgIF0g
VGVzdE9iaiB7CiAgICAgICAgIC8vIEF0dHJpYnV0ZXMKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgICAgICAgICAgICByZWFkT25seUludEF0dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3Bw
CmluZGV4IGI1NjNhNDU3Yzk5NjM5MTVkMzc3ZDhkNDJlNWRlYTgyYTczMjMwMGEuLjBlYWJkM2Mz
MDI2YTIzYTk2YjBlMjVkYTY4ZGIxNTNkYzYyYjViYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3Bw
CkBAIC0yMyw4ICsyMywxMCBAQAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShD
b25kaXRpb24yKQogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJW
OEJpbmRpbmdNYWNyb3MuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUg
IlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCkBAIC00Myw5
ICs0NSwzMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50
ZXJmYWNlLkNvbnRydWN0b3IiKTsKLSAgICByZXR1cm4gVjhQcm94eTo6Y29uc3RydWN0RE9NT2Jq
ZWN0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ8VGVzdEludGVyZmFjZT4oYXJncywgJmluZm8p
OworICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZhY2UuQ29uc3RydWN0b3IiKTsKKworICAg
IGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
IkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIs
IFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5
cGVFcnJvcik7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTVFJJTkdfVE9fVjhQ
QVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0cjEsIGFyZ3NbMF0pOwor
ICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwg
c3RyMiwgYXJnc1sxXSk7CisKKyAgICBSZWZQdHI8VGVzdEludGVyZmFjZT4gb2JqID0gVGVzdElu
dGVyZmFjZTo6Y3JlYXRlKHN0cjEsIHN0cjIsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIGdv
dG8gZmFpbDsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigp
LCAmaW5mbywgb2JqLmdldCgpKTsKKyAgICBvYmotPnJlZigpOworICAgIFY4RE9NV3JhcHBlcjo6
c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KG9iai5nZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CisgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7Cisg
IGZhaWw6CisgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQorCiBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBs
YXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKQogewogICAgIGRl
c2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CkBAIC01NCw3ICs3Nyw3IEBAIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVt
cGxhdGUodjg6CiAgICAgICAgIDAsIDAsCiAgICAgICAgIDAsIDApOwogICAgIFVOVVNFRF9QQVJB
TShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNl
ZC4KLSAgICAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1
Y3RvckNhbGxiYWNrKTsKKyAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRlc3RJbnRlcmZhY2U6
OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIAogCiAgICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRl
bXBsYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5k
ZXggYzBhMWFiMTM2NjI4ZjA2OTgzMjlmYWQ5NjI4ODBiMWMwMTVlODAxYi4uZTViMmNiNGQ4NzRh
ZjFkYTZiNGMzYzY3ZGE5OGMwMDdhZWQzNGE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtNTMsNiArNTMsNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiBz
dGF0aWMgY29uc3QgQmF0Y2hlZENhbGxiYWNrIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ2Fs
bGJhY2tzW10gPSB7CiAgICAgeyJtZXRob2QiLCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcklu
dGVybmFsOjptZXRob2RDYWxsYmFja30sCiB9OworCiBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJU
ZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKIHsKICAg
ICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCBmOGY2YzJlOGMzNWQ0
NTU1MDMwYjg1ZTA2NDRmN2RmMDkyODJkMTI4Li41ZWU5MDRlNDVkMzg4YmUzYzRhNWRhNzRiM2Qy
ZjY2ODViYjBhYjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMTIyOSw2ICsxMjI5LDcgQEAgc3RhdGljIGNv
bnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdE9iakF0dHJzW10gPSB7CiAgICAgLy8gQXR0cmlidXRl
ICdoYXNoJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCiAgICAgeyJo
YXNoIiwgVGVzdE9iakludGVybmFsOjpoYXNoQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiB9OworCiBzdGF0aWMgY29uc3QgQmF0Y2hlZENhbGxiYWNrIFRlc3RPYmpDYWxsYmFja3NbXSA9
IHsKICAgICB7InZvaWRNZXRob2QiLCBUZXN0T2JqSW50ZXJuYWw6OnZvaWRNZXRob2RDYWxsYmFj
a30sCiAgICAgeyJpbnRNZXRob2QiLCBUZXN0T2JqSW50ZXJuYWw6OmludE1ldGhvZENhbGxiYWNr
fSwKQEAgLTEyNTksNiArMTI2MCw3IEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgVGVz
dE9iakNhbGxiYWNrc1tdID0gewogICAgIHsibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxB
cmciLCBUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQ2Fs
bGJhY2t9LAogICAgIHsib3ZlcmxvYWRlZE1ldGhvZCIsIFRlc3RPYmpJbnRlcm5hbDo6b3Zlcmxv
YWRlZE1ldGhvZENhbGxiYWNrfSwKIH07CisKIHN0YXRpYyBjb25zdCBCYXRjaGVkQ29uc3RhbnQg
VGVzdE9iakNvbnN0c1tdID0gewogICAgIHsiQ09OU1RfVkFMVUVfMCIsIHN0YXRpY19jYXN0PHNp
Z25lZCBpbnQ+KDApfSwKICAgICB7IkNPTlNUX1ZBTFVFXzEiLCBzdGF0aWNfY2FzdDxzaWduZWQg
aW50PigxKX0sCkBAIC0xMjczLDYgKzEyNzUsNyBAQCBzdGF0aWMgY29uc3QgQmF0Y2hlZENvbnN0
YW50IFRlc3RPYmpDb25zdHNbXSA9IHsKICAgICB7IkNPTlNUX1ZBTFVFXzE0Iiwgc3RhdGljX2Nh
c3Q8c2lnbmVkIGludD4oMHgxYWJjKX0sCiB9OwogCisKIENPTVBJTEVfQVNTRVJUKDAgPT0gVGVz
dE9iajo6Q09OU1RfVkFMVUVfMCwgVGVzdE9iakVudW1DT05TVF9WQUxVRV8wSXNXcm9uZ1VzZURv
bnRDaGVja0VudW1zKTsKIENPTVBJTEVfQVNTRVJUKDEgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVf
MSwgVGVzdE9iakVudW1DT05TVF9WQUxVRV8xSXNXcm9uZ1VzZURvbnRDaGVja0VudW1zKTsKIENP
TVBJTEVfQVNTRVJUKDIgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVfMiwgVGVzdE9iakVudW1DT05T
VF9WQUxVRV8ySXNXcm9uZ1VzZURvbnRDaGVja0VudW1zKTsKQEAgLTEyODUsNiArMTI4OCwyMiBA
QCBDT01QSUxFX0FTU0VSVCgweDAxID09IFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzEyLCBUZXN0T2Jq
RW51bUNPTlNUX1ZBTFVFXzEySXNXcm9uZwogQ09NUElMRV9BU1NFUlQoMFgyMCA9PSBUZXN0T2Jq
OjpDT05TVF9WQUxVRV8xMywgVGVzdE9iakVudW1DT05TVF9WQUxVRV8xM0lzV3JvbmdVc2VEb250
Q2hlY2tFbnVtcyk7CiBDT01QSUxFX0FTU0VSVCgweDFhYmMgPT0gVGVzdE9iajo6Q09OU1RfVkFM
VUVfMTQsIFRlc3RPYmpFbnVtQ09OU1RfVkFMVUVfMTRJc1dyb25nVXNlRG9udENoZWNrRW51bXMp
OwogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T2JqOjpjb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUg
Y2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKworCisgICAgUmVm
UHRyPFRlc3RPYmo+IG9iaiA9IFRlc3RPYmo6OmNyZWF0ZSgpOworCisgICAgVjhET01XcmFwcGVy
OjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBvYmouZ2V0KCkpOworICAgIG9i
ai0+cmVmKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmpl
Y3Qob2JqLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVy
KCkpKTsKKyAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKK30KKwogc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKIHsKICAgICBkZXNjLT5SZWFk
T25seVByb3RvdHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCmluZGV4IGEyOTZjZDBiMTU5ZDZiZTRlYjM5MWIzYTY1NmRj
ZTQ5YTA5YWRiODQuLjRiYzQxY2NmZTk1MWVjMjJjYmQ0MDFjYzEwOThjYzZmYWM5MDJjOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T2JqLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUlu
Zm8gaW5mbzsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGN1c3RvbU1ldGhvZENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGN1c3RvbU1ldGhvZFdpdGhBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYp
OworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGN1c3RvbUF0dHJBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7CiAgICAgc3RhdGljIHZvaWQgY3VzdG9tQXR0
ckFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7CiAgICAgc3RhdGlj
IGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxG
aWVsZENvdW50ICsgMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104961</attachid>
            <date>2011-08-23 21:59:35 -0700</date>
            <delta_ts>2011-08-29 23:44:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66536-20110824135934.patch</filename>
            <type>text/plain</type>
            <size>40118</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM2NzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYmMyNjQ2YjM0ZjNlZTBj
NmIwYTJiY2EyYmQ5ZTVmMGJiM2I4Y2ZjLi5kMGE2NjdiNzVkNjI1YWI4ZjM2OGFiNDQ1YmQ1OWVi
MGZiNzgyY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTEtMDgtMTggIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViIElE
TCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gSURMUGFyc2VyLnBtIGFuZCBDb2Rl
R2VuZXJhdG9yVjgucG0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjUzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBzcGVjIGlzIGhlcmU6IGh0dHA6Ly93d3cudzMub3JnL1RSL1dlYklETC8jQ29u
c3RydWN0b3IKKworICAgICAgICBbMV0gSW50cm9kdWNlZCBXZWIgSURMICdDb25zdHJ1Y3Rvcicg
ZXh0ZW5kZWQgYXR0cmlidXRlLgorICAgICAgICAtICdDb25zdHJ1Y3RvcicgZ2VuZXJhdGVzIGNv
bnN0cnVjdG9yQ2FsbGJhY2soKSB3aXRoIG5vIGFyZ3VtZW50cy4KKyAgICAgICAgLSAnQ29uc3Ry
dWN0b3IoKScgZ2VuZXJhdGVzIGNvbnN0cnVjdG9yQ2FsbGJhY2soKSB3aXRoIG5vIGFyZ3VtZW50
cy4KKyAgICAgICAgLSAnQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHN0ciwgaW4gZmxvYXQgZikn
IGdlbmVyYXRlcyBjb25zdHJ1Y3RvckNhbGxiYWNrKCkKKyAgICAgICAgd2l0aCB0d28gYXJndW1l
bnRzLCBET01TdHJpbmcgYW5kIGZsb2F0LiBXZSBjYW4gYWxzbyBzcGVjaWZ5IGV4dGVuZGVkCisg
ICAgICAgIGF0dHJpYnV0ZXMgZm9yIGVhY2ggYXJndW1lbnQsIGxpa2UgJ0NvbnN0cnVjdG9yKGlu
IERPTVN0cmluZyBzLAorICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWUs
IENvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdCknCisKKyAgICAgICAgWzJdIEFk
ZGVkICdDb25zdHJ1Y3RvcldpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCcgZXh0ZW5kZWQgYXR0
cmlidXRlLgorICAgICAgICAtIFRoZSBjb25zdHJ1Y3RvciBwYXNzZXMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCB0byBhIFhYWDo6Y3JlYXRlKCkgbWV0aG9kLAorICAgICAgICBsaWtlIFhYWDo6Y3Jl
YXRlKC4uLiwgY29udGV4dCwgLi4uKS4KKworICAgICAgICBbM10gQWRkZWQgJ1Y4Q29uc3RydWN0
b3JTZXRzRE9NV3JhcHBlcicgZXh0ZW5kZWQgYXR0cmlidXRlLgorICAgICAgICAtIFRoZSBjb25z
dHJ1Y3RvciBjYWxscyBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdCgpCisg
ICAgICAgIGluc3RlYWQgb2YgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01P
YmplY3QoKS4KKworICAgICAgICBbNF0gQWRkZWQgJ0NvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9u
JyBleHRlbmRlZCBhdHRyaWJ1dGUuCisgICAgICAgIC0gQSBwbGFjZWhvbGRlciBmb3IgRXhjZXB0
aW9uQ29kZSBpcyBwYXNzZWQgdG8gYSBYWFg6OmNyZWF0ZSgpIG1ldGhvZCwKKyAgICAgICAgbGlr
ZSBYWFg6OmNyZWF0ZSguLi4sIGVjKS4KKyAgICAgICAgLSBJZiAnQ29uc3RydWN0b3JSYWlzZXNF
eGNlcHRpb24nIGFuZCAnQ29uc3RydWN0b3JXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQnCisg
ICAgICAgIGFyZSBzcGVjaWZpZWQgYXQgdGhlIHNhbWUgdGltZSwgdGhlIGNvbnN0cnVjdG9yIGNh
bGxzIFhYWDo6Y3JlYXRlKC4uLiwgY29udGV4dCwgZWMpLgorCisgICAgICAgIE5vdGU6CisgICAg
ICAgIC0gQ29uc3RydWN0b3Igb3ZlcmxvYWRpbmcgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KKyAg
ICAgICAgLSBXZSBjYW5ub3QgeWV0IHNwZWNpZnkgW09wdGlvbmFsXSB3aXRob3V0IENhbGxXaXRo
RGVmYXVsdFZhbHVlIGZvciBhIGNvbnN0cnVjdG9yLgorCisgICAgICAgIFRlc3Q6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAorICAgICAgICAg
ICAgICBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAo
R2VuZXJhdGVIZWFkZXIpOiBHZW5lcmF0ZXMgYSBoZWFkZXIgZm9yIGNvbnN0cnVjdG9yQ2FsbGJh
Y2soKSwgaWYgJ0NvbnN0cnVjdG9yJyBpcyBzcGVjaWZpZWQuCisgICAgICAgIChHZW5lcmF0ZUZ1
bmN0aW9uQ2FsbGJhY2spOiBVc2VzIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygpIGFuZCBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygpLgorICAgICAgICAoR2VuZXJhdGVBcmd1bWVudHNDb3Vu
dENoZWNrKTogR2VuZXJhdGVzIGEgY29kZSBmb3IgY2hlY2tpbmcgdGhlIG51bWJlciBvZiBhcmd1
bWVudHMuIFRoaXMgd2FzIGEgY29kZSBleGlzdGluZyBpbiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJh
Y2soKS4gVGhpcyBwYXRjaCBqdXN0IG1vdmVzIHRoZSBjb2RlIGludG8gdGhpcyBtZXRob2QuCisg
ICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6IEdlbmVyYXRlcyBhIGNvZGUgZm9yIGNo
ZWNraW5nIHBhc3NlZCBhcmd1bWVudHMgYW5kIGNvbnZlcnRpbmcgdGhlbSBpbnRvIFdlYkNvcmUg
dmFsdWVzLiBUaGlzIHdhcyBhIGNvZGUgZXhpc3RpbmcgaW4gR2VuZXJhdGVGdW5jdGlvbkNhbGxi
YWNrKCkuIFRoaXMgcGF0Y2gganVzdCBtb3ZlcyB0aGUgY29kZSBpbnRvIHRoaXMgbWV0aG9kLgor
ICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKTogR2VuZXJhdGVzIGEgY29kZSBv
ZiBjb25zdHJ1Y3RvckNhbGxiYWNrKCkuCisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KTogSnVzdCBhZGRlZCBhIG5ldyBsaW5lIGZvciByZWFkYWJpbGl0eS4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1
dGVzKTogUHJldmlvdXNseSwgb25seSBhIHN0cmluZyBpbiB0aGUgIkE9QiwgQywgRCwgRT1GIiBm
b3JtYXQgY2FuIGJlIHBhcnNlZC4gVGhpcyBwYXRjaCBlbmFibGVzIHRvIHBhcnNlIGEgc3RyaW5n
IGluIHRoZSAiQT1CLCBDLCBELCBFPUYsIEcoaW4gRE9NU3RyaW5nIHMsIGluIFtILCBJLCBKXSBE
T01TdHJpbmcgdCkiIGZvcm1hdC4KKyAgICAgICAgKHBhcnNlUGFyYW1ldGVycyk6IFRoaXMgd2Fz
IGEgY29kZSBleGlzdGluZyBpbiBQYXJzZUludGVyZmFjZSgpLiBUaGlzIHBhdGNoIGp1c3QgbW92
ZXMgdGhlIGNvZGUgaW50byB0aGlzIG1ldGhvZC4KKyAgICAgICAgKFBhcnNlSW50ZXJmYWNlKTog
VXNlcyBwYXJzZVBhcmFtZXRlcnMoKS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFN0
cnVjdHVyZS5wbTogQWRkZWQgZG9tQ2xhc3N7Y29uc3RydWN0b3J9LiBDaGFuZ2VkIHRoZSByZWd1
bGFyIGV4cHJlc3Npb24gdG8gZXh0cmFjdCB0aGUgbGlzdCBvZiBleHRlbmRlZCBhdHRyaWJ1dGVz
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbDogQWRk
ZWQgYWxsIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGVzIHRoYXQgdGhpcyBwYXRjaCBpcyBnb2luZyB0
byBpbnRyb2R1Y2UuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
OiBBZGRlZCAnQ29uc3RydWN0b3InLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RJbnRlcmZhY2UuY3BwOiBVcGRhdGVkIHRoZSB0ZXN0IHJlc3VsdC4KKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
OiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNw
cDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaDogRGl0
dG8uCisKIDIwMTEtMDgtMjMgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjI0NApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRl
eCA2NWEwNjhjMzE2N2ZmZGZhYTIzZjBkNTk4ZDU1MjY4YzA1NDljMDQzLi5hN2E5ODNjZGVmYzFk
OGI1OTQ3NWU2NTU3N2RiOGM1OTEwMDJmYTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzQ5LDcgKzM0OSw3IEBAIEVO
RAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSkgeworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCA8PEVORCk7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpOwogRU5ECkBAIC0xMjQ3LDI4ICsxMjQ3
LDggQEAgRU5ECiAKICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0
ZXJzfTsKIAotICAgIG15ICRyZXF1aXJlc0FsbEFyZ3VtZW50czsKLSAgICBteSAkcmVxdWlyZXNB
bGxBcmd1bWVudHNEZWZhdWx0ID0gIiI7Ci0gICAgaWYgKCEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJMZWdhY3lEZWZhdWx0T3B0aW9uYWxBcmd1bWVudHMifSkgewotICAgICAgICAk
cmVxdWlyZXNBbGxBcmd1bWVudHNEZWZhdWx0ID0gIlJhaXNlIjsKLSAgICB9Ci0gICAgJHJlcXVp
cmVzQWxsQXJndW1lbnRzID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJSZXF1aXJlc0FsbEFyZ3VtZW50cyJ9IHx8ICRyZXF1aXJlc0FsbEFyZ3VtZW50c0RlZmF1
bHQ7Ci0gICAgaWYgKCRyZXF1aXJlc0FsbEFyZ3VtZW50cykgewotICAgICAgICBteSAkbnVtTWFu
ZGF0b3J5UGFyYW1zID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAgICBmb3JlYWNo
IG15ICRwYXJhbSAocmV2ZXJzZShAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pKSB7Ci0gICAgICAg
ICAgICBpZiAoJHBhcmFtLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewotICAg
ICAgICAgICAgICAgICRudW1NYW5kYXRvcnlQYXJhbXMtLTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgbGFzdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgJG51bU1h
bmRhdG9yeVBhcmFtcylcbiIpOwotICAgICAgICBpZiAoJHJlcXVpcmVzQWxsQXJndW1lbnRzIGVx
ICJSYWlzZSIpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKFwiTm90IGVub3VnaCBhcmd1bWVudHNcIiwgVjhQcm94eTo6VHlw
ZUVycm9yKTtcbiIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7
Ci0gICAgICAgIH0KLSAgICB9CisgICAgbXkgJGFyZ3VtZW50c0NvdW50Q2hlY2tTdHJpbmcgPSBH
ZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJGZ1bmN0aW9uLCAkZGF0YU5vZGUpOworICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICRhcmd1bWVudHNDb3VudENoZWNrU3RyaW5nKTsKIAogICAg
IG15ICgkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSwgJHN2Z05hdGl2ZVR5
cGUpID0gR2V0U1ZHUHJvcGVydHlUeXBlcygkaW1wbENsYXNzTmFtZSk7CiAKQEAgLTEzNDAsNiAr
MTMyMCw2MiBAQCBFTkQKIEVORAogICAgIH0KIAorICAgIG15ICgkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcsICRwYXJhbUluZGV4KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRmdW5jdGlvbiwgJGlt
cGxDbGFzc05hbWUpOworICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICRwYXJhbWV0ZXJDaGVj
a1N0cmluZyk7CisKKyAgICAjIEJ1aWxkIHRoZSBmdW5jdGlvbiBjYWxsIHN0cmluZy4KKyAgICBt
eSAkY2FsbFN0cmluZyA9IEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCRmdW5jdGlvbiwgJHBh
cmFtSW5kZXgsICIgICAgIiwgJGltcGxDbGFzc05hbWUpOworICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIkY2FsbFN0cmluZyIpOworCisgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgfVxuIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgZmFpbDpcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7XG4iKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCk7XG4iKTsKKyAgICB9CisKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifVxuXG4i
KTsKK30KKworc3ViIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaworeworICAgIG15ICRmdW5j
dGlvbiA9IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgbXkgJGFyZ3Vt
ZW50c0NvdW50Q2hlY2tTdHJpbmcgPSAiIjsKKyAgICBteSAkcmVxdWlyZXNBbGxBcmd1bWVudHM7
CisgICAgbXkgJHJlcXVpcmVzQWxsQXJndW1lbnRzRGVmYXVsdCA9ICIiOworICAgIGlmICghJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVnYWN5RGVmYXVsdE9wdGlvbmFsQXJndW1l
bnRzIn0pIHsKKyAgICAgICAgJHJlcXVpcmVzQWxsQXJndW1lbnRzRGVmYXVsdCA9ICJSYWlzZSI7
CisgICAgfQorICAgICRyZXF1aXJlc0FsbEFyZ3VtZW50cyA9ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVxdWlyZXNBbGxBcmd1bWVudHMifSB8fCAkcmVxdWly
ZXNBbGxBcmd1bWVudHNEZWZhdWx0OworICAgIGlmICgkcmVxdWlyZXNBbGxBcmd1bWVudHMpIHsK
KyAgICAgICAgbXkgJG51bU1hbmRhdG9yeVBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJz
fTsKKyAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKHJldmVyc2UoQHskZnVuY3Rpb24tPnBhcmFt
ZXRlcnN9KSkgeworICAgICAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik9wdGlvbmFsIn0pIHsKKyAgICAgICAgICAgICAgICAkbnVtTWFuZGF0b3J5UGFyYW1zLS07Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxhc3Q7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRudW1NYW5kYXRvcnlQYXJhbXMgPj0gMSkgeworICAg
ICAgICAgICAgJGFyZ3VtZW50c0NvdW50Q2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJncy5MZW5n
dGgoKSA8ICRudW1NYW5kYXRvcnlQYXJhbXMpXG4iOworICAgICAgICAgICAgaWYgKCRyZXF1aXJl
c0FsbEFyZ3VtZW50cyBlcSAiUmFpc2UiKSB7CisgICAgICAgICAgICAgICAgJGFyZ3VtZW50c0Nv
dW50Q2hlY2tTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXCJOb3QgZW5vdWdo
IGFyZ3VtZW50c1wiLCBWOFByb3h5OjpUeXBlRXJyb3IpO1xuIjsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgJGFyZ3VtZW50c0NvdW50Q2hlY2tTdHJpbmcgLj0gIiAgICAg
ICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gJGFyZ3VtZW50c0NvdW50Q2hlY2tTdHJpbmc7Cit9
CisKK3N1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaworeworICAgIG15ICRmdW5jdGlvbiA9IHNo
aWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisKKyAgICBteSAkcGFyYW1ldGVy
Q2hlY2tTdHJpbmcgPSAiIjsKICAgICBteSAkcGFyYW1JbmRleCA9IDA7CiAgICAgZm9yZWFjaCBt
eSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgVHJhbnNs
YXRlUGFyYW1ldGVyKCRwYXJhbWV0ZXIpOwpAQCAtMTM1MiwxMCArMTM4OCwxMCBAQCBFTkQKICAg
ICAgICAgbXkgJG9wdGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9w
dGlvbmFsIn07ICAgICAgICAKICAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUg
IkNhbGxXaXRoRGVmYXVsdFZhbHVlIiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNhbGxiYWNrIn0pIHsKICAgICAgICAgICAgICMgR2VuZXJhdGUgZWFybHkgY2FsbCBpZiB0
aGVyZSBhcmUgbm90IGVub3VnaCBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFyYW1JbmRleCkge1xuIik7
CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJncy5MZW5n
dGgoKSA8PSAkcGFyYW1JbmRleCkge1xuIjsKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNhbGwg
PSBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygkZnVuY3Rpb24sICRwYXJhbUluZGV4LCAiICAg
ICIgeCAyLCAkaW1wbENsYXNzTmFtZSk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAkZnVuY3Rpb25DYWxsKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgfVxuIik7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gJGZ1bmN0
aW9uQ2FsbDsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIH1cbiI7
CiAgICAgICAgIH0KIAogICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9
IDE7CkBAIC0xMzY0LDMzICsxNDAwLDMzIEBAIEVORAogICAgICAgICAgICAgbXkgJGNsYXNzTmFt
ZSA9IEdldENhbGxiYWNrQ2xhc3NOYW1lKCRwYXJhbWV0ZXItPnR5cGUpOwogICAgICAgICAgICAg
JGltcGxJbmNsdWRlc3siJGNsYXNzTmFtZS5oIn0gPSAxOwogICAgICAgICAgICAgaWYgKCRwYXJh
bWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBSZWZQdHI8IiAuICRwYXJhbWV0ZXItPnR5
cGUgLiAiPiAkcGFyYW1ldGVyTmFtZTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAkcGFyYW1JbmRleCAmJiAhYXJn
c1skcGFyYW1JbmRleF0tPklzTnVsbCgpICYmICFhcmdzWyRwYXJhbUluZGV4XS0+SXNVbmRlZmlu
ZWQoKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAg
ICAgICAgaWYgKCFhcmdzWyRwYXJhbUluZGV4XS0+SXNPYmplY3QoKSlcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihUWVBFX01JU01BVENIX0VSUik7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiICAgICAgICAkcGFyYW1ldGVyTmFtZSA9ICR7Y2xhc3NOYW1lfTo6Y3Jl
YXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpO1xuIik7
Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9XG4iKTsKKyAg
ICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBSZWZQdHI8IiAuICRw
YXJhbWV0ZXItPnR5cGUgLiAiPiAkcGFyYW1ldGVyTmFtZTtcbiI7CisgICAgICAgICAgICAgICAg
JHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAkcGFyYW1J
bmRleCAmJiAhYXJnc1skcGFyYW1JbmRleF0tPklzTnVsbCgpICYmICFhcmdzWyRwYXJhbUluZGV4
XS0+SXNVbmRlZmluZWQoKSkge1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tT
dHJpbmcgLj0gIiAgICAgICAgaWYgKCFhcmdzWyRwYXJhbUluZGV4XS0+SXNPYmplY3QoKSlcbiI7
CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7XG4iOworICAgICAgICAgICAgICAg
ICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICAkcGFyYW1ldGVyTmFtZSA9ICR7Y2xh
c3NOYW1lfTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCBnZXRTY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAg
ICB9XG4iOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9ICRwYXJhbUluZGV4IHx8ICFh
cmdzWyRwYXJhbUluZGV4XS0+SXNPYmplY3QoKSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFU
Q0hfRVJSKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgUmVmUHRyPCIgLiAkcGFyYW1ldGVyLT50eXBlIC4gIj4gJHBhcmFtZXRlck5hbWUgPSAke2Ns
YXNzTmFtZX06OmNyZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTtcbiIpOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAi
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9ICRwYXJhbUluZGV4IHx8ICFhcmdzWyRwYXJhbUluZGV4
XS0+SXNPYmplY3QoKSlcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTtcbiI7Cisg
ICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgUmVmUHRyPCIgLiAk
cGFyYW1ldGVyLT50eXBlIC4gIj4gJHBhcmFtZXRlck5hbWUgPSAke2NsYXNzTmFtZX06OmNyZWF0
ZShhcmdzWyRwYXJhbUluZGV4XSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTtcbiI7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYgKCRwYXJhbWV0ZXItPnR5cGUgZXEgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSIpIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIn0gPSAxOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICBib29sICR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdyA9IGZhbHNlO1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVUeXBlICRwYXJhbWV0
ZXJOYW1lID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1skcGFyYW1JbmRleF0s
ICR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdyk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgaWYgKCR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdylcbiIpOwotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTtcbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAg
Ym9vbCAke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cgPSBmYWxzZTtcbiI7CisgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAkbmF0aXZlVHlwZSAkcGFyYW1ldGVyTmFtZSA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCAke3BhcmFt
ZXRlck5hbWV9RGlkVGhyb3cpO1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmlu
ZyAuPSAiICAgIGlmICgke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cpXG4iOworICAgICAgICAgICAg
JHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
XG4iOwogICAgICAgICB9IGVsc2lmIChUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBhcmFtZXRlcikp
IHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUg
JHBhcmFtZXRlck5hbWUgPSAiIC4KLSAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0aXZlKCRw
YXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpIC4gIjtcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoVU5MSUtFTFkoISRwYXJhbWV0ZXJOYW1lKSkg
e1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICBlYyA9
IFRZUEVfTUlTTUFUQ0hfRVJSO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgICAgICBnb3RvIGZhaWw7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgfVxuIik7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcg
Lj0gIiAgICAkbmF0aXZlVHlwZSAkcGFyYW1ldGVyTmFtZSA9ICIgLgorICAgICAgICAgICAgICAg
ICBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5kZXhdIikgLiAiO1xu
IjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChVTkxJS0VM
WSghJHBhcmFtZXRlck5hbWUpKSB7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3Ry
aW5nIC49ICIgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7XG4iOworICAgICAgICAgICAg
JHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGdvdG8gZmFpbDtcbiI7CisgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAgICAgICB9IGVsc2lm
ICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLykgewogICAgICAgICAgICAgbXkgJHZhbHVl
ID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpOwotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gQ29udmVydFRvVjhQYXJh
bWV0ZXIoJHBhcmFtZXRlciwgJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4g
IlxuIik7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAiIC4gQ29u
dmVydFRvVjhQYXJhbWV0ZXIoJHBhcmFtZXRlciwgJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1l
LCAkdmFsdWUpIC4gIlxuIjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IlY4QmluZGluZ01hY3Jvcy5oIn0gPSAxOwogICAgICAgICAgICAgIyBJZiB0aGUgIlN0
cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUg
YXJndW1lbnQncyB0eXBlIGlzIGFuCkBAIC0xMzk5LDQyICsxNDM1LDEyMCBAQCBFTkQKICAgICAg
ICAgICAgICMgUGVyIHRoZSBXZWIgSURMIGFuZCBFQ01BU2NyaXB0IHNwZWNpZmljYXRpb25zLCBp
bmNvbWluZyB2YWx1ZXMgY2FuIGFsd2F5cyBiZSBjb252ZXJ0ZWQKICAgICAgICAgICAgICMgdG8g
Ym90aCBzdHJpbmdzIGFuZCBudW1iZXJzLCBzbyBkbyBub3QgdGhyb3cgVHlwZUVycm9yIGlmIHRo
ZSBhcmd1bWVudCBpcyBvZiB0aGVzZQogICAgICAgICAgICAgIyB0eXBlcy4KLSAgICAgICAgICAg
IGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN0cmljdFR5
cGVDaGVja2luZyJ9KSB7CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUgJiYg
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTdHJpY3RUeXBlQ2hl
Y2tpbmcifSkgewogICAgICAgICAgICAgICAgIG15ICRhcmdWYWx1ZSA9ICJhcmdzWyRwYXJhbUlu
ZGV4XSI7CiAgICAgICAgICAgICAgICAgbXkgJGFyZ1R5cGUgPSBHZXRUeXBlRnJvbVNpZ25hdHVy
ZSgkcGFyYW1ldGVyKTsKICAgICAgICAgICAgICAgICBpZiAoSXNXcmFwcGVyVHlwZSgkYXJnVHlw
ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBp
ZiAoYXJncy5MZW5ndGgoKSA+ICRwYXJhbUluZGV4ICYmICFpc1VuZGVmaW5lZE9yTnVsbCgkYXJn
VmFsdWUpICYmICFWOCR7YXJnVHlwZX06Okhhc0luc3RhbmNlKCRhcmdWYWx1ZSkpIHtcbiIpOwot
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICBWOFBy
b3h5Ojp0aHJvd1R5cGVFcnJvcigpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigp
O1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
fVxuIik7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
IGlmIChhcmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXggJiYgIWlzVW5kZWZpbmVkT3JOdWxsKCRh
cmdWYWx1ZSkgJiYgIVY4JHthcmdUeXBlfTo6SGFzSW5zdGFuY2UoJGFyZ1ZhbHVlKSkge1xuIjsK
KyAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIFY4
UHJveHk6OnRocm93VHlwZUVycm9yKCk7XG4iOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9y
KCk7XG4iOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAg
ICB9XG4iOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgRVhDRVBUSU9OX0JMT0NLKCRuYXRpdmVUeXBlLCAk
cGFyYW1ldGVyTmFtZSwgIiAuCi0gICAgICAgICAgICAgICAgIEpTVmFsdWVUb05hdGl2ZSgkcGFy
YW1ldGVyLCAiYXJnc1skcGFyYW1JbmRleF0iKSAuICIpO1xuIik7CisgICAgICAgICAgICAkcGFy
YW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBFWENFUFRJT05fQkxPQ0soJG5hdGl2ZVR5cGUsICRw
YXJhbWV0ZXJOYW1lLCAiIC4KKyAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0aXZlKCRwYXJh
bWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpIC4gIik7XG4iOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc0luZGV4In0pIHsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKFVOTElLRUxZKCRwYXJh
bWV0ZXJOYW1lIDwgMCkpIHtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjtcbiIpOwotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICAgICAgZ290byBmYWlsO1xuIik7Ci0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOworICAgICAgICAgICAgJHBhcmFtZXRl
ckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKFVOTElLRUxZKCRwYXJhbWV0ZXJOYW1lIDwgMCkpIHtc
biI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgZWMgPSBJ
TkRFWF9TSVpFX0VSUjtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0g
IiAgICAgICAgZ290byBmYWlsO1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmlu
ZyAuPSAiICAgIH1cbiI7CiAgICAgICAgIH0KIAogICAgICAgICAkcGFyYW1JbmRleCsrOwogICAg
IH0KKyAgICByZXR1cm4gKCRwYXJhbWV0ZXJDaGVja1N0cmluZywgJHBhcmFtSW5kZXgpOworfQog
Ci0gICAgIyBCdWlsZCB0aGUgZnVuY3Rpb24gY2FsbCBzdHJpbmcuCi0gICAgbXkgJGNhbGxTdHJp
bmcgPSBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygkZnVuY3Rpb24sICRwYXJhbUluZGV4LCAi
ICAgICIsICRpbXBsQ2xhc3NOYW1lKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiJGNh
bGxTdHJpbmciKTsKK3N1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2sKK3sKKyAgICBteSAk
ZnVuY3Rpb24gPSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkaW1w
bENsYXNzTmFtZSA9IHNoaWZ0OworCisgICAgbXkgJHJhaXNlc0V4Y2VwdGlvbnMgPSBAeyRmdW5j
dGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uIn0pIHsKKyAgICAgICAgJHJhaXNl
c0V4Y2VwdGlvbnMgPSAxOworICAgIH0KKyAgICBpZiAoISRyYWlzZXNFeGNlcHRpb25zKSB7Cisg
ICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7
CisgICAgICAgICAgICBpZiAoKCEkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2Fs
bGJhY2sifSBhbmQgVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRwYXJhbWV0ZXIpKSBvciAkcGFyYW1l
dGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNJbmRleCJ9KSB7CisgICAgICAgICAgICAgICAg
JHJhaXNlc0V4Y2VwdGlvbnMgPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgbXkgQGV4dHJhQXJndW1lbnRMaXN0OworICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVO
RCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJE
T00uJHtpbXBsQ2xhc3NOYW1lfS5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29u
c3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6VHlwZUVy
cm9yKTsKK0VORAorCisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOworICAgIG15ICRhcmd1
bWVudHNDb3VudENoZWNrU3RyaW5nID0gR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCRmdW5j
dGlvbiwgJGRhdGFOb2RlKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgJGFyZ3VtZW50c0NvdW50
Q2hlY2tTdHJpbmcpOwogCiAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgfVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgZmFpbDpcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7XG4iKTsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG4i
KTsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29kZS5oIn0gPSAxOworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CiAgICAgfQogCi0gICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIn1cblxuIik7CisgICAgbXkgKCRwYXJhbWV0ZXJDaGVja1N0cmluZywgJHBh
cmFtSW5kZXgpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soJGZ1bmN0aW9uLCAkaW1wbENsYXNz
TmFtZSk7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICRwYXJhbWV0ZXJDaGVja1N0cmluZyk7CisK
KyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JXaXRo
In0gJiYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JXaXRoIn0g
ZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7CisgICAgICAgIHB1c2goQGV4dHJhQXJndW1l
bnRMaXN0LCAiY29udGV4dCIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwor
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCIke2ltcGxDbGFzc05hbWV9IGNvbnN0cnVjdG9yJ3MgYXNzb2NpYXRlZCBjb250ZXh0IGlzIG5v
dCBhdmFpbGFibGUiLCBWOFByb3h5OjpSZWZlcmVuY2VFcnJvcik7CitFTkQKKyAgICB9CisKKyAg
ICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNF
eGNlcHRpb24ifSkgeworICAgICAgICBwdXNoKEBleHRyYUFyZ3VtZW50TGlzdCwgImVjIik7Cisg
ICAgfQorCisgICAgbXkgQGFyZ3VtZW50TGlzdDsKKyAgICBteSAkaW5kZXggPSAwOworICAgIGZv
cmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CisgICAgICAg
IGxhc3QgaWYgJGluZGV4IGVxICRwYXJhbUluZGV4OworICAgICAgICBwdXNoKEBhcmd1bWVudExp
c3QsICRwYXJhbWV0ZXItPm5hbWUpOworICAgICAgICAkaW5kZXgrKzsKKyAgICB9CisKKyAgICBt
eSAkYXJndW1lbnRTdHJpbmcgPSBqb2luKCIsICIsIEBhcmd1bWVudExpc3QsIEBleHRyYUFyZ3Vt
ZW50TGlzdCk7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOworICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFJlZlB0cjwke2ltcGxDbGFzc05hbWV9PiBvYmogPSAke2ltcGxDbGFzc05h
bWV9OjpjcmVhdGUoJHthcmd1bWVudFN0cmluZ30pO1xuIik7CisKKyAgICBpZiAoJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24ifSkgewor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoZWMpXG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIGdvdG8gZmFpbDtcbiIpOworICAgIH0KKworICAgIG15
ICRET01PYmplY3QgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOENvbnN0cnVj
dG9yU2V0c0RPTVdyYXBwZXIifSA/ICJET01PYmplY3QiIDogIkFjdGl2ZURPTU9iamVjdCI7Cisg
ICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9N
V3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgb2JqLmdldCgpKTsKKyAgICBvYmotPnJlZigp
OworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtET01PYmplY3R9KG9iai5nZXQo
KSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CisgICAg
cmV0dXJuIGFyZ3MuSG9sZGVyKCk7CitFTkQKKworICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykg
eworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgZmFpbDpcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7XG4iKTsKKyAgICB9CisK
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAi
XG4iKTsKIH0KIAogc3ViIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEKQEAgLTE4OTYsNyAr
MjAxMCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgaWYgKEBkaXNhbGxvd3NT
aGFkb3dpbmcpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgQmF0
Y2hlZEF0dHJpYnV0ZSBzaGFkb3dBdHRyc1tdID0ge1xuIik7CiAgICAgICAgIEdlbmVyYXRlQmF0
Y2hlZEF0dHJpYnV0ZURhdGEoJGRhdGFOb2RlLCBcQGRpc2FsbG93c1NoYWRvd2luZyk7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn07XG5cbiIpOwogICAgIH0KIAogICAgIG15ICRoYXNfYXR0cmlidXRlcyA9IDA7CkBAIC0x
OTA0LDcgKzIwMTgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAkaGFz
X2F0dHJpYnV0ZXMgPSAxOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25z
dCBCYXRjaGVkQXR0cmlidXRlICR7aW50ZXJmYWNlTmFtZX1BdHRyc1tdID0ge1xuIik7CiAgICAg
ICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGRhdGFOb2RlLCAkYXR0cmlidXRlcyk7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcbiIpOworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn07XG5cbiIpOwogICAgIH0KIAogICAgICMgU2V0dXAgdGFibGUgb2Ygc3RhbmRh
cmQgY2FsbGJhY2sgZnVuY3Rpb25zCkBAIC0xOTQzLDcgKzIwNTcsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogRU5ECiAgICAgICAgICRudW1fY2FsbGJhY2tzKys7CiAgICAgfQotICAg
IHB1c2goQGltcGxDb250ZW50LCAifTtcbiIpICBpZiAkaGFzX2NhbGxiYWNrczsKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn07XG5cbiIpICBpZiAkaGFzX2NhbGxiYWNrczsKIAogICAgICMgU2V0
dXAgY29uc3RhbnRzCiAgICAgbXkgJGhhc19jb25zdGFudHMgPSAwOwpAQCAtMTk2MiwxNCArMjA3
NiwxNCBAQCBFTkQKIEVORAogICAgIH0KICAgICBpZiAoJGhhc19jb25zdGFudHMpIHsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifTtcblxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkY29kZUdlbmVyYXRvci0+
R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRlZCgkZGF0YU5vZGUpKTsKICAg
ICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifSAvLyBuYW1lc3BhY2UgJHtpbnRl
cmZhY2VOYW1lfUludGVybmFsXG5cbiIpOwogCiAgICAgIyBJbiBuYW1lc3BhY2UgV2ViQ29yZSwg
YWRkIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbiBmb3IgJ0NhbkJlQ29uc3RydWN0ZWQnLgotICAg
IGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0g
JiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0g
JiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3Ii
fSkgeworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0
cnVjdGVkIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0
cnVjdG9yIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29u
c3RydWN0b3IifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0
b3IifSkgewogICAgICAgICBteSAkdjhDb25zdHJ1Y3RGdW5jdGlvbjsKICAgICAgICAgbXkgJGNh
bGxXaXRoID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKICAg
ICAgICAgaWYgKCRjYWxsV2l0aCBhbmQgJGNhbGxXaXRoIGVxICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0IikgewpAQCAtMTk4Myw4ICsyMDk3LDEzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2Ns
YXNzTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAg
ICAgSU5DX1NUQVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS5Db250cnVjdG9yIik7CiAgICAgcmV0
dXJuIFY4UHJveHk6OiR7djhDb25zdHJ1Y3RGdW5jdGlvbn08JGludGVyZmFjZU5hbWU+KGFyZ3Ms
ICZpbmZvKTsKIH0KKwogRU5ECi0gICB9CisgICAgfQorCisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAgR2VuZXJhdGVDb25z
dHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZS0+Y29uc3RydWN0b3IsICRkYXRhTm9kZSwgJGludGVy
ZmFjZU5hbWUpOworICAgIH0KIAogICAgIG15ICRhY2Nlc3NfY2hlY2sgPSAiIjsKICAgICBpZiAo
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tEb21haW5TZWN1cml0eSJ9ICYm
ICEoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpKSB7CkBAIC0yMDQyLDkgKzIxNjEsOSBA
QCBFTkQKICAgICAgICAgJGltcGxJbmNsdWRlc3sid3RmL1VudXNlZFBhcmFtLmgifSA9IDE7CiAg
ICAgfQogCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNv
bnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21D
b25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29u
c3RydWN0ZWQifSkgeworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
YW5CZUNvbnN0cnVjdGVkIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1
c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29u
c3RydWN0ZXIifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgICAg
ICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOCR7aW50ZXJmYWNlTmFtZX06OmNvbnN0cnVjdG9yQ2Fs
bGJhY2spOworICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4JHtpbnRlcmZhY2VOYW1lfTo6Y29u
c3RydWN0b3JDYWxsYmFjayk7CiBFTkQKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMDJmYTYyN2I2YzcxZjA3OWM2MGI2MGZiZGU2
YTdkNmZjMTQwMWVlZC4uN2YwN2VlMmYzMjA0MDVhMTkxYmVkYWI3OTJlYWZlYWI3YTdkOGJkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTIy
LDYgKzIyLDcgQEAKIHBhY2thZ2UgSURMUGFyc2VyOwogCiB1c2Ugc3RyaWN0OwordXNlIHJlICdl
dmFsJzsKIAogdXNlIElQQzo6T3BlbjI7CiB1c2UgSURMU3RydWN0dXJlOwpAQCAtMTM5LDIyICsx
NDAsODcgQEAgc3ViIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMKIHN1YiBwYXJzZUV4dGVuZGVkQXR0
cmlidXRlcwogewogICAgIG15ICRzdHIgPSBzaGlmdDsKLSAgICAkc3RyID1+IHMvXFtccyooLio/
KVxzKlxdLyQxL2c7CisgICAgJHN0ciA9fiBzL1xbXHMqKC4qKVxzKlxdLyQxL2c7CiAKICAgICBt
eSAlYXR0cnMgPSAoKTsKIAotICAgIGZvcmVhY2ggbXkgJHZhbHVlIChzcGxpdCgvXHMqLFxzKi8s
ICRzdHIpKSB7Ci0gICAgICAgIChteSAkbmFtZSwgbXkgJHZhbCkgPSBzcGxpdCgvXHMqPVxzKi8s
ICR2YWx1ZSwgMik7Ci0KLSAgICAgICAgIyBBdHRyaWJ1dGVzIHdpdGggbm8gdmFsdWUgYXJlIHNl
dCB0byBiZSB0cnVlCi0gICAgICAgICR2YWwgPSAxIHVubGVzcyBkZWZpbmVkICR2YWw7Ci0gICAg
ICAgICRhdHRyc3skbmFtZX0gPSAkdmFsOwotICAgICAgICBkaWUoIkludmFsaWQgZXh0ZW5kZWQg
YXR0cmlidXRlIG5hbWU6ICckbmFtZSdcbiIpIGlmICRuYW1lID1+IC9ccy87CisgICAgd2hpbGUg
KCRzdHIgIX4gL15ccyokLykgeworICAgICAgICAjIFBhcnNlIG5hbWUKKyAgICAgICAgaWYgKCRz
dHIgIX4gL15ccyooW1x3XGRdKykvKSB7CisgICAgICAgICAgICBkaWUoIkludmFsaWQgZXh0ZW5k
ZWQgYXR0cmlidXRlOiAnJHN0cidcbiIpOworICAgICAgICB9CisgICAgICAgIG15ICRuYW1lID0g
JDE7CisgICAgICAgICRzdHIgPX4gcy9eXHMqKFtcd1xkXSspLy87CisKKyAgICAgICAgaWYgKCRz
dHIgPX4gL15ccyo9LykgeworICAgICAgICAgICAgIyBQYXJzZSAnPScgdmFsdWUgfCAnPScgdmFs
dWUgJywnCisgICAgICAgICAgICAkc3RyID1+IHMvXlxzKj0vLzsKKyAgICAgICAgICAgIGlmICgk
c3RyID1+IC9eXHMqKFteLF0qKSw/LykgeworICAgICAgICAgICAgICAgICRhdHRyc3skbmFtZX0g
PSAkMTsKKyAgICAgICAgICAgICAgICAkYXR0cnN7JG5hbWV9ID1+IHMvXiguKj8pXHMqJC8kMS87
CisgICAgICAgICAgICAgICAgJHN0ciA9fiBzL15ccyooW14sXSopLD8vLzsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGllKCJJbnZhbGlkIGV4dGVuZGVkIGF0dHJpYnV0
ZTogJyRzdHInXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNpZiAoJHN0ciA9fiAv
XlxzKlwoLykgeworICAgICAgICAgICAgIyBQYXJzZSAnKCcgYXJndW1lbnRzICcpJyB8ICcoJyBh
cmd1bWVudHMgJyknICcsJworICAgICAgICAgICAgJHN0ciA9fiBzL15ccypcKC8vOworICAgICAg
ICAgICAgaWYgKCRzdHIgPX4gL14oW14pXSopXCksPy8pIHsKKyAgICAgICAgICAgICAgICAkYXR0
cnN7JG5hbWV9ID0gJDE7CisgICAgICAgICAgICAgICAgJGF0dHJzeyRuYW1lfSA9fiBzL14oLio/
KVxzKiQvJDEvOworICAgICAgICAgICAgICAgICRzdHIgPX4gcy9eKFteKV0qKVwpLD8vLzsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGllKCJJbnZhbGlkIGV4dGVuZGVk
IGF0dHJpYnV0ZTogJyRzdHInXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNpZiAo
JHN0ciA9fiAvXlxzKiw/LykgeworICAgICAgICAgICAgIyBQYXJzZSAnJyB8ICcsJworICAgICAg
ICAgICAgaWYgKCRuYW1lIGVxICJDb25zdHJ1Y3RvciIpIHsKKyAgICAgICAgICAgICAgICAkYXR0
cnN7JG5hbWV9ID0gIiI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRh
dHRyc3skbmFtZX0gPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgJHN0ciA9fiBzL15c
cyosPy8vOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGllKCJJbnZhbGlkIGV4dGVu
ZGVkIGF0dHJpYnV0ZTogJyRzdHInXG4iKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVy
biBcJWF0dHJzOwogfQogCitzdWIgcGFyc2VQYXJhbWV0ZXJzCit7CisgICAgbXkgJG5ld0RhdGFO
b2RlID0gc2hpZnQ7CisgICAgbXkgJG1ldGhvZFNpZ25hdHVyZSA9IHNoaWZ0OworCisgICAgIyBT
cGxpdCBhcmd1bWVudHMgYXQgY29tbWFzIGJ1dCBvbmx5IGlmIHRoZSBjb21tYQorICAgICMgaXMg
bm90IHdpdGhpbiBhdHRyaWJ1dGUgYnJhY2tldHMsIGV4cHJlc3NlZCBoZXJlCisgICAgIyBhcyBi
ZWluZyBmb2xsb3dlZCBieSBhICddJyB3aXRob3V0IGEgcHJlY2VkaW5nICdbJy4KKyAgICAjIE5v
dGUgdGhhdCB0aGlzIGFzc3VtZXMgdGhhdCBhdHRyaWJ1dGVzIGRvbid0IG5lc3QuCisgICAgbXkg
QHBhcmFtcyA9IHNwbGl0KC8sKD8hW15bXSpcXSkvLCAkbWV0aG9kU2lnbmF0dXJlKTsKKyAgICBm
b3JlYWNoIChAcGFyYW1zKSB7CisgICAgICAgIG15ICRsaW5lID0gJF87CisKKyAgICAgICAgJGxp
bmUgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVBhcmFtZXRlclNlbGVjdG9yLzsKKyAgICAg
ICAgbXkgJHBhcmFtRGlyZWN0aW9uID0gJDE7CisgICAgICAgIG15ICRwYXJhbUV4dGVuZGVkQXR0
cmlidXRlcyA9IChkZWZpbmVkKCQyKSA/ICQyIDogIiAiKTsgY2hvcCgkcGFyYW1FeHRlbmRlZEF0
dHJpYnV0ZXMpOworICAgICAgICBteSAkcGFyYW1UeXBlID0gKGRlZmluZWQoJDMpID8gJDMgOiBk
aWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKKyAgICAgICAgbXkgJHBh
cmFtTmFtZSA9IChkZWZpbmVkKCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNl
OlxuJGxpbmVcbikiKSk7CisKKyAgICAgICAgbXkgJHBhcmFtRGF0YU5vZGUgPSBuZXcgZG9tU2ln
bmF0dXJlKCk7CisgICAgICAgICRwYXJhbURhdGFOb2RlLT5kaXJlY3Rpb24oJHBhcmFtRGlyZWN0
aW9uKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPm5hbWUoJHBhcmFtTmFtZSk7CisgICAgICAg
ICRwYXJhbURhdGFOb2RlLT50eXBlKCRwYXJhbVR5cGUpOworICAgICAgICAkcGFyYW1EYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRwYXJhbUV4dGVu
ZGVkQXR0cmlidXRlcykpOworCisgICAgICAgIG15ICRhcnJheVJlZiA9ICRuZXdEYXRhTm9kZS0+
cGFyYW1ldGVyczsKKyAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkcGFyYW1EYXRhTm9kZSk7CisK
KyAgICAgICAgcHJpbnQgIiAgfCAgIHw+ICBQYXJhbTsgVFlQRSBcIiRwYXJhbVR5cGVcIiBOQU1F
IFwiJHBhcmFtTmFtZVwiIiAuIAorICAgICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygi
XG4gIHwgICAgICAgICAgICAgICIsICRwYXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMp
IC4gIlxuIiB1bmxlc3MgJGJlUXVpZXQ7ICAgICAgICAgIAorICAgIH0KK30KKwogc3ViIFBhcnNl
SW50ZXJmYWNlCiB7CiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwpAQCAtMjIwLDcgKzI4NiwxNyBA
QCBzdWIgUGFyc2VJbnRlcmZhY2UKIAogICAgICAgICAjIEZpbGwgaW4ga25vd24gcGFydHMgb2Yg
dGhlIGRvbUNsYXNzIGRhdGFzdHJ1Y3R1cmUgbm93Li4uCiAgICAgICAgICRkYXRhTm9kZS0+bmFt
ZSgkaW50ZXJmYWNlTmFtZSk7Ci0gICAgICAgICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
KHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMpKTsK
KyAgICAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVz
KCRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICBpZiAoZGVmaW5lZCAkZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAgICAgIG15ICRuZXdE
YXRhTm9kZSA9IG5ldyBkb21GdW5jdGlvbigpOworICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5z
aWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsKKyAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+
c2lnbmF0dXJlLT5uYW1lKCJDb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgJG5ld0RhdGFOb2Rl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAg
ICAgICAgICAgIHBhcnNlUGFyYW1ldGVycygkbmV3RGF0YU5vZGUsICRleHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ29uc3RydWN0b3IifSk7CisgICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNvbnN0cnVjdG9yIn0gPSAxOworICAgICAgICAgICAgJGRhdGFOb2RlLT5jb25zdHJ1Y3Rvcigk
bmV3RGF0YU5vZGUpOworICAgICAgICB9CisgICAgICAgICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZXMpOwogCiAgICAgICAgICMgSW5oZXJpdGFuY2UgZGV0
ZWN0aW9uCiAgICAgICAgIG15IEBpbnRlcmZhY2VQYXJlbnRzID0gc3BsaXQoLywvLCAkaW50ZXJm
YWNlQmFzZSk7CkBAIC0yOTksMzIgKzM3NSw3IEBAIHN1YiBQYXJzZUludGVyZmFjZQogICAgICAg
ICAgICAgICAgICRtZXRob2RFeGNlcHRpb24gPX4gcy9ccysvL2c7CiAgICAgICAgICAgICAgICAg
QHskbmV3RGF0YU5vZGUtPnJhaXNlc0V4Y2VwdGlvbnN9ID0gc3BsaXQoLywvLCAkbWV0aG9kRXhj
ZXB0aW9uKTsKIAotICAgICAgICAgICAgICAgICMgU3BsaXQgYXJndW1lbnRzIGF0IGNvbW1hcyBi
dXQgb25seSBpZiB0aGUgY29tbWEKLSAgICAgICAgICAgICAgICAjIGlzIG5vdCB3aXRoaW4gYXR0
cmlidXRlIGJyYWNrZXRzLCBleHByZXNzZWQgaGVyZQotICAgICAgICAgICAgICAgICMgYXMgYmVp
bmcgZm9sbG93ZWQgYnkgYSAnXScgd2l0aG91dCBhIHByZWNlZGluZyAnWycuCi0gICAgICAgICAg
ICAgICAgIyBOb3RlIHRoYXQgdGhpcyBhc3N1bWVzIHRoYXQgYXR0cmlidXRlcyBkb24ndCBuZXN0
LgotICAgICAgICAgICAgICAgIG15IEBwYXJhbXMgPSBzcGxpdCgvLCg/IVteW10qXF0pLywgJG1l
dGhvZFNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAgZm9yZWFjaChAcGFyYW1zKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIG15ICRsaW5lID0gJF87Ci0KLSAgICAgICAgICAgICAgICAgICAgJGxp
bmUgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVBhcmFtZXRlclNlbGVjdG9yLzsKLSAgICAg
ICAgICAgICAgICAgICAgbXkgJHBhcmFtRGlyZWN0aW9uID0gJDE7Ci0gICAgICAgICAgICAgICAg
ICAgIG15ICRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcyA9IChkZWZpbmVkKCQyKSA/ICQyIDogIiAi
KTsgY2hvcCgkcGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMpOwotICAgICAgICAgICAgICAgICAgICBt
eSAkcGFyYW1UeXBlID0gKGRlZmluZWQoJDMpID8gJDMgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5T
b3VyY2U6XG4kbGluZVxuKSIpKTsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9
IChkZWZpbmVkKCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVc
bikiKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtRGF0YU5vZGUgPSBuZXcgZG9t
U2lnbmF0dXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICRwYXJhbURhdGFOb2RlLT5kaXJlY3Rp
b24oJHBhcmFtRGlyZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgJHBhcmFtRGF0YU5vZGUt
Pm5hbWUoJHBhcmFtTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICRwYXJhbURhdGFOb2RlLT50
eXBlKCRwYXJhbVR5cGUpOwotICAgICAgICAgICAgICAgICAgICAkcGFyYW1EYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRwYXJhbUV4dGVuZGVkQXR0
cmlidXRlcykpOwotCi0gICAgICAgICAgICAgICAgICAgIG15ICRhcnJheVJlZiA9ICRuZXdEYXRh
Tm9kZS0+cGFyYW1ldGVyczsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAJGFycmF5UmVmLCAk
cGFyYW1EYXRhTm9kZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgfCAgIHw+ICBQ
YXJhbTsgVFlQRSBcIiRwYXJhbVR5cGVcIiBOQU1FIFwiJHBhcmFtTmFtZVwiIiAuIAotICAgICAg
ICAgICAgICAgICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygiXG4gIHwgICAgICAgICAg
ICAgICIsICRwYXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMpIC4gIlxuIiB1bmxlc3Mg
JGJlUXVpZXQ7ICAgICAgICAgIAotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBw
YXJzZVBhcmFtZXRlcnMoJG5ld0RhdGFOb2RlLCAkbWV0aG9kU2lnbmF0dXJlKTsKIAogICAgICAg
ICAgICAgICAgIG15ICRhcnJheVJlZiA9ICRkYXRhTm9kZS0+ZnVuY3Rpb25zOwogICAgICAgICAg
ICAgICAgIHB1c2goQCRhcnJheVJlZiwgJG5ld0RhdGFOb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KaW5kZXggZjlkZDRhYmExZjM0OWVi
ODkzMjczMWU3ZjM0YjQ2OWE4ODZmNWIzYy4uMGU5Mzc0OWRhMThkYmY5YmVmNTBhMjFjNWI3NTA3
ZjM3MTllZjA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9J
RExTdHJ1Y3R1cmUucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExT
dHJ1Y3R1cmUucG0KQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0KCBkb21DbGFzcyA9PiB7CiAgICAg
ZnVuY3Rpb25zID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21GdW5jdGlvbicKICAgICBhdHRyaWJ1
dGVzID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21BdHRyaWJ1dGUnICAgIAogICAgIGV4dGVuZGVk
QXR0cmlidXRlcyA9PiAnJCcsICMgRXh0ZW5kZWQgYXR0cmlidXRlcworICAgIGNvbnN0cnVjdG9y
ID0+ICckJywgIyBDb25zdHJ1Y3RvcgogfSk7CiAKICMgVXNlZCB0byByZXByZXNlbnQgZG9tQ2xh
c3MgY29udGVudHMgKG5hbWUgb2YgbWV0aG9kLCBzaWduYXR1cmUpCkBAIC04Nyw4ICs4OCw4IEBA
IG91ciAkaWRsRGF0YVR5cGUgPSAnW2EtekEtWjAtOVwgXSc7ICAgIyBHZW5lcmljIGRhdGEgdHlw
ZSBpZGVudGlmaWVyCiAjIE1hZ2ljIElETCBwYXJzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMKIG15
ICRzdXBwb3J0ZWRUeXBlcyA9ICIoKD86dW5zaWduZWQgKT8oPzppbnR8c2hvcnR8KD86bG9uZyAp
P2xvbmcpfCg/OiRpZGxJZE5zKikpIjsKIAotIyBTcGVjaWFsIElETCBub3RhdGlvbnMKLW91ciAk
ZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXggPSAnXFtbXl1dKlxdJzsgIyBVc2VkIGZvciBleHRlbmRl
ZCBhdHRyaWJ1dGVzCisjIFNwZWNpYWwgSURMIG5vdGF0aW9ucy4gVGhpcyByZWd1bGFyIGV4cHJl
c3Npb24gZXh0cmFjdHMgdGhlIHN0cmluZyBiZXR3ZWVuIHRoZSBmaXJzdCBbIGFuZCBpdHMgY29y
cmVzcG9uZGluZyBdLgorb3VyICRleHRlbmRlZEF0dHJpYnV0ZVN5bnRheCA9IHFyL1xbW15cW1xd
XSooPzooPz97JElETFN0cnVjdHVyZTo6ZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXh9KVteXFtcXV0q
KSpcXS94OyAjIFVzZWQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMKIAogIyBSZWd1bGFyIGV4cHJl
c3Npb24gYmFzZWQgSURMICdzeW50YWN0aWNhbCB0b2tlbml6ZXInIHVzZWQgaW4gdGhlIElETFBh
cnNlcgogb3VyICRtb2R1bGVTZWxlY3RvciA9ICdtb2R1bGVccyooJyAuICRpZGxJZCAuICcqKVxz
KnsnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RJbnRlcmZhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RJbnRlcmZhY2UuaWRsCmluZGV4IDFmMGFhMThjODQ1MGViNWFmNDM4YWRjMGMxZGEwM2E0Nzgx
ZGQyMDkuLjhlZTg0MWY4MTJhOGFjMTgxNjlkODllY2ZjMmJjNjA3NjY3NzQzN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFj
ZS5pZGwKQEAgLTMyLDcgKzMyLDExIEBAIG1vZHVsZSB0ZXN0IHsKICAgICBpbnRlcmZhY2UgWwog
ICAgICAgICBDb25kaXRpb25hbD1Db25kaXRpb24xfENvbmRpdGlvbjIsCiAgICAgICAgIENhbkJl
Q29uc3RydWN0ZWQsCi0gICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAg
ICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAgQ29uc3RydWN0
b3IoaW4gRE9NU3RyaW5nIHN0cjEsIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0g
RE9NU3RyaW5nIHN0cjIpLAorICAgICAgICBDb25zdHJ1Y3RvcldpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwKKyAgICAgICAgVjhDb25zdHJ1Y3RvclNldHNET01XcmFwcGVyLAorICAgICAgICBD
b25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbgogICAgIF0gVGVzdEludGVyZmFjZSB7CiAgICAgfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bAppbmRleCAwNTk1YmJlMzBiMmUwZTc3OWVlOTE2ZjZiMzUyMDJmYmRlMjU0YWM2Li5mYTBkODA4
MmY3NDgyYzg3YWEzZWYyMDkwOWRhMjAzZGEzZWEzOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0zMiw2ICszMiw3IEBACiBt
b2R1bGUgdGVzdCB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgTGVnYWN5RGVmYXVsdE9wdGlv
bmFsQXJndW1lbnRzLAorICAgICAgICBDb25zdHJ1Y3RvcgogICAgIF0gVGVzdE9iaiB7CiAgICAg
ICAgIC8vIEF0dHJpYnV0ZXMKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgICAg
ICAgICByZWFkT25seUludEF0dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGI1NjNhNDU3
Yzk5NjM5MTVkMzc3ZDhkNDJlNWRlYTgyYTczMjMwMGEuLjBlNmNiNmVhNzM5MDNhMWM3ZWFjYWNi
MjdhNGU4MzRkYTkyM2Q0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yMyw4ICsyMywx
MCBAQAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogCisj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3Mu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5o
IgogI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCkBAIC00Myw5ICs0NSwzNCBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLkNvbnRydWN0
b3IiKTsKLSAgICByZXR1cm4gVjhQcm94eTo6Y29uc3RydWN0RE9NT2JqZWN0V2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ8VGVzdEludGVyZmFjZT4oYXJncywgJmluZm8pOworICAgIElOQ19TVEFU
UygiRE9NLlRlc3RJbnRlcmZhY2UuQ29uc3RydWN0b3IiKTsKKworICAgIGlmICghYXJncy5Jc0Nv
bnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmplY3QgY29u
c3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJveHk6OlR5cGVF
cnJvcik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBU
SU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0cjEsIGFyZ3NbMF0pOworICAgIFNUUklOR19UT19W
OFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyMiwgYXJnc1sxXSk7
CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoIlRlc3RJbnRlcmZhY2UgY29uc3RydWN0b3IncyBhc3NvY2lhdGVkIGNvbnRleHQgaXMgbm90
IGF2YWlsYWJsZSIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKKworICAgIFJlZlB0cjxUZXN0
SW50ZXJmYWNlPiBvYmogPSBUZXN0SW50ZXJmYWNlOjpjcmVhdGUoc3RyMSwgc3RyMiwgY29udGV4
dCwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgZ290byBmYWlsOworCisgICAgVjhET01XcmFw
cGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBvYmouZ2V0KCkpOworICAg
IG9iai0+cmVmKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3Qo
b2JqLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkp
KTsKKyAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKyAgZmFpbDoKKyAgICByZXR1cm4gdGhyb3dF
cnJvcihlYyk7CiB9CisKIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IGRlc2MpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsK
QEAgLTU0LDcgKzgxLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKICAgICAgICAgMCwgMCwK
ICAgICAgICAgMCwgMCk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJ
biBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgotICAgICAgICBkZXNjLT5TZXRDYWxs
SGFuZGxlcihWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOworICAgIGRlc2Mt
PlNldENhbGxIYW5kbGVyKFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiAg
ICAgCiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCBjMGExYWIxMzY2MjhmMDY5ODMyOWZh
ZDk2Mjg4MGIxYzAxNWU4MDFiLi5lNWIyY2I0ZDg3NGFmMWRhNmI0YzNjNjdkYTk4YzAwN2FlZDM0
YTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBA
IC01Myw2ICs1Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHN0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJh
Y2sgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDYWxsYmFja3NbXSA9IHsKICAgICB7Im1ldGhv
ZCIsIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVySW50ZXJuYWw6Om1ldGhvZENhbGxiYWNrfSwK
IH07CisKIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmln
dXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwCmluZGV4IGY4ZjZjMmU4YzM1ZDQ1NTUwMzBiODVlMDY0NGY3ZGYwOTI4MmQx
MjguLjVlZTkwNGU0NWQzODhiZTNjNGE1ZGE3NGIzZDJmNjY4NWJiMGFiNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3Bw
CkBAIC0xMjI5LDYgKzEyMjksNyBAQCBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0
T2JqQXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ2hhc2gnIChUeXBlOiAncmVhZG9ubHkg
YXR0cmlidXRlJyBFeHRBdHRyOiAnJykKICAgICB7Imhhc2giLCBUZXN0T2JqSW50ZXJuYWw6Omhh
c2hBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07CisKIHN0YXRpYyBjb25zdCBCYXRj
aGVkQ2FsbGJhY2sgVGVzdE9iakNhbGxiYWNrc1tdID0gewogICAgIHsidm9pZE1ldGhvZCIsIFRl
c3RPYmpJbnRlcm5hbDo6dm9pZE1ldGhvZENhbGxiYWNrfSwKICAgICB7ImludE1ldGhvZCIsIFRl
c3RPYmpJbnRlcm5hbDo6aW50TWV0aG9kQ2FsbGJhY2t9LApAQCAtMTI1OSw2ICsxMjYwLDcgQEAg
c3RhdGljIGNvbnN0IEJhdGNoZWRDYWxsYmFjayBUZXN0T2JqQ2FsbGJhY2tzW10gPSB7CiAgICAg
eyJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIsIFRlc3RPYmpJbnRlcm5hbDo6bWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdDYWxsYmFja30sCiAgICAgeyJvdmVybG9hZGVk
TWV0aG9kIiwgVGVzdE9iakludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kQ2FsbGJhY2t9LAogfTsK
Kwogc3RhdGljIGNvbnN0IEJhdGNoZWRDb25zdGFudCBUZXN0T2JqQ29uc3RzW10gPSB7CiAgICAg
eyJDT05TVF9WQUxVRV8wIiwgc3RhdGljX2Nhc3Q8c2lnbmVkIGludD4oMCl9LAogICAgIHsiQ09O
U1RfVkFMVUVfMSIsIHN0YXRpY19jYXN0PHNpZ25lZCBpbnQ+KDEpfSwKQEAgLTEyNzMsNiArMTI3
NSw3IEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQ29uc3RhbnQgVGVzdE9iakNvbnN0c1tdID0gewog
ICAgIHsiQ09OU1RfVkFMVUVfMTQiLCBzdGF0aWNfY2FzdDxzaWduZWQgaW50PigweDFhYmMpfSwK
IH07CiAKKwogQ09NUElMRV9BU1NFUlQoMCA9PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8wLCBUZXN0
T2JqRW51bUNPTlNUX1ZBTFVFXzBJc1dyb25nVXNlRG9udENoZWNrRW51bXMpOwogQ09NUElMRV9B
U1NFUlQoMSA9PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8xLCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVF
XzFJc1dyb25nVXNlRG9udENoZWNrRW51bXMpOwogQ09NUElMRV9BU1NFUlQoMiA9PSBUZXN0T2Jq
OjpDT05TVF9WQUxVRV8yLCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzJJc1dyb25nVXNlRG9udENo
ZWNrRW51bXMpOwpAQCAtMTI4NSw2ICsxMjg4LDIyIEBAIENPTVBJTEVfQVNTRVJUKDB4MDEgPT0g
VGVzdE9iajo6Q09OU1RfVkFMVUVfMTIsIFRlc3RPYmpFbnVtQ09OU1RfVkFMVUVfMTJJc1dyb25n
CiBDT01QSUxFX0FTU0VSVCgwWDIwID09IFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzEzLCBUZXN0T2Jq
RW51bUNPTlNUX1ZBTFVFXzEzSXNXcm9uZ1VzZURvbnRDaGVja0VudW1zKTsKIENPTVBJTEVfQVNT
RVJUKDB4MWFiYyA9PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8xNCwgVGVzdE9iakVudW1DT05TVF9W
QUxVRV8xNElzV3JvbmdVc2VEb250Q2hlY2tFbnVtcyk7CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFRlc3RPYmo6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLkNvbnN0cnVjdG9yIik7CisKKyAgICBp
ZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJE
T00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBW
OFByb3h5OjpUeXBlRXJyb3IpOworCisKKyAgICBSZWZQdHI8VGVzdE9iaj4gb2JqID0gVGVzdE9i
ajo6Y3JlYXRlKCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xk
ZXIoKSwgJmluZm8sIG9iai5nZXQoKSk7CisgICAgb2JqLT5yZWYoKTsKKyAgICBWOERPTVdyYXBw
ZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdChvYmouZ2V0KCksIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOworICAgIHJldHVybiBhcmdzLkhv
bGRlcigpOworfQorCiBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBkZXNjKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKaW5k
ZXggYTI5NmNkMGIxNTlkNmJlNGViMzkxYjNhNjU2ZGNlNDlhMDlhZGI4NC4uNGJjNDFjY2ZlOTUx
ZWMyMmNiZDQwMWNjMTA5OGNjNmZhYzkwMmM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaApAQCAtNDUsNiArNDUsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOwogICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYpOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tTWV0aG9kV2l0aEFy
Z3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
OwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tQXR0ckFjY2Vzc29yR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKTsKICAgICBzdGF0aWMgdm9pZCBjdXN0b21BdHRyQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRD
b3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105588</attachid>
            <date>2011-08-29 23:44:28 -0700</date>
            <delta_ts>2011-08-31 00:45:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66536-20110829234427.patch</filename>
            <type>text/plain</type>
            <size>40155</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM5ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YzQxZGM5YjY3MDdiNDQw
ZjNjMmE0YTQ4YjQ1MzAwNGVkYmUyOTIyLi42NGNkYmIzZGEwN2Y3ODJiYjA0MzM2ZWZkY2M0YjBi
YmVjNzM3NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTEtMDgtMjkgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViIElE
TCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gSURMUGFyc2VyLnBtIGFuZCBDb2Rl
R2VuZXJhdG9yVjgucG0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjUzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBzcGVjIGlzIGhlcmU6IGh0dHA6Ly93d3cudzMub3JnL1RSL1dlYklETC8jQ29u
c3RydWN0b3IKKworICAgICAgICBbMV0gSW50cm9kdWNlZCBXZWIgSURMICdDb25zdHJ1Y3Rvcicg
ZXh0ZW5kZWQgYXR0cmlidXRlLgorICAgICAgICAtICdDb25zdHJ1Y3RvcicgZ2VuZXJhdGVzIGNv
bnN0cnVjdG9yQ2FsbGJhY2soKSB3aXRoIG5vIGFyZ3VtZW50cy4KKyAgICAgICAgLSAnQ29uc3Ry
dWN0b3IoKScgZ2VuZXJhdGVzIGNvbnN0cnVjdG9yQ2FsbGJhY2soKSB3aXRoIG5vIGFyZ3VtZW50
cy4KKyAgICAgICAgLSAnQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHN0ciwgaW4gZmxvYXQgZikn
IGdlbmVyYXRlcyBjb25zdHJ1Y3RvckNhbGxiYWNrKCkKKyAgICAgICAgd2l0aCB0d28gYXJndW1l
bnRzLCBET01TdHJpbmcgYW5kIGZsb2F0LiBXZSBjYW4gYWxzbyBzcGVjaWZ5IGV4dGVuZGVkCisg
ICAgICAgIGF0dHJpYnV0ZXMgZm9yIGVhY2ggYXJndW1lbnQsIGxpa2UgJ0NvbnN0cnVjdG9yKGlu
IERPTVN0cmluZyBzLAorICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWUs
IENvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdCknCisKKyAgICAgICAgWzJdIEFk
ZGVkICdDb25zdHJ1Y3RvcldpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCcgZXh0ZW5kZWQgYXR0
cmlidXRlLgorICAgICAgICAtIFRoZSBjb25zdHJ1Y3RvciBwYXNzZXMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCB0byBhIFhYWDo6Y3JlYXRlKCkgbWV0aG9kLAorICAgICAgICBsaWtlIFhYWDo6Y3Jl
YXRlKC4uLiwgY29udGV4dCwgLi4uKS4KKworICAgICAgICBbM10gQWRkZWQgJ1Y4Q29uc3RydWN0
b3JTZXRzQWN0aXZlRE9NV3JhcHBlcicgZXh0ZW5kZWQgYXR0cmlidXRlLgorICAgICAgICAtIFRo
ZSBjb25zdHJ1Y3RvciBjYWxscyBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURP
TU9iamVjdCgpCisgICAgICAgIGluc3RlYWQgb2YgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJG
b3JET01PYmplY3QoKS4KKworICAgICAgICBbNF0gQWRkZWQgJ0NvbnN0cnVjdG9yUmFpc2VzRXhj
ZXB0aW9uJyBleHRlbmRlZCBhdHRyaWJ1dGUuCisgICAgICAgIC0gQSBwbGFjZWhvbGRlciBmb3Ig
RXhjZXB0aW9uQ29kZSBpcyBwYXNzZWQgdG8gYSBYWFg6OmNyZWF0ZSgpIG1ldGhvZCwKKyAgICAg
ICAgbGlrZSBYWFg6OmNyZWF0ZSguLi4sIGVjKS4KKyAgICAgICAgLSBJZiAnQ29uc3RydWN0b3JS
YWlzZXNFeGNlcHRpb24nIGFuZCAnQ29uc3RydWN0b3JXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQnCisgICAgICAgIGFyZSBzcGVjaWZpZWQgYXQgdGhlIHNhbWUgdGltZSwgdGhlIGNvbnN0cnVj
dG9yIGNhbGxzIFhYWDo6Y3JlYXRlKC4uLiwgY29udGV4dCwgZWMpLgorCisgICAgICAgIE5vdGU6
CisgICAgICAgIC0gQ29uc3RydWN0b3Igb3ZlcmxvYWRpbmcgaXMgbm90IHlldCBpbXBsZW1lbnRl
ZC4KKyAgICAgICAgLSBXZSBjYW5ub3QgeWV0IHNwZWNpZnkgW09wdGlvbmFsXSB3aXRob3V0IENh
bGxXaXRoRGVmYXVsdFZhbHVlIGZvciBhIGNvbnN0cnVjdG9yLgorCisgICAgICAgIFRlc3Q6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAorICAg
ICAgICAgICAgICBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAg
ICAgICAoR2VuZXJhdGVIZWFkZXIpOiBHZW5lcmF0ZXMgYSBoZWFkZXIgZm9yIGNvbnN0cnVjdG9y
Q2FsbGJhY2soKSwgaWYgJ0NvbnN0cnVjdG9yJyBpcyBzcGVjaWZpZWQuCisgICAgICAgIChHZW5l
cmF0ZUZ1bmN0aW9uQ2FsbGJhY2spOiBVc2VzIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygp
IGFuZCBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygpLgorICAgICAgICAoR2VuZXJhdGVBcmd1bWVu
dHNDb3VudENoZWNrKTogR2VuZXJhdGVzIGEgY29kZSBmb3IgY2hlY2tpbmcgdGhlIG51bWJlciBv
ZiBhcmd1bWVudHMuIFRoaXMgd2FzIGEgY29kZSBleGlzdGluZyBpbiBHZW5lcmF0ZUZ1bmN0aW9u
Q2FsbGJhY2soKS4gVGhpcyBwYXRjaCBqdXN0IG1vdmVzIHRoZSBjb2RlIGludG8gdGhpcyBtZXRo
b2QuCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6IEdlbmVyYXRlcyBhIGNvZGUg
Zm9yIGNoZWNraW5nIHBhc3NlZCBhcmd1bWVudHMgYW5kIGNvbnZlcnRpbmcgdGhlbSBpbnRvIFdl
YkNvcmUgdmFsdWVzLiBUaGlzIHdhcyBhIGNvZGUgZXhpc3RpbmcgaW4gR2VuZXJhdGVGdW5jdGlv
bkNhbGxiYWNrKCkuIFRoaXMgcGF0Y2gganVzdCBtb3ZlcyB0aGUgY29kZSBpbnRvIHRoaXMgbWV0
aG9kLgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKTogR2VuZXJhdGVzIGEg
Y29kZSBvZiBjb25zdHJ1Y3RvckNhbGxiYWNrKCkuCisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uKTogSnVzdCBhZGRlZCBhIG5ldyBsaW5lIGZvciByZWFkYWJpbGl0eS4KKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKHBhcnNlRXh0ZW5kZWRB
dHRyaWJ1dGVzKTogUHJldmlvdXNseSwgb25seSBhIHN0cmluZyBpbiB0aGUgIkE9QiwgQywgRCwg
RT1GIiBmb3JtYXQgY2FuIGJlIHBhcnNlZC4gVGhpcyBwYXRjaCBlbmFibGVzIHRvIHBhcnNlIGEg
c3RyaW5nIGluIHRoZSAiQT1CLCBDLCBELCBFPUYsIEcoaW4gRE9NU3RyaW5nIHMsIGluIFtILCBJ
LCBKXSBET01TdHJpbmcgdCkiIGZvcm1hdC4KKyAgICAgICAgKHBhcnNlUGFyYW1ldGVycyk6IFRo
aXMgd2FzIGEgY29kZSBleGlzdGluZyBpbiBQYXJzZUludGVyZmFjZSgpLiBUaGlzIHBhdGNoIGp1
c3QgbW92ZXMgdGhlIGNvZGUgaW50byB0aGlzIG1ldGhvZC4KKyAgICAgICAgKFBhcnNlSW50ZXJm
YWNlKTogVXNlcyBwYXJzZVBhcmFtZXRlcnMoKS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0lETFN0cnVjdHVyZS5wbTogQWRkZWQgZG9tQ2xhc3N7Y29uc3RydWN0b3J9LiBDaGFuZ2VkIHRo
ZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gZXh0cmFjdCB0aGUgbGlzdCBvZiBleHRlbmRlZCBhdHRy
aWJ1dGVzLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlk
bDogQWRkZWQgYWxsIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGVzIHRoYXQgdGhpcyBwYXRjaCBpcyBn
b2luZyB0byBpbnRyb2R1Y2UuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsOiBBZGRlZCAnQ29uc3RydWN0b3InLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOiBVcGRhdGVkIHRoZSB0ZXN0IHJlc3VsdC4KKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T2JqLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6OmNvbnN0cnVjdG9y
Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
aDogRGl0dG8uCisKIDIwMTEtMDgtMjkgIFRvbSBaYWtyYWpzZWsgIDx0b216QGNvZGVhdXJvcmEu
b3JnPgogCiAgICAgICAgIGNhbnZhcyBhcmMoKSBtaXNzaW5nIGxpbmUgdG8gc3RhcnQgb2YgYXJj
IGlmIHN3aW5nIGlzIHplcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZjNjNjQ0MThmNzkxZmM3MGQ3ZjcxZDY5YjhlODhm
MjNmMzZkNmEyMC4uOWQzYWZlOGI4MjY4ZWVhOGZkNGQyYWNmMDhhYzZkNzc5NGM5OTM1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KQEAgLTM1NCw3ICszNTQsNyBAQCBFTkQKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0pIHsKKyAg
ICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FuQmVDb25zdHJ1Y3RlZCJ9
IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0g
fHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9
IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KTsKIEVORApAQCAtMTI1MywyOCArMTI1Myw4IEBAIEVORAogCiAgICAgbXkgJG51bVBhcmFtZXRl
cnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CiAKLSAgICBteSAkcmVxdWlyZXNBbGxBcmd1
bWVudHM7Ci0gICAgbXkgJHJlcXVpcmVzQWxsQXJndW1lbnRzRGVmYXVsdCA9ICIiOwotICAgIGlm
ICghJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVnYWN5RGVmYXVsdE9wdGlvbmFs
QXJndW1lbnRzIn0pIHsKLSAgICAgICAgJHJlcXVpcmVzQWxsQXJndW1lbnRzRGVmYXVsdCA9ICJS
YWlzZSI7Ci0gICAgfQotICAgICRyZXF1aXJlc0FsbEFyZ3VtZW50cyA9ICRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVxdWlyZXNBbGxBcmd1bWVudHMifSB8fCAk
cmVxdWlyZXNBbGxBcmd1bWVudHNEZWZhdWx0OwotICAgIGlmICgkcmVxdWlyZXNBbGxBcmd1bWVu
dHMpIHsKLSAgICAgICAgbXkgJG51bU1hbmRhdG9yeVBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfTsKLSAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKHJldmVyc2UoQHskZnVuY3Rpb24t
PnBhcmFtZXRlcnN9KSkgewotICAgICAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ik9wdGlvbmFsIn0pIHsKLSAgICAgICAgICAgICAgICAkbnVtTWFuZGF0b3J5UGFyYW1z
LS07Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxhc3Q7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8ICRudW1NYW5kYXRvcnlQYXJhbXMpXG4iKTsKLSAgICAgICAgaWYg
KCRyZXF1aXJlc0FsbEFyZ3VtZW50cyBlcSAiUmFpc2UiKSB7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihcIk5vdCBlbm91Z2gg
YXJndW1lbnRzXCIsIFY4UHJveHk6OlR5cGVFcnJvcik7XG4iKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIpOwotICAgICAgICB9Ci0gICAgfQorICAgIG15ICRhcmd1
bWVudHNDb3VudENoZWNrU3RyaW5nID0gR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCRmdW5j
dGlvbiwgJGRhdGFOb2RlKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAkYXJndW1lbnRz
Q291bnRDaGVja1N0cmluZyk7CiAKICAgICBteSAoJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z0xpc3RQ
cm9wZXJ0eVR5cGUsICRzdmdOYXRpdmVUeXBlKSA9IEdldFNWR1Byb3BlcnR5VHlwZXMoJGltcGxD
bGFzc05hbWUpOwogCkBAIC0xMzQ2LDYgKzEzMjYsNjIgQEAgRU5ECiBFTkQKICAgICB9CiAKKyAg
ICBteSAoJHBhcmFtZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjaygkZnVuY3Rpb24sICRpbXBsQ2xhc3NOYW1lKTsKKyAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcpOworCisgICAgIyBCdWlsZCB0aGUgZnVu
Y3Rpb24gY2FsbCBzdHJpbmcuCisgICAgbXkgJGNhbGxTdHJpbmcgPSBHZW5lcmF0ZUZ1bmN0aW9u
Q2FsbFN0cmluZygkZnVuY3Rpb24sICRwYXJhbUluZGV4LCAiICAgICIsICRpbXBsQ2xhc3NOYW1l
KTsKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiJGNhbGxTdHJpbmciKTsKKworICAgIGlm
ICgkcmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICAgIH1cbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGZhaWw6XG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBWOFByb3h5OjpzZXRET01F
eGNlcHRpb24oZWMpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
cmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7CisgICAgfQorCisgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIn1cblxuIik7Cit9CisKK3N1YiBHZW5lcmF0ZUFyZ3VtZW50c0Nv
dW50Q2hlY2sKK3sKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUg
PSBzaGlmdDsKKworICAgIG15ICRhcmd1bWVudHNDb3VudENoZWNrU3RyaW5nID0gIiI7CisgICAg
bXkgJHJlcXVpcmVzQWxsQXJndW1lbnRzOworICAgIG15ICRyZXF1aXJlc0FsbEFyZ3VtZW50c0Rl
ZmF1bHQgPSAiIjsKKyAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikxl
Z2FjeURlZmF1bHRPcHRpb25hbEFyZ3VtZW50cyJ9KSB7CisgICAgICAgICRyZXF1aXJlc0FsbEFy
Z3VtZW50c0RlZmF1bHQgPSAiUmFpc2UiOworICAgIH0KKyAgICAkcmVxdWlyZXNBbGxBcmd1bWVu
dHMgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcXVpcmVz
QWxsQXJndW1lbnRzIn0gfHwgJHJlcXVpcmVzQWxsQXJndW1lbnRzRGVmYXVsdDsKKyAgICBpZiAo
JHJlcXVpcmVzQWxsQXJndW1lbnRzKSB7CisgICAgICAgIG15ICRudW1NYW5kYXRvcnlQYXJhbXMg
PSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CisgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChy
ZXZlcnNlKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkpIHsKKyAgICAgICAgICAgIGlmICgkcGFy
YW0tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7CisgICAgICAgICAgICAgICAg
JG51bU1hbmRhdG9yeVBhcmFtcy0tOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBsYXN0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICgkbnVtTWFu
ZGF0b3J5UGFyYW1zID49IDEpIHsKKyAgICAgICAgICAgICRhcmd1bWVudHNDb3VudENoZWNrU3Ry
aW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAkbnVtTWFuZGF0b3J5UGFyYW1zKVxuIjsK
KyAgICAgICAgICAgIGlmICgkcmVxdWlyZXNBbGxBcmd1bWVudHMgZXEgIlJhaXNlIikgeworICAg
ICAgICAgICAgICAgICRhcmd1bWVudHNDb3VudENoZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKFwiTm90IGVub3VnaCBhcmd1bWVudHNcIiwgVjhQcm94eTo6VHlwZUVycm9y
KTtcbiI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRhcmd1bWVudHND
b3VudENoZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
KTtcbiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuICRhcmd1
bWVudHNDb3VudENoZWNrU3RyaW5nOworfQorCitzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sK
K3sKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNo
aWZ0OworCisgICAgbXkgJHBhcmFtZXRlckNoZWNrU3RyaW5nID0gIiI7CiAgICAgbXkgJHBhcmFt
SW5kZXggPSAwOwogICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFt
ZXRlcnN9KSB7CiAgICAgICAgIFRyYW5zbGF0ZVBhcmFtZXRlcigkcGFyYW1ldGVyKTsKQEAgLTEz
NTgsMTAgKzEzOTQsMTAgQEAgRU5ECiAgICAgICAgIG15ICRvcHRpb25hbCA9ICRwYXJhbWV0ZXIt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9OyAgICAgICAgCiAgICAgICAgIGlmICgk
b3B0aW9uYWwgJiYgJG9wdGlvbmFsIG5lICJDYWxsV2l0aERlZmF1bHRWYWx1ZSIgJiYgISRwYXJh
bWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFjayJ9KSB7CiAgICAgICAgICAgICAj
IEdlbmVyYXRlIGVhcmx5IGNhbGwgaWYgdGhlcmUgYXJlIG5vdCBlbm91Z2ggcGFyYW1ldGVycy4K
LSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPD0gJHBhcmFtSW5kZXgpIHtcbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3Ry
aW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gJHBhcmFtSW5kZXgpIHtcbiI7CiAgICAg
ICAgICAgICBteSAkZnVuY3Rpb25DYWxsID0gR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoJGZ1
bmN0aW9uLCAkcGFyYW1JbmRleCwgIiAgICAiIHggMiwgJGltcGxDbGFzc05hbWUpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgJGZ1bmN0aW9uQ2FsbCk7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOworICAgICAgICAgICAgJHBhcmFt
ZXRlckNoZWNrU3RyaW5nIC49ICRmdW5jdGlvbkNhbGw7CisgICAgICAgICAgICAkcGFyYW1ldGVy
Q2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAgICAgICB9CiAKICAgICAgICAgJGltcGxJbmNs
dWRlc3siRXhjZXB0aW9uQ29kZS5oIn0gPSAxOwpAQCAtMTM3MCwzMyArMTQwNiwzMyBAQCBFTkQK
ICAgICAgICAgICAgIG15ICRjbGFzc05hbWUgPSBHZXRDYWxsYmFja0NsYXNzTmFtZSgkcGFyYW1l
dGVyLT50eXBlKTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IiRjbGFzc05hbWUuaCJ9ID0g
MTsKICAgICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0
aW9uYWwifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
UmVmUHRyPCIgLiAkcGFyYW1ldGVyLT50eXBlIC4gIj4gJHBhcmFtZXRlck5hbWU7XG4iKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmIChhcmdzLkxlbmd0
aCgpID4gJHBhcmFtSW5kZXggJiYgIWFyZ3NbJHBhcmFtSW5kZXhdLT5Jc051bGwoKSAmJiAhYXJn
c1skcGFyYW1JbmRleF0tPklzVW5kZWZpbmVkKCkpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIGlmICghYXJnc1skcGFyYW1JbmRleF0tPklz
T2JqZWN0KCkpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpO1xuIik7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgJHBhcmFtZXRl
ck5hbWUgPSAke2NsYXNzTmFtZX06OmNyZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwgZ2V0U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgfVxuIik7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3Ry
aW5nIC49ICIgICAgUmVmUHRyPCIgLiAkcGFyYW1ldGVyLT50eXBlIC4gIj4gJHBhcmFtZXRlck5h
bWU7XG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlm
IChhcmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXggJiYgIWFyZ3NbJHBhcmFtSW5kZXhdLT5Jc051
bGwoKSAmJiAhYXJnc1skcGFyYW1JbmRleF0tPklzVW5kZWZpbmVkKCkpIHtcbiI7CisgICAgICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGlmICghYXJnc1skcGFy
YW1JbmRleF0tPklzT2JqZWN0KCkpXG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVj
a1N0cmluZyAuPSAiICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9F
UlIpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAg
ICAgJHBhcmFtZXRlck5hbWUgPSAke2NsYXNzTmFtZX06OmNyZWF0ZShhcmdzWyRwYXJhbUluZGV4
XSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTtcbiI7CisgICAgICAgICAgICAgICAgJHBh
cmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgfVxuIjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoYXJncy5MZW5n
dGgoKSA8PSAkcGFyYW1JbmRleCB8fCAhYXJnc1skcGFyYW1JbmRleF0tPklzT2JqZWN0KCkpXG4i
KTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7XG4iKTsKLSAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIFJlZlB0cjwiIC4gJHBhcmFtZXRlci0+dHlwZSAu
ICI+ICRwYXJhbWV0ZXJOYW1lID0gJHtjbGFzc05hbWV9OjpjcmVhdGUoYXJnc1skcGFyYW1JbmRl
eF0sIGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFyYW1J
bmRleCB8fCAhYXJnc1skcGFyYW1JbmRleF0tPklzT2JqZWN0KCkpXG4iOworICAgICAgICAgICAg
ICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihU
WVBFX01JU01BVENIX0VSUik7XG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0
cmluZyAuPSAiICAgIFJlZlB0cjwiIC4gJHBhcmFtZXRlci0+dHlwZSAuICI+ICRwYXJhbWV0ZXJO
YW1lID0gJHtjbGFzc05hbWV9OjpjcmVhdGUoYXJnc1skcGFyYW1JbmRleF0sIGdldFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7XG4iOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2lmICgk
cGFyYW1ldGVyLT50eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CiAgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCJ9ID0gMTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgYm9vbCAke3BhcmFtZXRlck5hbWV9RGlk
VGhyb3cgPSBmYWxzZTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICAkbmF0aXZlVHlwZSAkcGFyYW1ldGVyTmFtZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCAke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cpO1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICgke3BhcmFtZXRl
ck5hbWV9RGlkVGhyb3cpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7XG4iKTsKKyAgICAgICAgICAgICRwYXJh
bWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGJvb2wgJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93ID0g
ZmFsc2U7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgJG5h
dGl2ZVR5cGUgJHBhcmFtZXRlck5hbWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShh
cmdzWyRwYXJhbUluZGV4XSwgJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93KTtcbiI7CisgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoJHtwYXJhbWV0ZXJOYW1lfURp
ZFRocm93KVxuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpO1xuIjsKICAgICAgICAgfSBlbHNpZiAoVHlwZUNhbkZh
aWxDb252ZXJzaW9uKCRwYXJhbWV0ZXIpKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgICRuYXRpdmVUeXBlICRwYXJhbWV0ZXJOYW1lID0gIiAuCi0gICAgICAgICAg
ICAgICAgIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiYXJnc1skcGFyYW1JbmRleF0iKSAu
ICI7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKFVO
TElLRUxZKCEkcGFyYW1ldGVyTmFtZSkpIHtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjtcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgZ290byBmYWlsO1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOworICAgICAgICAg
ICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFtZXRlck5h
bWUgPSAiIC4KKyAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJh
cmdzWyRwYXJhbUluZGV4XSIpIC4gIjtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tT
dHJpbmcgLj0gIiAgICBpZiAoVU5MSUtFTFkoISRwYXJhbWV0ZXJOYW1lKSkge1xuIjsKKyAgICAg
ICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSO1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAg
ICBnb3RvIGZhaWw7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIg
ICAgfVxuIjsKICAgICAgICAgfSBlbHNpZiAoJG5hdGl2ZVR5cGUgPX4gL15WOFBhcmFtZXRlci8p
IHsKICAgICAgICAgICAgIG15ICR2YWx1ZSA9IEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAi
YXJnc1skcGFyYW1JbmRleF0iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRwYXJhbWV0ZXIsICRuYXRpdmVUeXBlLCAk
cGFyYW1ldGVyTmFtZSwgJHZhbHVlKSAuICJcbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRwYXJhbWV0ZXIsICRu
YXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgJHZhbHVlKSAuICJcbiI7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOEJpbmRpbmdNYWNyb3MuaCJ9ID0gMTsK
ICAgICAgICAgICAgICMgSWYgdGhlICJTdHJpY3RUeXBlQ2hlY2tpbmciIGV4dGVuZGVkIGF0dHJp
YnV0ZSBpcyBwcmVzZW50LCBhbmQgdGhlIGFyZ3VtZW50J3MgdHlwZSBpcyBhbgpAQCAtMTQwNSw0
MiArMTQ0MSwxMjAgQEAgRU5ECiAgICAgICAgICAgICAjIFBlciB0aGUgV2ViIElETCBhbmQgRUNN
QVNjcmlwdCBzcGVjaWZpY2F0aW9ucywgaW5jb21pbmcgdmFsdWVzIGNhbiBhbHdheXMgYmUgY29u
dmVydGVkCiAgICAgICAgICAgICAjIHRvIGJvdGggc3RyaW5ncyBhbmQgbnVtYmVycywgc28gZG8g
bm90IHRocm93IFR5cGVFcnJvciBpZiB0aGUgYXJndW1lbnQgaXMgb2YgdGhlc2UKICAgICAgICAg
ICAgICMgdHlwZXMuCi0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJTdHJpY3RUeXBlQ2hlY2tpbmcifSkgeworICAgICAgICAgICAgaWYg
KCRmdW5jdGlvbi0+c2lnbmF0dXJlICYmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiU3RyaWN0VHlwZUNoZWNraW5nIn0pIHsKICAgICAgICAgICAgICAgICBteSAk
YXJnVmFsdWUgPSAiYXJnc1skcGFyYW1JbmRleF0iOwogICAgICAgICAgICAgICAgIG15ICRhcmdU
eXBlID0gR2V0VHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlcik7CiAgICAgICAgICAgICAgICAg
aWYgKElzV3JhcHBlclR5cGUoJGFyZ1R5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAkcGFyYW1JbmRleCAm
JiAhaXNVbmRlZmluZWRPck51bGwoJGFyZ1ZhbHVlKSAmJiAhVjgke2FyZ1R5cGV9OjpIYXNJbnN0
YW5jZSgkYXJnVmFsdWUpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICAgICAgVjhQcm94eTo6dGhyb3dUeXBlRXJyb3IoKTtcbiIpOwotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1cm4g
bm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOworICAgICAgICAgICAgICAgICAgICAkcGFy
YW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA+ICRwYXJhbUluZGV4
ICYmICFpc1VuZGVmaW5lZE9yTnVsbCgkYXJnVmFsdWUpICYmICFWOCR7YXJnVHlwZX06Okhhc0lu
c3RhbmNlKCRhcmdWYWx1ZSkpIHtcbiI7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJD
aGVja1N0cmluZyAuPSAiICAgICAgICBWOFByb3h5Ojp0aHJvd1R5cGVFcnJvcigpO1xuIjsKKyAg
ICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVy
biBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpO1xuIjsKKyAgICAgICAgICAgICAgICAgICAgJHBh
cmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgfVxuIjsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIEVYQ0VQ
VElPTl9CTE9DSygkbmF0aXZlVHlwZSwgJHBhcmFtZXRlck5hbWUsICIgLgotICAgICAgICAgICAg
ICAgICBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5kZXhdIikgLiAi
KTtcbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgRVhDRVBU
SU9OX0JMT0NLKCRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgIiAuCisgICAgICAgICAgICAg
ICAgIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiYXJnc1skcGFyYW1JbmRleF0iKSAuICIp
O1xuIjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSXNJbmRleCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIGlmIChVTkxJS0VMWSgkcGFyYW1ldGVyTmFtZSA8IDApKSB7XG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7
XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIGdvdG8g
ZmFpbDtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9XG4i
KTsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChVTkxJS0VM
WSgkcGFyYW1ldGVyTmFtZSA8IDApKSB7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNr
U3RyaW5nIC49ICIgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7XG4iOworICAgICAgICAgICAg
JHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGdvdG8gZmFpbDtcbiI7CisgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAgICAgICB9CiAKICAg
ICAgICAgJHBhcmFtSW5kZXgrKzsKICAgICB9CisgICAgcmV0dXJuICgkcGFyYW1ldGVyQ2hlY2tT
dHJpbmcsICRwYXJhbUluZGV4KTsKK30KIAotICAgICMgQnVpbGQgdGhlIGZ1bmN0aW9uIGNhbGwg
c3RyaW5nLgotICAgIG15ICRjYWxsU3RyaW5nID0gR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmco
JGZ1bmN0aW9uLCAkcGFyYW1JbmRleCwgIiAgICAiLCAkaW1wbENsYXNzTmFtZSk7Ci0gICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiRjYWxsU3RyaW5nIik7CitzdWIgR2VuZXJhdGVDb25zdHJ1
Y3RvckNhbGxiYWNrCit7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkgJGRhdGFO
b2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKworICAgIG15ICRy
YWlzZXNFeGNlcHRpb25zID0gQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9OworICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclJhaXNlc0V4Y2Vw
dGlvbiJ9KSB7CisgICAgICAgICRyYWlzZXNFeGNlcHRpb25zID0gMTsKKyAgICB9CisgICAgaWYg
KCEkcmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7
JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICAgICAgaWYgKCghJHBhcmFtZXRlci0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0gYW5kIFR5cGVDYW5GYWlsQ29udmVyc2lv
bigkcGFyYW1ldGVyKSkgb3IgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzSW5k
ZXgifSkgeworICAgICAgICAgICAgICAgICRyYWlzZXNFeGNlcHRpb25zID0gMTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIG15IEBleHRyYUFyZ3VtZW50TGlzdDsKKyAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtp
bXBsQ2xhc3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQ29uc3RydWN0b3Ii
KTsKKworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1
bmN0aW9uLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CitFTkQKKworICAgIHB1c2goQGltcGxDb250
ZW50LCAiXG4iKTsKKyAgICBteSAkYXJndW1lbnRzQ291bnRDaGVja1N0cmluZyA9IEdlbmVyYXRl
QXJndW1lbnRzQ291bnRDaGVjaygkZnVuY3Rpb24sICRkYXRhTm9kZSk7CisgICAgcHVzaChAaW1w
bENvbnRlbnQsICRhcmd1bWVudHNDb3VudENoZWNrU3RyaW5nKTsKIAogICAgIGlmICgkcmFpc2Vz
RXhjZXB0aW9ucykgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIp
OwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGZhaWw6XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
ZWMpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkV4Y2Vw
dGlvbkNvZGUuaCJ9ID0gMTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwog
ICAgIH0KIAotICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9XG5cbiIpOworICAgIG15ICgk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcsICRwYXJhbUluZGV4KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrKCRmdW5jdGlvbiwgJGltcGxDbGFzc05hbWUpOworICAgIHB1c2goQGltcGxDb250ZW50LCAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcpOworCisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNvbnN0cnVjdG9yV2l0aCJ9ICYmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNvbnN0cnVjdG9yV2l0aCJ9IGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Iikgewor
ICAgICAgICBwdXNoKEBleHRyYUFyZ3VtZW50TGlzdCwgImNvbnRleHQiKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQor
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiJHtpbXBsQ2xhc3NOYW1lfSBjb25zdHJ1Y3Rvcidz
IGFzc29jaWF0ZWQgY29udGV4dCBpcyBub3QgYXZhaWxhYmxlIiwgVjhQcm94eTo6UmVmZXJlbmNl
RXJyb3IpOworRU5ECisgICAgfQorCisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uIn0pIHsKKyAgICAgICAgcHVzaChAZXh0
cmFBcmd1bWVudExpc3QsICJlYyIpOworICAgIH0KKworICAgIG15IEBhcmd1bWVudExpc3Q7Cisg
ICAgbXkgJGluZGV4ID0gMDsKKyAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9u
LT5wYXJhbWV0ZXJzfSkgeworICAgICAgICBsYXN0IGlmICRpbmRleCBlcSAkcGFyYW1JbmRleDsK
KyAgICAgICAgcHVzaChAYXJndW1lbnRMaXN0LCAkcGFyYW1ldGVyLT5uYW1lKTsKKyAgICAgICAg
JGluZGV4Kys7CisgICAgfQorCisgICAgbXkgJGFyZ3VtZW50U3RyaW5nID0gam9pbigiLCAiLCBA
YXJndW1lbnRMaXN0LCBAZXh0cmFBcmd1bWVudExpc3QpOworICAgIHB1c2goQGltcGxDb250ZW50
LCAiXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JHtpbXBsQ2xhc3NO
YW1lfT4gb2JqID0gJHtpbXBsQ2xhc3NOYW1lfTo6Y3JlYXRlKCR7YXJndW1lbnRTdHJpbmd9KTtc
biIpOworCisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVj
dG9yUmFpc2VzRXhjZXB0aW9uIn0pIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKGVjKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBnb3RvIGZh
aWw7XG4iKTsKKyAgICB9CisKKyAgICBteSAkRE9NT2JqZWN0ID0gJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiVjhDb25zdHJ1Y3RvclNldHNBY3RpdmVET01XcmFwcGVyIn0gPyAiQWN0
aXZlRE9NT2JqZWN0IiA6ICJET01PYmplY3QiOworICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVO
RCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmlu
Zm8sIG9iai5nZXQoKSk7CisgICAgb2JqLT5yZWYoKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvciR7RE9NT2JqZWN0fShvYmouZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOworICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworRU5E
CisKKyAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgIGZhaWw6XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IHRocm93RXJyb3IoZWMpO1xuIik7CisgICAgfQorCisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiB9CiAKIHN1YiBHZW5lcmF0ZUJh
dGNoZWRBdHRyaWJ1dGVEYXRhCkBAIC0xOTAxLDcgKzIwMTUsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgIGlmIChAZGlzYWxsb3dzU2hhZG93aW5nKSB7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAic3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgc2hhZG93QXR0cnNb
XSA9IHtcbiIpOwogICAgICAgICBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhKCRkYXRhTm9k
ZSwgXEBkaXNhbGxvd3NTaGFkb3dpbmcpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuXG4iKTsKICAgICB9CiAKICAg
ICBteSAkaGFzX2F0dHJpYnV0ZXMgPSAwOwpAQCAtMTkwOSw3ICsyMDIzLDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgJGhhc19hdHRyaWJ1dGVzID0gMTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSAke2ludGVy
ZmFjZU5hbWV9QXR0cnNbXSA9IHtcbiIpOwogICAgICAgICBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1
dGVEYXRhKCRkYXRhTm9kZSwgJGF0dHJpYnV0ZXMpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn07XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuXG4iKTsKICAgICB9
CiAKICAgICAjIFNldHVwIHRhYmxlIG9mIHN0YW5kYXJkIGNhbGxiYWNrIGZ1bmN0aW9ucwpAQCAt
MTk0OCw3ICsyMDYyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIEVORAogICAgICAg
ICAkbnVtX2NhbGxiYWNrcysrOwogICAgIH0KLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG4i
KSAgaWYgJGhhc19jYWxsYmFja3M7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuXG4iKSAg
aWYgJGhhc19jYWxsYmFja3M7CiAKICAgICAjIFNldHVwIGNvbnN0YW50cwogICAgIG15ICRoYXNf
Y29uc3RhbnRzID0gMDsKQEAgLTE5NjcsMTQgKzIwODEsMTQgQEAgRU5ECiBFTkQKICAgICB9CiAg
ICAgaWYgKCRoYXNfY29uc3RhbnRzKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5cbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29tcGlsZVRpbWVDaGVja0Zv
ckVudW1zSWZOZWVkZWQoJGRhdGFOb2RlKSk7CiAgICAgfQogCiAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIn0gLy8gbmFtZXNwYWNlICR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbFxuXG4iKTsK
IAogICAgICMgSW4gbmFtZXNwYWNlIFdlYkNvcmUsIGFkZCBnZW5lcmF0ZWQgaW1wbGVtZW50YXRp
b24gZm9yICdDYW5CZUNvbnN0cnVjdGVkJy4KLSAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ2FuQmVDb25zdHJ1Y3RlZCJ9ICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9ICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0pIHsKKyAgICBpZiAoJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FuQmVDb25zdHJ1Y3RlZCJ9ICYmICEkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9ICYmICEkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gJiYgISRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKICAgICAgICAgbXkgJHY4Q29u
c3RydWN0RnVuY3Rpb247CiAgICAgICAgIG15ICRjYWxsV2l0aCA9ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07CiAgICAgICAgIGlmICgkY2FsbFdpdGggYW5kICRj
YWxsV2l0aCBlcSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpIHsKQEAgLTE5ODgsOCArMjEwMiwx
MyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtjbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIElOQ19TVEFUUygiRE9NLiR7aW50ZXJm
YWNlTmFtZX0uQ29udHJ1Y3RvciIpOwogICAgIHJldHVybiBWOFByb3h5Ojoke3Y4Q29uc3RydWN0
RnVuY3Rpb259PCRpbnRlcmZhY2VOYW1lPihhcmdzLCAmaW5mbyk7CiB9CisKIEVORAotICAgfQor
ICAgIH0KKworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1
Y3RvciJ9KSB7CisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUt
PmNvbnN0cnVjdG9yLCAkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKKyAgICB9CiAKICAgICBt
eSAkYWNjZXNzX2NoZWNrID0gIiI7CiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNoZWNrRG9tYWluU2VjdXJpdHkifSAmJiAhKCRpbnRlcmZhY2VOYW1lIGVxICJET01X
aW5kb3ciKSkgewpAQCAtMjA0Nyw5ICsyMTY2LDkgQEAgRU5ECiAgICAgICAgICRpbXBsSW5jbHVk
ZXN7Ind0Zi9VbnVzZWRQYXJhbS5oIn0gPSAxOwogICAgIH0KIAotICAgIGlmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0pIHsKKyAgICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FuQmVDb25zdHJ1Y3RlZCJ9IHx8ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdGVyIn0pIHsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjgk
e2ludGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKKyAgICBkZXNjLT5TZXRDYWxs
SGFuZGxlcihWOCR7aW50ZXJmYWNlTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwogRU5ECiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBh
cnNlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmlu
ZGV4IDAyZmE2MjdiNmM3MWYwNzljNjBiNjBmYmRlNmE3ZDZmYzE0MDFlZWQuLjdmMDdlZTJmMzIw
NDA1YTE5MWJlZGFiNzkyZWFmZWFiN2E3ZDhiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCkBAIC0yMiw2ICsyMiw3IEBACiBwYWNrYWdlIElETFBh
cnNlcjsKIAogdXNlIHN0cmljdDsKK3VzZSByZSAnZXZhbCc7CiAKIHVzZSBJUEM6Ok9wZW4yOwog
dXNlIElETFN0cnVjdHVyZTsKQEAgLTEzOSwyMiArMTQwLDg3IEBAIHN1YiBkdW1wRXh0ZW5kZWRB
dHRyaWJ1dGVzCiBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMKIHsKICAgICBteSAkc3RyID0g
c2hpZnQ7Ci0gICAgJHN0ciA9fiBzL1xbXHMqKC4qPylccypcXS8kMS9nOworICAgICRzdHIgPX4g
cy9cW1xzKiguKilccypcXS8kMS9nOwogCiAgICAgbXkgJWF0dHJzID0gKCk7CiAKLSAgICBmb3Jl
YWNoIG15ICR2YWx1ZSAoc3BsaXQoL1xzKixccyovLCAkc3RyKSkgewotICAgICAgICAobXkgJG5h
bWUsIG15ICR2YWwpID0gc3BsaXQoL1xzKj1ccyovLCAkdmFsdWUsIDIpOwotCi0gICAgICAgICMg
QXR0cmlidXRlcyB3aXRoIG5vIHZhbHVlIGFyZSBzZXQgdG8gYmUgdHJ1ZQotICAgICAgICAkdmFs
ID0gMSB1bmxlc3MgZGVmaW5lZCAkdmFsOwotICAgICAgICAkYXR0cnN7JG5hbWV9ID0gJHZhbDsK
LSAgICAgICAgZGllKCJJbnZhbGlkIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lOiAnJG5hbWUnXG4i
KSBpZiAkbmFtZSA9fiAvXHMvOworICAgIHdoaWxlICgkc3RyICF+IC9eXHMqJC8pIHsKKyAgICAg
ICAgIyBQYXJzZSBuYW1lCisgICAgICAgIGlmICgkc3RyICF+IC9eXHMqKFtcd1xkXSspLykgewor
ICAgICAgICAgICAgZGllKCJJbnZhbGlkIGV4dGVuZGVkIGF0dHJpYnV0ZTogJyRzdHInXG4iKTsK
KyAgICAgICAgfQorICAgICAgICBteSAkbmFtZSA9ICQxOworICAgICAgICAkc3RyID1+IHMvXlxz
KihbXHdcZF0rKS8vOworCisgICAgICAgIGlmICgkc3RyID1+IC9eXHMqPS8pIHsKKyAgICAgICAg
ICAgICMgUGFyc2UgJz0nIHZhbHVlIHwgJz0nIHZhbHVlICcsJworICAgICAgICAgICAgJHN0ciA9
fiBzL15ccyo9Ly87CisgICAgICAgICAgICBpZiAoJHN0ciA9fiAvXlxzKihbXixdKiksPy8pIHsK
KyAgICAgICAgICAgICAgICAkYXR0cnN7JG5hbWV9ID0gJDE7CisgICAgICAgICAgICAgICAgJGF0
dHJzeyRuYW1lfSA9fiBzL14oLio/KVxzKiQvJDEvOworICAgICAgICAgICAgICAgICRzdHIgPX4g
cy9eXHMqKFteLF0qKSw/Ly87CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpZSgiSW52YWxpZCBleHRlbmRlZCBhdHRyaWJ1dGU6ICckc3RyJ1xuIik7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzaWYgKCRzdHIgPX4gL15ccypcKC8pIHsKKyAgICAgICAgICAgICMg
UGFyc2UgJygnIGFyZ3VtZW50cyAnKScgfCAnKCcgYXJndW1lbnRzICcpJyAnLCcKKyAgICAgICAg
ICAgICRzdHIgPX4gcy9eXHMqXCgvLzsKKyAgICAgICAgICAgIGlmICgkc3RyID1+IC9eKFteKV0q
KVwpLD8vKSB7CisgICAgICAgICAgICAgICAgJGF0dHJzeyRuYW1lfSA9ICQxOworICAgICAgICAg
ICAgICAgICRhdHRyc3skbmFtZX0gPX4gcy9eKC4qPylccyokLyQxLzsKKyAgICAgICAgICAgICAg
ICAkc3RyID1+IHMvXihbXildKilcKSw/Ly87CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpZSgiSW52YWxpZCBleHRlbmRlZCBhdHRyaWJ1dGU6ICckc3RyJ1xuIik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzaWYgKCRzdHIgPX4gL15ccyosPy8pIHsKKyAgICAg
ICAgICAgICMgUGFyc2UgJycgfCAnLCcKKyAgICAgICAgICAgIGlmICgkbmFtZSBlcSAiQ29uc3Ry
dWN0b3IiKSB7CisgICAgICAgICAgICAgICAgJGF0dHJzeyRuYW1lfSA9ICIiOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkYXR0cnN7JG5hbWV9ID0gMTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICRzdHIgPX4gcy9eXHMqLD8vLzsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGRpZSgiSW52YWxpZCBleHRlbmRlZCBhdHRyaWJ1dGU6ICckc3RyJ1xuIik7
CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gXCVhdHRyczsKIH0KIAorc3ViIHBhcnNl
UGFyYW1ldGVycworeworICAgIG15ICRuZXdEYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRtZXRo
b2RTaWduYXR1cmUgPSBzaGlmdDsKKworICAgICMgU3BsaXQgYXJndW1lbnRzIGF0IGNvbW1hcyBi
dXQgb25seSBpZiB0aGUgY29tbWEKKyAgICAjIGlzIG5vdCB3aXRoaW4gYXR0cmlidXRlIGJyYWNr
ZXRzLCBleHByZXNzZWQgaGVyZQorICAgICMgYXMgYmVpbmcgZm9sbG93ZWQgYnkgYSAnXScgd2l0
aG91dCBhIHByZWNlZGluZyAnWycuCisgICAgIyBOb3RlIHRoYXQgdGhpcyBhc3N1bWVzIHRoYXQg
YXR0cmlidXRlcyBkb24ndCBuZXN0LgorICAgIG15IEBwYXJhbXMgPSBzcGxpdCgvLCg/IVteW10q
XF0pLywgJG1ldGhvZFNpZ25hdHVyZSk7CisgICAgZm9yZWFjaCAoQHBhcmFtcykgeworICAgICAg
ICBteSAkbGluZSA9ICRfOworCisgICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjppbnRl
cmZhY2VQYXJhbWV0ZXJTZWxlY3Rvci87CisgICAgICAgIG15ICRwYXJhbURpcmVjdGlvbiA9ICQx
OworICAgICAgICBteSAkcGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMgPSAoZGVmaW5lZCgkMikgPyAk
MiA6ICIgIik7IGNob3AoJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgbXkgJHBh
cmFtVHlwZSA9IChkZWZpbmVkKCQzKSA/ICQzIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNl
OlxuJGxpbmVcbikiKSk7CisgICAgICAgIG15ICRwYXJhbU5hbWUgPSAoZGVmaW5lZCgkNCkgPyAk
NCA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOworCisgICAgICAg
IG15ICRwYXJhbURhdGFOb2RlID0gbmV3IGRvbVNpZ25hdHVyZSgpOworICAgICAgICAkcGFyYW1E
YXRhTm9kZS0+ZGlyZWN0aW9uKCRwYXJhbURpcmVjdGlvbik7CisgICAgICAgICRwYXJhbURhdGFO
b2RlLT5uYW1lKCRwYXJhbU5hbWUpOworICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZSgkcGFy
YW1UeXBlKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcyhwYXJz
ZUV4dGVuZGVkQXR0cmlidXRlcygkcGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMpKTsKKworICAgICAg
ICBteSAkYXJyYXlSZWYgPSAkbmV3RGF0YU5vZGUtPnBhcmFtZXRlcnM7CisgICAgICAgIHB1c2go
QCRhcnJheVJlZiwgJHBhcmFtRGF0YU5vZGUpOworCisgICAgICAgIHByaW50ICIgIHwgICB8PiAg
UGFyYW07IFRZUEUgXCIkcGFyYW1UeXBlXCIgTkFNRSBcIiRwYXJhbU5hbWVcIiIgLiAKKyAgICAg
ICAgICAgIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMoIlxuICB8ICAgICAgICAgICAgICAiLCAkcGFy
YW1EYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSAuICJcbiIgdW5sZXNzICRiZVF1aWV0OyAg
ICAgICAgICAKKyAgICB9Cit9CisKIHN1YiBQYXJzZUludGVyZmFjZQogewogICAgIG15ICRvYmpl
Y3QgPSBzaGlmdDsKQEAgLTIyMCw3ICsyODYsMTcgQEAgc3ViIFBhcnNlSW50ZXJmYWNlCiAKICAg
ICAgICAgIyBGaWxsIGluIGtub3duIHBhcnRzIG9mIHRoZSBkb21DbGFzcyBkYXRhc3RydWN0dXJl
IG5vdy4uLgogICAgICAgICAkZGF0YU5vZGUtPm5hbWUoJGludGVyZmFjZU5hbWUpOwotICAgICAg
ICAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcyhwYXJzZUV4dGVuZGVkQXR0cmlidXRlcygk
aW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7CisgICAgICAgIG15ICRleHRlbmRlZEF0dHJp
YnV0ZXMgPSBwYXJzZUV4dGVuZGVkQXR0cmlidXRlcygkaW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1
dGVzKTsKKyAgICAgICAgaWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1
Y3RvciJ9KSB7CisgICAgICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBuZXcgZG9tRnVuY3Rpb24o
KTsKKyAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKG5ldyBkb21TaWduYXR1cmUo
KSk7CisgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgiQ29uc3RydWN0
b3IiKTsKKyAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlcyk7CisgICAgICAgICAgICBwYXJzZVBhcmFtZXRlcnMo
JG5ld0RhdGFOb2RlLCAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pOworICAg
ICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9ID0gMTsKKyAgICAg
ICAgICAgICRkYXRhTm9kZS0+Y29uc3RydWN0b3IoJG5ld0RhdGFOb2RlKTsKKyAgICAgICAgfQor
ICAgICAgICAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVz
KTsKIAogICAgICAgICAjIEluaGVyaXRhbmNlIGRldGVjdGlvbgogICAgICAgICBteSBAaW50ZXJm
YWNlUGFyZW50cyA9IHNwbGl0KC8sLywgJGludGVyZmFjZUJhc2UpOwpAQCAtMjk5LDMyICszNzUs
NyBAQCBzdWIgUGFyc2VJbnRlcmZhY2UKICAgICAgICAgICAgICAgICAkbWV0aG9kRXhjZXB0aW9u
ID1+IHMvXHMrLy9nOwogICAgICAgICAgICAgICAgIEB7JG5ld0RhdGFOb2RlLT5yYWlzZXNFeGNl
cHRpb25zfSA9IHNwbGl0KC8sLywgJG1ldGhvZEV4Y2VwdGlvbik7CiAKLSAgICAgICAgICAgICAg
ICAjIFNwbGl0IGFyZ3VtZW50cyBhdCBjb21tYXMgYnV0IG9ubHkgaWYgdGhlIGNvbW1hCi0gICAg
ICAgICAgICAgICAgIyBpcyBub3Qgd2l0aGluIGF0dHJpYnV0ZSBicmFja2V0cywgZXhwcmVzc2Vk
IGhlcmUKLSAgICAgICAgICAgICAgICAjIGFzIGJlaW5nIGZvbGxvd2VkIGJ5IGEgJ10nIHdpdGhv
dXQgYSBwcmVjZWRpbmcgJ1snLgotICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IHRoaXMgYXNz
dW1lcyB0aGF0IGF0dHJpYnV0ZXMgZG9uJ3QgbmVzdC4KLSAgICAgICAgICAgICAgICBteSBAcGFy
YW1zID0gc3BsaXQoLywoPyFbXltdKlxdKS8sICRtZXRob2RTaWduYXR1cmUpOwotICAgICAgICAg
ICAgICAgIGZvcmVhY2goQHBhcmFtcykgewotICAgICAgICAgICAgICAgICAgICBteSAkbGluZSA9
ICRfOwotCi0gICAgICAgICAgICAgICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjppbnRl
cmZhY2VQYXJhbWV0ZXJTZWxlY3Rvci87Ci0gICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbURp
cmVjdGlvbiA9ICQxOwotICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1FeHRlbmRlZEF0dHJp
YnV0ZXMgPSAoZGVmaW5lZCgkMikgPyAkMiA6ICIgIik7IGNob3AoJHBhcmFtRXh0ZW5kZWRBdHRy
aWJ1dGVzKTsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtVHlwZSA9IChkZWZpbmVkKCQz
KSA/ICQzIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAoZGVmaW5lZCgkNCkgPyAkNCA6IGRpZSgi
UGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwotCi0gICAgICAgICAgICAgICAg
ICAgIG15ICRwYXJhbURhdGFOb2RlID0gbmV3IGRvbVNpZ25hdHVyZSgpOwotICAgICAgICAgICAg
ICAgICAgICAkcGFyYW1EYXRhTm9kZS0+ZGlyZWN0aW9uKCRwYXJhbURpcmVjdGlvbik7Ci0gICAg
ICAgICAgICAgICAgICAgICRwYXJhbURhdGFOb2RlLT5uYW1lKCRwYXJhbU5hbWUpOwotICAgICAg
ICAgICAgICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZSgkcGFyYW1UeXBlKTsKLSAgICAgICAg
ICAgICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcyhwYXJzZUV4dGVu
ZGVkQXR0cmlidXRlcygkcGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMpKTsKLQotICAgICAgICAgICAg
ICAgICAgICBteSAkYXJyYXlSZWYgPSAkbmV3RGF0YU5vZGUtPnBhcmFtZXRlcnM7Ci0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJHBhcmFtRGF0YU5vZGUpOwotCi0gICAgICAg
ICAgICAgICAgICAgIHByaW50ICIgIHwgICB8PiAgUGFyYW07IFRZUEUgXCIkcGFyYW1UeXBlXCIg
TkFNRSBcIiRwYXJhbU5hbWVcIiIgLiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBFeHRl
bmRlZEF0dHJpYnV0ZXMoIlxuICB8ICAgICAgICAgICAgICAiLCAkcGFyYW1EYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzKSAuICJcbiIgdW5sZXNzICRiZVF1aWV0OyAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcGFyc2VQYXJhbWV0ZXJzKCRuZXdEYXRhTm9k
ZSwgJG1ldGhvZFNpZ25hdHVyZSk7CiAKICAgICAgICAgICAgICAgICBteSAkYXJyYXlSZWYgPSAk
ZGF0YU5vZGUtPmZ1bmN0aW9uczsKICAgICAgICAgICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRu
ZXdEYXRhTm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0lETFN0cnVjdHVyZS5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3Ry
dWN0dXJlLnBtCmluZGV4IGY5ZGQ0YWJhMWYzNDllYjg5MzI3MzFlN2YzNGI0NjlhODg2ZjViM2Mu
LjBlOTM3NDlkYTE4ZGJmOWJlZjUwYTIxYzViNzUwN2YzNzE5ZWYwNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtCkBAIC00MCw2ICs0MCw3
IEBAIHN0cnVjdCggZG9tQ2xhc3MgPT4gewogICAgIGZ1bmN0aW9ucyA9PiAnQCcsICAgICMgTGlz
dCBvZiAnZG9tRnVuY3Rpb24nCiAgICAgYXR0cmlidXRlcyA9PiAnQCcsICAgICMgTGlzdCBvZiAn
ZG9tQXR0cmlidXRlJyAgICAKICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVu
ZGVkIGF0dHJpYnV0ZXMKKyAgICBjb25zdHJ1Y3RvciA9PiAnJCcsICMgQ29uc3RydWN0b3IKIH0p
OwogCiAjIFVzZWQgdG8gcmVwcmVzZW50IGRvbUNsYXNzIGNvbnRlbnRzIChuYW1lIG9mIG1ldGhv
ZCwgc2lnbmF0dXJlKQpAQCAtODcsOCArODgsOCBAQCBvdXIgJGlkbERhdGFUeXBlID0gJ1thLXpB
LVowLTlcIF0nOyAgICMgR2VuZXJpYyBkYXRhIHR5cGUgaWRlbnRpZmllcgogIyBNYWdpYyBJREwg
cGFyc2luZyByZWd1bGFyIGV4cHJlc3Npb25zCiBteSAkc3VwcG9ydGVkVHlwZXMgPSAiKCg/OnVu
c2lnbmVkICk/KD86aW50fHNob3J0fCg/OmxvbmcgKT9sb25nKXwoPzokaWRsSWROcyopKSI7CiAK
LSMgU3BlY2lhbCBJREwgbm90YXRpb25zCi1vdXIgJGV4dGVuZGVkQXR0cmlidXRlU3ludGF4ID0g
J1xbW15dXSpcXSc7ICMgVXNlZCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcworIyBTcGVjaWFsIElE
TCBub3RhdGlvbnMuIFRoaXMgcmVndWxhciBleHByZXNzaW9uIGV4dHJhY3RzIHRoZSBzdHJpbmcg
YmV0d2VlbiB0aGUgZmlyc3QgWyBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgXS4KK291ciAkZXh0ZW5k
ZWRBdHRyaWJ1dGVTeW50YXggPSBxci9cW1teXFtcXV0qKD86KD8/eyRJRExTdHJ1Y3R1cmU6OmV4
dGVuZGVkQXR0cmlidXRlU3ludGF4fSlbXlxbXF1dKikqXF0veDsgIyBVc2VkIGZvciBleHRlbmRl
ZCBhdHRyaWJ1dGVzCiAKICMgUmVndWxhciBleHByZXNzaW9uIGJhc2VkIElETCAnc3ludGFjdGlj
YWwgdG9rZW5pemVyJyB1c2VkIGluIHRoZSBJRExQYXJzZXIKIG91ciAkbW9kdWxlU2VsZWN0b3Ig
PSAnbW9kdWxlXHMqKCcgLiAkaWRsSWQgLiAnKilccyp7JzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAppbmRleCAxZjBh
YTE4Yzg0NTBlYjVhZjQzOGFkYzBjMWRhMDNhNDc4MWRkMjA5Li43NDc0ZGFjZDAwODgxZmU0Yjc3
NmRiOWZjZDU2YTExZGIxMGVjYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsCkBAIC0zMiw3ICszMiwxMSBAQCBt
b2R1bGUgdGVzdCB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9Q29uZGl0
aW9uMXxDb25kaXRpb24yLAogICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAotICAgICAgICBDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsCisgICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBzdHIxLCBpbiBb
T3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBzdHIyKSwKKyAgICAgICAg
Q29uc3RydWN0b3JXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgICAgIFY4Q29uc3Ry
dWN0b3JTZXRzQWN0aXZlRE9NV3JhcHBlciwKKyAgICAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNl
cHRpb24KICAgICBdIFRlc3RJbnRlcmZhY2UgewogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggMDU5NWJiZTMwYjJl
MGU3NzllZTkxNmY2YjM1MjAyZmJkZTI1NGFjNi4uZmEwZDgwODJmNzQ4MmM4N2FhM2VmMjA5MDlk
YTIwM2RhM2VhMzlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbApAQCAtMzIsNiArMzIsNyBAQAogbW9kdWxlIHRlc3QgewogICAgIGlu
dGVyZmFjZSBbCiAgICAgICAgIExlZ2FjeURlZmF1bHRPcHRpb25hbEFyZ3VtZW50cywKKyAgICAg
ICAgQ29uc3RydWN0b3IKICAgICBdIFRlc3RPYmogewogICAgICAgICAvLyBBdHRyaWJ1dGVzCiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgcmVhZE9ubHlJbnRBdHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBiNTYzYTQ1N2M5OTYzOTE1ZDM3N2Q4ZDQyZTVk
ZWE4MmE3MzIzMDBhLi4zNWIzODJkNTRjZTZjMDdlYTJkOTBkYmRkZjNiNjdlNmUzNDFlNjUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjMsOCArMjMsMTAgQEAKIAogI2lmIEVOQUJMRShD
b25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhCaW5k
aW5nU3RhdGUuaCIKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOElzb2xh
dGVkQ29udGV4dC5oIgpAQCAtNDMsOSArNDUsMzQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZv
aWQgVjhfVVNFKFQpIHsgfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0SW50ZXJmYWNl
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAg
SU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFjZS5Db250cnVjdG9yIik7Ci0gICAgcmV0dXJuIFY4
UHJveHk6OmNvbnN0cnVjdERPTU9iamVjdFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0PFRlc3RJ
bnRlcmZhY2U+KGFyZ3MsICZpbmZvKTsKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNl
LkNvbnN0cnVjdG9yIik7CisKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBj
YWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBh
cmd1bWVudHMiLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRl
cjw+LCBzdHIxLCBhcmdzWzBdKTsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9O
X0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0cjIsIGFyZ3NbMV0pOworCisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBp
ZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUZXN0SW50ZXJmYWNlIGNv
bnN0cnVjdG9yJ3MgYXNzb2NpYXRlZCBjb250ZXh0IGlzIG5vdCBhdmFpbGFibGUiLCBWOFByb3h5
OjpSZWZlcmVuY2VFcnJvcik7CisKKyAgICBSZWZQdHI8VGVzdEludGVyZmFjZT4gb2JqID0gVGVz
dEludGVyZmFjZTo6Y3JlYXRlKHN0cjEsIHN0cjIsIGNvbnRleHQsIGVjKTsKKyAgICBpZiAoZWMp
CisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihh
cmdzLkhvbGRlcigpLCAmaW5mbywgb2JqLmdldCgpKTsKKyAgICBvYmotPnJlZigpOworICAgIFY4
RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KG9iai5nZXQoKSwgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CisgICAgcmV0dXJu
IGFyZ3MuSG9sZGVyKCk7CisgIGZhaWw6CisgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQor
CiBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdEludGVyZmFjZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBkZXNjKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CkBAIC01NCw3ICs4MSw3
IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6CiAgICAgICAgIDAsIDAsCiAgICAgICAgIDAsIDAp
OwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywg
aXQgd2lsbCBub3QgYmUgdXNlZC4KLSAgICAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhUZXN0
SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKKyAgICBkZXNjLT5TZXRDYWxsSGFuZGxl
cihWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIAogCiAgICAgLy8g
Q3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHAKaW5kZXggYzBhMWFiMTM2NjI4ZjA2OTgzMjlmYWQ5NjI4ODBiMWMwMTVl
ODAxYi4uZTViMmNiNGQ4NzRhZjFkYTZiNGMzYzY3ZGE5OGMwMDdhZWQzNGE0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtNTMsNiArNTMsNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiBzdGF0aWMgY29uc3QgQmF0Y2hlZENhbGxiYWNrIFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyQ2FsbGJhY2tzW10gPSB7CiAgICAgeyJtZXRob2QiLCBUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lckludGVybmFsOjptZXRob2RDYWxsYmFja30sCiB9OworCiBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gZGVzYykKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApp
bmRleCBmOGY2YzJlOGMzNWQ0NTU1MDMwYjg1ZTA2NDRmN2RmMDkyODJkMTI4Li4zM2QxYTQwMjhh
ZDI3ZGQxNzU5MjcwMzFlMGNiYTRlNjc2YWRmMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMTIyOSw2ICsx
MjI5LDcgQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdE9iakF0dHJzW10gPSB7
CiAgICAgLy8gQXR0cmlidXRlICdoYXNoJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0
QXR0cjogJycpCiAgICAgeyJoYXNoIiwgVGVzdE9iakludGVybmFsOjpoYXNoQXR0ckdldHRlciwg
MCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiB9OworCiBzdGF0aWMgY29uc3QgQmF0Y2hlZENhbGxiYWNrIFRl
c3RPYmpDYWxsYmFja3NbXSA9IHsKICAgICB7InZvaWRNZXRob2QiLCBUZXN0T2JqSW50ZXJuYWw6
OnZvaWRNZXRob2RDYWxsYmFja30sCiAgICAgeyJpbnRNZXRob2QiLCBUZXN0T2JqSW50ZXJuYWw6
OmludE1ldGhvZENhbGxiYWNrfSwKQEAgLTEyNTksNiArMTI2MCw3IEBAIHN0YXRpYyBjb25zdCBC
YXRjaGVkQ2FsbGJhY2sgVGVzdE9iakNhbGxiYWNrc1tdID0gewogICAgIHsibWV0aG9kV2l0aENh
bGxiYWNrQW5kT3B0aW9uYWxBcmciLCBUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnQ2FsbGJhY2t9LAogICAgIHsib3ZlcmxvYWRlZE1ldGhvZCIsIFRlc3RP
YmpJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZENhbGxiYWNrfSwKIH07CisKIHN0YXRpYyBjb25z
dCBCYXRjaGVkQ29uc3RhbnQgVGVzdE9iakNvbnN0c1tdID0gewogICAgIHsiQ09OU1RfVkFMVUVf
MCIsIHN0YXRpY19jYXN0PHNpZ25lZCBpbnQ+KDApfSwKICAgICB7IkNPTlNUX1ZBTFVFXzEiLCBz
dGF0aWNfY2FzdDxzaWduZWQgaW50PigxKX0sCkBAIC0xMjczLDYgKzEyNzUsNyBAQCBzdGF0aWMg
Y29uc3QgQmF0Y2hlZENvbnN0YW50IFRlc3RPYmpDb25zdHNbXSA9IHsKICAgICB7IkNPTlNUX1ZB
TFVFXzE0Iiwgc3RhdGljX2Nhc3Q8c2lnbmVkIGludD4oMHgxYWJjKX0sCiB9OwogCisKIENPTVBJ
TEVfQVNTRVJUKDAgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVfMCwgVGVzdE9iakVudW1DT05TVF9W
QUxVRV8wSXNXcm9uZ1VzZURvbnRDaGVja0VudW1zKTsKIENPTVBJTEVfQVNTRVJUKDEgPT0gVGVz
dE9iajo6Q09OU1RfVkFMVUVfMSwgVGVzdE9iakVudW1DT05TVF9WQUxVRV8xSXNXcm9uZ1VzZURv
bnRDaGVja0VudW1zKTsKIENPTVBJTEVfQVNTRVJUKDIgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVf
MiwgVGVzdE9iakVudW1DT05TVF9WQUxVRV8ySXNXcm9uZ1VzZURvbnRDaGVja0VudW1zKTsKQEAg
LTEyODUsNiArMTI4OCwyMiBAQCBDT01QSUxFX0FTU0VSVCgweDAxID09IFRlc3RPYmo6OkNPTlNU
X1ZBTFVFXzEyLCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzEySXNXcm9uZwogQ09NUElMRV9BU1NF
UlQoMFgyMCA9PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8xMywgVGVzdE9iakVudW1DT05TVF9WQUxV
RV8xM0lzV3JvbmdVc2VEb250Q2hlY2tFbnVtcyk7CiBDT01QSUxFX0FTU0VSVCgweDFhYmMgPT0g
VGVzdE9iajo6Q09OU1RfVkFMVUVfMTQsIFRlc3RPYmpFbnVtQ09OU1RfVkFMVUVfMTRJc1dyb25n
VXNlRG9udENoZWNrRW51bXMpOwogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T2JqOjpj
b25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5D
X1NUQVRTKCJET00uVGVzdE9iai5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29u
c3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6VHlwZUVy
cm9yKTsKKworCisgICAgUmVmUHRyPFRlc3RPYmo+IG9iaiA9IFRlc3RPYmo6OmNyZWF0ZSgpOwor
CisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBv
YmouZ2V0KCkpOworICAgIG9iai0+cmVmKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBw
ZXJGb3JET01PYmplY3Qob2JqLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3
KGFyZ3MuSG9sZGVyKCkpKTsKKyAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKK30KKwogc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpU
ZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKIHsKICAg
ICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCmluZGV4IGEyOTZjZDBiMTU5ZDZiZTRl
YjM5MWIzYTY1NmRjZTQ5YTA5YWRiODQuLjRiYzQxY2NmZTk1MWVjMjJjYmQ0MDFjYzEwOThjYzZm
YWM5MDJjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBX
cmFwcGVyVHlwZUluZm8gaW5mbzsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGN1
c3RvbU1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGN1c3RvbU1ldGhvZFdpdGhBcmdzQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0
b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKTsKICAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGN1c3RvbUF0dHJBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7CiAgICAgc3RhdGljIHZv
aWQgY3VzdG9tQXR0ckFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7
CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFw
cGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105706</attachid>
            <date>2011-08-30 15:20:44 -0700</date>
            <delta_ts>2011-08-31 00:45:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66536-20110830152043.patch</filename>
            <type>text/plain</type>
            <size>38582</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM5ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YzQxZGM5YjY3MDdiNDQw
ZjNjMmE0YTQ4YjQ1MzAwNGVkYmUyOTIyLi5jZTg1MDU4YjFhMjEwNTFiMmFlMDExMmEzZTE1NDZh
MDIwMTI4ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDgtMzAgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViIElE
TCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gSURMUGFyc2VyLnBtIGFuZCBDb2Rl
R2VuZXJhdG9yVjgucG0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjUzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBzcGVjIGlzIGhlcmU6IGh0dHA6Ly93d3cudzMub3JnL1RSL1dlYklETC8jQ29u
c3RydWN0b3IKKworICAgICAgICBbMV0gSW50cm9kdWNlZCBXZWIgSURMICdDb25zdHJ1Y3Rvcicg
ZXh0ZW5kZWQgYXR0cmlidXRlLgorCisgICAgICAgIFsyXSBBZGRlZCAnQ29uc3RydWN0b3JXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQnIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKyAgICAgICAgLSBU
aGUgY29uc3RydWN0b3IgcGFzc2VzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdG8gYSBYWFg6OmNy
ZWF0ZSgpIG1ldGhvZCwKKyAgICAgICAgbGlrZSBYWFg6OmNyZWF0ZSguLi4sIGNvbnRleHQsIC4u
LikuCisKKyAgICAgICAgWzNdIEFkZGVkICdWOENvbnN0cnVjdG9yU2V0c0FjdGl2ZURPTVdyYXBw
ZXInIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKyAgICAgICAgLSBUaGUgY29uc3RydWN0b3IgY2FsbHMg
VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QoKQorICAgICAgICBp
bnN0ZWFkIG9mIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KCkuCisKKyAg
ICAgICAgWzRdIEFkZGVkICdDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbicgZXh0ZW5kZWQgYXR0
cmlidXRlLgorICAgICAgICAtIEEgcGxhY2Vob2xkZXIgZm9yIEV4Y2VwdGlvbkNvZGUgaXMgcGFz
c2VkIHRvIGEgWFhYOjpjcmVhdGUoKSBtZXRob2QsCisgICAgICAgIGxpa2UgWFhYOjpjcmVhdGUo
Li4uLCBlYykuCisgICAgICAgIC0gV2UgY2FuIHVzZSAnQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRp
b24nIGFuZCAnQ29uc3RydWN0b3JXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQnIHRvZ2V0aGVy
LgorCisgICAgICAgIE5vdGU6CisgICAgICAgIC0gQ29uc3RydWN0b3Igb3ZlcmxvYWRpbmcgaXMg
bm90IHlldCBpbXBsZW1lbnRlZC4KKyAgICAgICAgLSBXZSBjYW5ub3QgeWV0IHNwZWNpZnkgW09w
dGlvbmFsXSB3aXRob3V0IENhbGxXaXRoRGVmYXVsdFZhbHVlLgorCisgICAgICAgIFRlc3Q6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAorICAg
ICAgICAgICAgICBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAg
ICAgICAoR2VuZXJhdGVIZWFkZXIpOiBHZW5lcmF0ZXMgY29uc3RydWN0b3JDYWxsYmFjaygpIGhl
YWRlciwgaWYgJ0NvbnN0cnVjdG9yJyBpcyBzcGVjaWZpZWQuCisgICAgICAgIChHZW5lcmF0ZUZ1
bmN0aW9uQ2FsbGJhY2spOiBVc2VzIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygpIGFuZCBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygpLgorICAgICAgICAoR2VuZXJhdGVBcmd1bWVudHNDb3Vu
dENoZWNrKTogU3BsaXRzIG91dCBvZiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2soKSBmb3IgcmV1
c2UuCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6IERpdHRvLgorICAgICAgICAo
R2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKTogR2VuZXJhdGVzIGNvbnN0cnVjdG9yQ2FsbGJh
Y2soKSBkZWZpbml0aW9uLgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChwYXJzZUV4dGVu
ZGVkQXR0cmlidXRlcyk6IFByZXZpb3VzbHksIG9ubHkgYSBzdHJpbmcgaW4gdGhlICJBPUIsIEMs
IEQsIEU9RiIgZm9ybWF0IGNhbiBiZSBwYXJzZWQuIFRoaXMgcGF0Y2ggZW5hYmxlcyB0byBwYXJz
ZSBhIHN0cmluZyBpbiB0aGUgIkE9QiwgQywgRCwgRT1GLCBHKGluIERPTVN0cmluZyBzLCBpbiBb
SCwgSSwgSl0gRE9NU3RyaW5nIHQpIiBmb3JtYXQuCisgICAgICAgIChwYXJzZVBhcmFtZXRlcnMp
OiBTcGxpdHMgb3V0IG9mIFBhcnNlSW50ZXJmYWNlKCkgZm9yIHJldXNlLgorICAgICAgICAoUGFy
c2VJbnRlcmZhY2UpOiBVc2VzIHBhcnNlUGFyYW1ldGVycygpLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvSURMU3RydWN0dXJlLnBtOiBBZGRlZCBkb21DbGFzc3tjb25zdHJ1Y3Rvcn0uIENo
YW5nZWQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBleHRyYWN0IHRoZSBsaXN0IG9mIGV4dGVu
ZGVkIGF0dHJpYnV0ZXMuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRl
cmZhY2UuaWRsOiBBZGRlZCBhbGwgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdGhhdCB0aGlzIHBh
dGNoIGlzIGdvaW5nIHRvIGludHJvZHVjZS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGw6IEFkZGVkICdDb25zdHJ1Y3RvcicuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6IFVwZGF0ZWQgdGhlIHRlc3QgcmVz
dWx0LgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHA6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6Y29u
c3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5oOiBEaXR0by4KKwogMjAxMS0wOC0yOSAgVG9tIFpha3JhanNlayAgPHRvbXpAY29k
ZWF1cm9yYS5vcmc+CiAKICAgICAgICAgY2FudmFzIGFyYygpIG1pc3NpbmcgbGluZSB0byBzdGFy
dCBvZiBhcmMgaWYgc3dpbmcgaXMgemVybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBmM2M2NDQxOGY3OTFmYzcwZDdmNzFk
NjliOGU4OGYyM2YzNmQ2YTIwLi4zZmNiNzJkODRiMzdkNTI5MDYyMzJkYjlmZDhmZjU4YzBmZjNm
MjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQpAQCAtMzU0LDcgKzM1NCw3IEBAIEVORAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9y
In0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3Rv
ciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQi
fSkgeworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25z
dHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29u
c3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0
cnVjdGVkIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3Ii
fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAgICAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpOwogRU5ECkBAIC0xMjUzLDI4ICsxMjUzLDcgQEAgRU5ECiAKICAgICBteSAkbnVt
UGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKIAotICAgIG15ICRyZXF1aXJl
c0FsbEFyZ3VtZW50czsKLSAgICBteSAkcmVxdWlyZXNBbGxBcmd1bWVudHNEZWZhdWx0ID0gIiI7
Ci0gICAgaWYgKCEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZWdhY3lEZWZhdWx0
T3B0aW9uYWxBcmd1bWVudHMifSkgewotICAgICAgICAkcmVxdWlyZXNBbGxBcmd1bWVudHNEZWZh
dWx0ID0gIlJhaXNlIjsKLSAgICB9Ci0gICAgJHJlcXVpcmVzQWxsQXJndW1lbnRzID0gJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXF1aXJlc0FsbEFyZ3VtZW50
cyJ9IHx8ICRyZXF1aXJlc0FsbEFyZ3VtZW50c0RlZmF1bHQ7Ci0gICAgaWYgKCRyZXF1aXJlc0Fs
bEFyZ3VtZW50cykgewotICAgICAgICBteSAkbnVtTWFuZGF0b3J5UGFyYW1zID0gQHskZnVuY3Rp
b24tPnBhcmFtZXRlcnN9OwotICAgICAgICBmb3JlYWNoIG15ICRwYXJhbSAocmV2ZXJzZShAeyRm
dW5jdGlvbi0+cGFyYW1ldGVyc30pKSB7Ci0gICAgICAgICAgICBpZiAoJHBhcmFtLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewotICAgICAgICAgICAgICAgICRudW1NYW5kYXRv
cnlQYXJhbXMtLTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbGFzdDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgJG51bU1hbmRhdG9yeVBhcmFtcylcbiIpOwotICAg
ICAgICBpZiAoJHJlcXVpcmVzQWxsQXJndW1lbnRzIGVxICJSYWlzZSIpIHsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFwiTm90
IGVub3VnaCBhcmd1bWVudHNcIiwgVjhQcm94eTo6VHlwZUVycm9yKTtcbiIpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCRmdW5j
dGlvbiwgJGRhdGFOb2RlKSk7CiAKICAgICBteSAoJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z0xpc3RQ
cm9wZXJ0eVR5cGUsICRzdmdOYXRpdmVUeXBlKSA9IEdldFNWR1Byb3BlcnR5VHlwZXMoJGltcGxD
bGFzc05hbWUpOwogCkBAIC0xMzQ2LDYgKzEzMjUsNjEgQEAgRU5ECiBFTkQKICAgICB9CiAKKyAg
ICBteSAoJHBhcmFtZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjaygkZnVuY3Rpb24sICRpbXBsQ2xhc3NOYW1lKTsKKyAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcpOworCisgICAgIyBCdWlsZCB0aGUgZnVu
Y3Rpb24gY2FsbCBzdHJpbmcuCisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgR2VuZXJhdGVG
dW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0aW9uLCAkcGFyYW1JbmRleCwgIiAgICAiLCAkaW1wbENs
YXNzTmFtZSkpOworCisgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgfVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgZmFpbDpcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG4iKTsK
KyAgICB9CisKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifVxuXG4iKTsKK30KKworc3Vi
IEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaworeworICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0
OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgbXkgJGFyZ3VtZW50c0NvdW50Q2hl
Y2tTdHJpbmcgPSAiIjsKKyAgICBteSAkcmVxdWlyZXNBbGxBcmd1bWVudHM7CisgICAgbXkgJHJl
cXVpcmVzQWxsQXJndW1lbnRzRGVmYXVsdCA9ICIiOworICAgIGlmICghJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiTGVnYWN5RGVmYXVsdE9wdGlvbmFsQXJndW1lbnRzIn0pIHsKKyAg
ICAgICAgJHJlcXVpcmVzQWxsQXJndW1lbnRzRGVmYXVsdCA9ICJSYWlzZSI7CisgICAgfQorICAg
ICRyZXF1aXJlc0FsbEFyZ3VtZW50cyA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiUmVxdWlyZXNBbGxBcmd1bWVudHMifSB8fCAkcmVxdWlyZXNBbGxBcmd1bWVu
dHNEZWZhdWx0OworICAgIGlmICgkcmVxdWlyZXNBbGxBcmd1bWVudHMpIHsKKyAgICAgICAgbXkg
JG51bU1hbmRhdG9yeVBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKyAgICAgICAg
Zm9yZWFjaCBteSAkcGFyYW0gKHJldmVyc2UoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSkgewor
ICAgICAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0p
IHsKKyAgICAgICAgICAgICAgICAkbnVtTWFuZGF0b3J5UGFyYW1zLS07CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGxhc3Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCRudW1NYW5kYXRvcnlQYXJhbXMgPj0gMSkgeworICAgICAgICAgICAgJGFy
Z3VtZW50c0NvdW50Q2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8ICRudW1N
YW5kYXRvcnlQYXJhbXMpXG4iOworICAgICAgICAgICAgaWYgKCRyZXF1aXJlc0FsbEFyZ3VtZW50
cyBlcSAiUmFpc2UiKSB7CisgICAgICAgICAgICAgICAgJGFyZ3VtZW50c0NvdW50Q2hlY2tTdHJp
bmcgLj0gIiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXCJOb3QgZW5vdWdoIGFyZ3VtZW50c1wi
LCBWOFByb3h5OjpUeXBlRXJyb3IpO1xuIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgJGFyZ3VtZW50c0NvdW50Q2hlY2tTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gJGFyZ3VtZW50c0NvdW50Q2hlY2tTdHJpbmc7Cit9CisKK3N1YiBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjaworeworICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OworICAgIG15
ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisKKyAgICBteSAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcg
PSAiIjsKICAgICBteSAkcGFyYW1JbmRleCA9IDA7CiAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVy
IChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgVHJhbnNsYXRlUGFyYW1ldGVy
KCRwYXJhbWV0ZXIpOwpAQCAtMTM1OCwxMCArMTM5MiwxMCBAQCBFTkQKICAgICAgICAgbXkgJG9w
dGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn07ICAg
ICAgICAKICAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoRGVm
YXVsdFZhbHVlIiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNr
In0pIHsKICAgICAgICAgICAgICMgR2VuZXJhdGUgZWFybHkgY2FsbCBpZiB0aGVyZSBhcmUgbm90
IGVub3VnaCBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFyYW1JbmRleCkge1xuIik7CisgICAgICAgICAg
ICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFy
YW1JbmRleCkge1xuIjsKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNhbGwgPSBHZW5lcmF0ZUZ1
bmN0aW9uQ2FsbFN0cmluZygkZnVuY3Rpb24sICRwYXJhbUluZGV4LCAiICAgICIgeCAyLCAkaW1w
bENsYXNzTmFtZSk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAkZnVuY3Rp
b25DYWxsKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgfVxuIik7
CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gJGZ1bmN0aW9uQ2FsbDsKKyAg
ICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIH1cbiI7CiAgICAgICAgIH0K
IAogICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CkBAIC0xMzcw
LDMzICsxNDA0LDMzIEBAIEVORAogICAgICAgICAgICAgbXkgJGNsYXNzTmFtZSA9IEdldENhbGxi
YWNrQ2xhc3NOYW1lKCRwYXJhbWV0ZXItPnR5cGUpOwogICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siJGNsYXNzTmFtZS5oIn0gPSAxOwogICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICBSZWZQdHI8IiAuICRwYXJhbWV0ZXItPnR5cGUgLiAiPiAkcGFy
YW1ldGVyTmFtZTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAkcGFyYW1JbmRleCAmJiAhYXJnc1skcGFyYW1JbmRl
eF0tPklzTnVsbCgpICYmICFhcmdzWyRwYXJhbUluZGV4XS0+SXNVbmRlZmluZWQoKSkge1xuIik7
Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgaWYgKCFh
cmdzWyRwYXJhbUluZGV4XS0+SXNPYmplY3QoKSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01J
U01BVENIX0VSUik7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgICAgICAkcGFyYW1ldGVyTmFtZSA9ICR7Y2xhc3NOYW1lfTo6Y3JlYXRlKGFyZ3NbJHBh
cmFtSW5kZXhdLCBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpO1xuIik7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9XG4iKTsKKyAgICAgICAgICAgICAg
ICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBSZWZQdHI8IiAuICRwYXJhbWV0ZXItPnR5
cGUgLiAiPiAkcGFyYW1ldGVyTmFtZTtcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAkcGFyYW1JbmRleCAmJiAhYXJn
c1skcGFyYW1JbmRleF0tPklzTnVsbCgpICYmICFhcmdzWyRwYXJhbUluZGV4XS0+SXNVbmRlZmlu
ZWQoKSkge1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAg
ICAgICAgaWYgKCFhcmdzWyRwYXJhbUluZGV4XS0+SXNPYmplY3QoKSlcbiI7CisgICAgICAgICAg
ICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihUWVBFX01JU01BVENIX0VSUik7XG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJD
aGVja1N0cmluZyAuPSAiICAgICAgICAkcGFyYW1ldGVyTmFtZSA9ICR7Y2xhc3NOYW1lfTo6Y3Jl
YXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpO1xuIjsK
KyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9ICRwYXJhbUluZGV4IHx8ICFhcmdzWyRwYXJhbUlu
ZGV4XS0+SXNPYmplY3QoKSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTtcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgUmVmUHRyPCIg
LiAkcGFyYW1ldGVyLT50eXBlIC4gIj4gJHBhcmFtZXRlck5hbWUgPSAke2NsYXNzTmFtZX06OmNy
ZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTtcbiIp
OworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDw9ICRwYXJhbUluZGV4IHx8ICFhcmdzWyRwYXJhbUluZGV4XS0+SXNPYmplY3Qo
KSlcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTtcbiI7CisgICAgICAgICAgICAg
ICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgUmVmUHRyPCIgLiAkcGFyYW1ldGVyLT50
eXBlIC4gIj4gJHBhcmFtZXRlck5hbWUgPSAke2NsYXNzTmFtZX06OmNyZWF0ZShhcmdzWyRwYXJh
bUluZGV4XSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTtcbiI7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzaWYgKCRwYXJhbWV0ZXItPnR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSIpIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIn0gPSAxOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBib29s
ICR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdyA9IGZhbHNlO1xuIik7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVUeXBlICRwYXJhbWV0ZXJOYW1lID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1skcGFyYW1JbmRleF0sICR7cGFyYW1ldGVy
TmFtZX1EaWRUaHJvdyk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgaWYgKCR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdylcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTtcbiIp
OworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgYm9vbCAke3BhcmFt
ZXRlck5hbWV9RGlkVGhyb3cgPSBmYWxzZTtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hl
Y2tTdHJpbmcgLj0gIiAgICAkbmF0aXZlVHlwZSAkcGFyYW1ldGVyTmFtZSA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCAke3BhcmFtZXRlck5hbWV9RGlk
VGhyb3cpO1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlm
ICgke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cpXG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7XG4iOwogICAgICAg
ICB9IGVsc2lmIChUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBhcmFtZXRlcikpIHsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFtZXRlck5h
bWUgPSAiIC4KLSAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJh
cmdzWyRwYXJhbUluZGV4XSIpIC4gIjtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICBpZiAoVU5MSUtFTFkoISRwYXJhbWV0ZXJOYW1lKSkge1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAg
ICBnb3RvIGZhaWw7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgfVxuIik7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAkbmF0
aXZlVHlwZSAkcGFyYW1ldGVyTmFtZSA9ICIgLgorICAgICAgICAgICAgICAgICBKU1ZhbHVlVG9O
YXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5kZXhdIikgLiAiO1xuIjsKKyAgICAgICAg
ICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChVTkxJS0VMWSghJHBhcmFtZXRl
ck5hbWUpKSB7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAg
ICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgICAgIGdvdG8gZmFpbDtcbiI7CisgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAgICAgICB9IGVsc2lmICgkbmF0aXZlVHlw
ZSA9fiAvXlY4UGFyYW1ldGVyLykgewogICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRv
TmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJHBhcmFt
ZXRlciwgJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4gIlxuIik7CisgICAg
ICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAiIC4gQ29udmVydFRvVjhQYXJh
bWV0ZXIoJHBhcmFtZXRlciwgJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4g
IlxuIjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4Qmlu
ZGluZ01hY3Jvcy5oIn0gPSAxOwogICAgICAgICAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVj
a2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUgYXJndW1lbnQncyB0
eXBlIGlzIGFuCkBAIC0xNDA5LDM4ICsxNDQzLDExNSBAQCBFTkQKICAgICAgICAgICAgICAgICBt
eSAkYXJnVmFsdWUgPSAiYXJnc1skcGFyYW1JbmRleF0iOwogICAgICAgICAgICAgICAgIG15ICRh
cmdUeXBlID0gR2V0VHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlcik7CiAgICAgICAgICAgICAg
ICAgaWYgKElzV3JhcHBlclR5cGUoJGFyZ1R5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAkcGFyYW1JbmRl
eCAmJiAhaXNVbmRlZmluZWRPck51bGwoJGFyZ1ZhbHVlKSAmJiAhVjgke2FyZ1R5cGV9OjpIYXNJ
bnN0YW5jZSgkYXJnVmFsdWUpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICAgICAgVjhQcm94eTo6dGhyb3dUeXBlRXJyb3IoKTtcbiIpOwot
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1
cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOworICAgICAgICAgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA+ICRwYXJhbUlu
ZGV4ICYmICFpc1VuZGVmaW5lZE9yTnVsbCgkYXJnVmFsdWUpICYmICFWOCR7YXJnVHlwZX06Okhh
c0luc3RhbmNlKCRhcmdWYWx1ZSkpIHtcbiI7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0
ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBWOFByb3h5Ojp0aHJvd1R5cGVFcnJvcigpO1xuIjsK
KyAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIHJl
dHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpO1xuIjsKKyAgICAgICAgICAgICAgICAgICAg
JHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgfVxuIjsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIEVY
Q0VQVElPTl9CTE9DSygkbmF0aXZlVHlwZSwgJHBhcmFtZXRlck5hbWUsICIgLgotICAgICAgICAg
ICAgICAgICBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5kZXhdIikg
LiAiKTtcbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgRVhD
RVBUSU9OX0JMT0NLKCRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgIiAuCisgICAgICAgICAg
ICAgICAgIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiYXJnc1skcGFyYW1JbmRleF0iKSAu
ICIpO1xuIjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSXNJbmRleCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgIGlmIChVTkxJS0VMWSgkcGFyYW1ldGVyTmFtZSA8IDApKSB7XG4iKTsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIGVjID0gSU5ERVhfU0laRV9F
UlI7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIGdv
dG8gZmFpbDtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9
XG4iKTsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChVTkxJ
S0VMWSgkcGFyYW1ldGVyTmFtZSA8IDApKSB7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7XG4iOworICAgICAgICAg
ICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGdvdG8gZmFpbDtcbiI7CisgICAg
ICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAgICAgICB9CiAK
ICAgICAgICAgJHBhcmFtSW5kZXgrKzsKICAgICB9CisgICAgcmV0dXJuICgkcGFyYW1ldGVyQ2hl
Y2tTdHJpbmcsICRwYXJhbUluZGV4KTsKK30KIAotICAgICMgQnVpbGQgdGhlIGZ1bmN0aW9uIGNh
bGwgc3RyaW5nLgotICAgIG15ICRjYWxsU3RyaW5nID0gR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJp
bmcoJGZ1bmN0aW9uLCAkcGFyYW1JbmRleCwgIiAgICAiLCAkaW1wbENsYXNzTmFtZSk7Ci0gICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiRjYWxsU3RyaW5nIik7CitzdWIgR2VuZXJhdGVDb25z
dHJ1Y3RvckNhbGxiYWNrCit7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkgJGRh
dGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKworICAgIG15
ICRyYWlzZXNFeGNlcHRpb25zID0gQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9OworICAg
IGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclJhaXNlc0V4
Y2VwdGlvbiJ9KSB7CisgICAgICAgICRyYWlzZXNFeGNlcHRpb25zID0gMTsKKyAgICB9CisgICAg
aWYgKCEkcmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIg
KEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICAgICAgaWYgKCghJHBhcmFtZXRl
ci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0gYW5kIFR5cGVDYW5GYWlsQ29udmVy
c2lvbigkcGFyYW1ldGVyKSkgb3IgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Iklz
SW5kZXgifSkgeworICAgICAgICAgICAgICAgICRyYWlzZXNFeGNlcHRpb25zID0gMTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIG15IEBleHRyYUFyZ3VtZW50TGlzdDsK
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
JHtpbXBsQ2xhc3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQ29uc3RydWN0
b3IiKTsKKworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBh
IGZ1bmN0aW9uLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKK0VORAorCisgICAgcHVzaChAaW1w
bENvbnRlbnQsIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkZnVuY3Rpb24sICRkYXRhTm9k
ZSkpOwogCiAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgfVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgZmFpbDpcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIFY4
UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG4iKTsKKyAgICAg
ICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29kZS5oIn0gPSAxOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIlxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwO1xuIik7CiAgICAgfQogCi0gICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIn1cblxuIik7CisgICAgbXkgKCRwYXJhbWV0ZXJDaGVja1N0cmluZywgJHBhcmFtSW5kZXgp
ID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soJGZ1bmN0aW9uLCAkaW1wbENsYXNzTmFtZSk7Cisg
ICAgcHVzaChAaW1wbENvbnRlbnQsICRwYXJhbWV0ZXJDaGVja1N0cmluZyk7CisKKyAgICBpZiAo
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JXaXRoIn0gJiYgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JXaXRoIn0gZXEgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQiKSB7CisgICAgICAgIHB1c2goQGV4dHJhQXJndW1lbnRMaXN0LCAi
Y29udGV4dCIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworCisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCIke2ltcGxD
bGFzc05hbWV9IGNvbnN0cnVjdG9yJ3MgYXNzb2NpYXRlZCBjb250ZXh0IGlzIG5vdCBhdmFpbGFi
bGUiLCBWOFByb3h5OjpSZWZlcmVuY2VFcnJvcik7CitFTkQKKyAgICB9CisKKyAgICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24i
fSkgeworICAgICAgICBwdXNoKEBleHRyYUFyZ3VtZW50TGlzdCwgImVjIik7CisgICAgfQorCisg
ICAgbXkgQGFyZ3VtZW50TGlzdDsKKyAgICBteSAkaW5kZXggPSAwOworICAgIGZvcmVhY2ggbXkg
JHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CisgICAgICAgIGxhc3QgaWYg
JGluZGV4IGVxICRwYXJhbUluZGV4OworICAgICAgICBwdXNoKEBhcmd1bWVudExpc3QsICRwYXJh
bWV0ZXItPm5hbWUpOworICAgICAgICAkaW5kZXgrKzsKKyAgICB9CisKKyAgICBteSAkYXJndW1l
bnRTdHJpbmcgPSBqb2luKCIsICIsIEBhcmd1bWVudExpc3QsIEBleHRyYUFyZ3VtZW50TGlzdCk7
CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFJlZlB0cjwke2ltcGxDbGFzc05hbWV9PiBvYmogPSAke2ltcGxDbGFzc05hbWV9OjpjcmVh
dGUoJHthcmd1bWVudFN0cmluZ30pO1xuIik7CisKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24ifSkgeworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoZWMpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIGdvdG8gZmFpbDtcbiIpOworICAgIH0KKworICAgIG15ICRET01PYmpl
Y3QgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOENvbnN0cnVjdG9yU2V0c0Fj
dGl2ZURPTVdyYXBwZXIifSA/ICJBY3RpdmVET01PYmplY3QiIDogIkRPTU9iamVjdCI7CisgICAg
cHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3Jh
cHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgb2JqLmdldCgpKTsKKyAgICBvYmotPnJlZigpOwor
ICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtET01PYmplY3R9KG9iai5nZXQoKSwg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CisgICAgcmV0
dXJuIGFyZ3MuSG9sZGVyKCk7CitFTkQKKworICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykgewor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgZmFpbDpcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7XG4iKTsKKyAgICB9CisKKyAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4i
KTsKIH0KIAogc3ViIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEKQEAgLTE5MDEsNyArMjAx
Miw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgaWYgKEBkaXNhbGxvd3NTaGFk
b3dpbmcpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgQmF0Y2hl
ZEF0dHJpYnV0ZSBzaGFkb3dBdHRyc1tdID0ge1xuIik7CiAgICAgICAgIEdlbmVyYXRlQmF0Y2hl
ZEF0dHJpYnV0ZURhdGEoJGRhdGFOb2RlLCBcQGRpc2FsbG93c1NoYWRvd2luZyk7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAifTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
In07XG5cbiIpOwogICAgIH0KIAogICAgIG15ICRoYXNfYXR0cmlidXRlcyA9IDA7CkBAIC0xOTA5
LDcgKzIwMjAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAkaGFzX2F0
dHJpYnV0ZXMgPSAxOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBC
YXRjaGVkQXR0cmlidXRlICR7aW50ZXJmYWNlTmFtZX1BdHRyc1tdID0ge1xuIik7CiAgICAgICAg
IEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGRhdGFOb2RlLCAkYXR0cmlidXRlcyk7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn07XG5cbiIpOwogICAgIH0KIAogICAgICMgU2V0dXAgdGFibGUgb2Ygc3RhbmRhcmQg
Y2FsbGJhY2sgZnVuY3Rpb25zCkBAIC0xOTQ4LDcgKzIwNTksNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogRU5ECiAgICAgICAgICRudW1fY2FsbGJhY2tzKys7CiAgICAgfQotICAgIHB1
c2goQGltcGxDb250ZW50LCAifTtcbiIpICBpZiAkaGFzX2NhbGxiYWNrczsKKyAgICBwdXNoKEBp
bXBsQ29udGVudCwgIn07XG5cbiIpICBpZiAkaGFzX2NhbGxiYWNrczsKIAogICAgICMgU2V0dXAg
Y29uc3RhbnRzCiAgICAgbXkgJGhhc19jb25zdGFudHMgPSAwOwpAQCAtMTk2NywxNCArMjA3OCwx
NCBAQCBFTkQKIEVORAogICAgIH0KICAgICBpZiAoJGhhc19jb25zdGFudHMpIHsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
fTtcblxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkY29kZUdlbmVyYXRvci0+R2Vu
ZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRlZCgkZGF0YU5vZGUpKTsKICAgICB9
CiAKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifSAvLyBuYW1lc3BhY2UgJHtpbnRlcmZh
Y2VOYW1lfUludGVybmFsXG5cbiIpOwogCiAgICAgIyBJbiBuYW1lc3BhY2UgV2ViQ29yZSwgYWRk
IGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbiBmb3IgJ0NhbkJlQ29uc3RydWN0ZWQnLgotICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0gJiYg
ISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gJiYg
ISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSkg
eworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVj
dGVkIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVj
dG9yIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3Ry
dWN0b3IifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3Ii
fSkgewogICAgICAgICBteSAkdjhDb25zdHJ1Y3RGdW5jdGlvbjsKICAgICAgICAgbXkgJGNhbGxX
aXRoID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKICAgICAg
ICAgaWYgKCRjYWxsV2l0aCBhbmQgJGNhbGxXaXRoIGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
IikgewpAQCAtMTk4OCw4ICsyMDk5LDEzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2NsYXNz
TmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAg
SU5DX1NUQVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS5Db250cnVjdG9yIik7CiAgICAgcmV0dXJu
IFY4UHJveHk6OiR7djhDb25zdHJ1Y3RGdW5jdGlvbn08JGludGVyZmFjZU5hbWU+KGFyZ3MsICZp
bmZvKTsKIH0KKwogRU5ECi0gICB9CisgICAgfQorCisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1
Y3RvckNhbGxiYWNrKCRkYXRhTm9kZS0+Y29uc3RydWN0b3IsICRkYXRhTm9kZSwgJGludGVyZmFj
ZU5hbWUpOworICAgIH0KIAogICAgIG15ICRhY2Nlc3NfY2hlY2sgPSAiIjsKICAgICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tEb21haW5TZWN1cml0eSJ9ICYmICEo
JGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpKSB7CkBAIC0yMDQ3LDkgKzIxNjMsOSBAQCBF
TkQKICAgICAgICAgJGltcGxJbmNsdWRlc3sid3RmL1VudXNlZFBhcmFtLmgifSA9IDE7CiAgICAg
fQogCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0
cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25z
dHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29uc3Ry
dWN0ZWQifSkgeworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5C
ZUNvbnN0cnVjdGVkIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
Q29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3Rv
bUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3Ry
dWN0ZXIifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgICAgICBk
ZXNjLT5TZXRDYWxsSGFuZGxlcihWOCR7aW50ZXJmYWNlTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJh
Y2spOworICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4JHtpbnRlcmZhY2VOYW1lfTo6Y29uc3Ry
dWN0b3JDYWxsYmFjayk7CiBFTkQKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMDJmYTYyN2I2YzcxZjA3OWM2MGI2MGZiZGU2YTdk
NmZjMTQwMWVlZC4uN2YwN2VlMmYzMjA0MDVhMTkxYmVkYWI3OTJlYWZlYWI3YTdkOGJkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTIyLDYg
KzIyLDcgQEAKIHBhY2thZ2UgSURMUGFyc2VyOwogCiB1c2Ugc3RyaWN0OwordXNlIHJlICdldmFs
JzsKIAogdXNlIElQQzo6T3BlbjI7CiB1c2UgSURMU3RydWN0dXJlOwpAQCAtMTM5LDIyICsxNDAs
ODcgQEAgc3ViIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMKIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmli
dXRlcwogewogICAgIG15ICRzdHIgPSBzaGlmdDsKLSAgICAkc3RyID1+IHMvXFtccyooLio/KVxz
KlxdLyQxL2c7CisgICAgJHN0ciA9fiBzL1xbXHMqKC4qKVxzKlxdLyQxL2c7CiAKICAgICBteSAl
YXR0cnMgPSAoKTsKIAotICAgIGZvcmVhY2ggbXkgJHZhbHVlIChzcGxpdCgvXHMqLFxzKi8sICRz
dHIpKSB7Ci0gICAgICAgIChteSAkbmFtZSwgbXkgJHZhbCkgPSBzcGxpdCgvXHMqPVxzKi8sICR2
YWx1ZSwgMik7Ci0KLSAgICAgICAgIyBBdHRyaWJ1dGVzIHdpdGggbm8gdmFsdWUgYXJlIHNldCB0
byBiZSB0cnVlCi0gICAgICAgICR2YWwgPSAxIHVubGVzcyBkZWZpbmVkICR2YWw7Ci0gICAgICAg
ICRhdHRyc3skbmFtZX0gPSAkdmFsOwotICAgICAgICBkaWUoIkludmFsaWQgZXh0ZW5kZWQgYXR0
cmlidXRlIG5hbWU6ICckbmFtZSdcbiIpIGlmICRuYW1lID1+IC9ccy87CisgICAgd2hpbGUgKCRz
dHIgIX4gL15ccyokLykgeworICAgICAgICAjIFBhcnNlIG5hbWUKKyAgICAgICAgaWYgKCRzdHIg
IX4gL15ccyooW1x3XGRdKykvKSB7CisgICAgICAgICAgICBkaWUoIkludmFsaWQgZXh0ZW5kZWQg
YXR0cmlidXRlOiAnJHN0cidcbiIpOworICAgICAgICB9CisgICAgICAgIG15ICRuYW1lID0gJDE7
CisgICAgICAgICRzdHIgPX4gcy9eXHMqKFtcd1xkXSspLy87CisKKyAgICAgICAgaWYgKCRzdHIg
PX4gL15ccyo9LykgeworICAgICAgICAgICAgIyBQYXJzZSAnPScgdmFsdWUgfCAnPScgdmFsdWUg
JywnCisgICAgICAgICAgICAkc3RyID1+IHMvXlxzKj0vLzsKKyAgICAgICAgICAgIGlmICgkc3Ry
ID1+IC9eXHMqKFteLF0qKSw/LykgeworICAgICAgICAgICAgICAgICRhdHRyc3skbmFtZX0gPSAk
MTsKKyAgICAgICAgICAgICAgICAkYXR0cnN7JG5hbWV9ID1+IHMvXiguKj8pXHMqJC8kMS87Cisg
ICAgICAgICAgICAgICAgJHN0ciA9fiBzL15ccyooW14sXSopLD8vLzsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGllKCJJbnZhbGlkIGV4dGVuZGVkIGF0dHJpYnV0ZTog
JyRzdHInXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNpZiAoJHN0ciA9fiAvXlxz
KlwoLykgeworICAgICAgICAgICAgIyBQYXJzZSAnKCcgYXJndW1lbnRzICcpJyB8ICcoJyBhcmd1
bWVudHMgJyknICcsJworICAgICAgICAgICAgJHN0ciA9fiBzL15ccypcKC8vOworICAgICAgICAg
ICAgaWYgKCRzdHIgPX4gL14oW14pXSopXCksPy8pIHsKKyAgICAgICAgICAgICAgICAkYXR0cnN7
JG5hbWV9ID0gJDE7CisgICAgICAgICAgICAgICAgJGF0dHJzeyRuYW1lfSA9fiBzL14oLio/KVxz
KiQvJDEvOworICAgICAgICAgICAgICAgICRzdHIgPX4gcy9eKFteKV0qKVwpLD8vLzsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGllKCJJbnZhbGlkIGV4dGVuZGVkIGF0
dHJpYnV0ZTogJyRzdHInXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNpZiAoJHN0
ciA9fiAvXlxzKiw/LykgeworICAgICAgICAgICAgIyBQYXJzZSAnJyB8ICcsJworICAgICAgICAg
ICAgaWYgKCRuYW1lIGVxICJDb25zdHJ1Y3RvciIpIHsKKyAgICAgICAgICAgICAgICAkYXR0cnN7
JG5hbWV9ID0gIiI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRhdHRy
c3skbmFtZX0gPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgJHN0ciA9fiBzL15ccyos
Py8vOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGllKCJJbnZhbGlkIGV4dGVuZGVk
IGF0dHJpYnV0ZTogJyRzdHInXG4iKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBc
JWF0dHJzOwogfQogCitzdWIgcGFyc2VQYXJhbWV0ZXJzCit7CisgICAgbXkgJG5ld0RhdGFOb2Rl
ID0gc2hpZnQ7CisgICAgbXkgJG1ldGhvZFNpZ25hdHVyZSA9IHNoaWZ0OworCisgICAgIyBTcGxp
dCBhcmd1bWVudHMgYXQgY29tbWFzIGJ1dCBvbmx5IGlmIHRoZSBjb21tYQorICAgICMgaXMgbm90
IHdpdGhpbiBhdHRyaWJ1dGUgYnJhY2tldHMsIGV4cHJlc3NlZCBoZXJlCisgICAgIyBhcyBiZWlu
ZyBmb2xsb3dlZCBieSBhICddJyB3aXRob3V0IGEgcHJlY2VkaW5nICdbJy4KKyAgICAjIE5vdGUg
dGhhdCB0aGlzIGFzc3VtZXMgdGhhdCBhdHRyaWJ1dGVzIGRvbid0IG5lc3QuCisgICAgbXkgQHBh
cmFtcyA9IHNwbGl0KC8sKD8hW15bXSpcXSkvLCAkbWV0aG9kU2lnbmF0dXJlKTsKKyAgICBmb3Jl
YWNoIChAcGFyYW1zKSB7CisgICAgICAgIG15ICRsaW5lID0gJF87CisKKyAgICAgICAgJGxpbmUg
PX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVBhcmFtZXRlclNlbGVjdG9yLzsKKyAgICAgICAg
bXkgJHBhcmFtRGlyZWN0aW9uID0gJDE7CisgICAgICAgIG15ICRwYXJhbUV4dGVuZGVkQXR0cmli
dXRlcyA9IChkZWZpbmVkKCQyKSA/ICQyIDogIiAiKTsgY2hvcCgkcGFyYW1FeHRlbmRlZEF0dHJp
YnV0ZXMpOworICAgICAgICBteSAkcGFyYW1UeXBlID0gKGRlZmluZWQoJDMpID8gJDMgOiBkaWUo
IlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKKyAgICAgICAgbXkgJHBhcmFt
TmFtZSA9IChkZWZpbmVkKCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxu
JGxpbmVcbikiKSk7CisKKyAgICAgICAgbXkgJHBhcmFtRGF0YU5vZGUgPSBuZXcgZG9tU2lnbmF0
dXJlKCk7CisgICAgICAgICRwYXJhbURhdGFOb2RlLT5kaXJlY3Rpb24oJHBhcmFtRGlyZWN0aW9u
KTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPm5hbWUoJHBhcmFtTmFtZSk7CisgICAgICAgICRw
YXJhbURhdGFOb2RlLT50eXBlKCRwYXJhbVR5cGUpOworICAgICAgICAkcGFyYW1EYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRwYXJhbUV4dGVuZGVk
QXR0cmlidXRlcykpOworCisgICAgICAgIG15ICRhcnJheVJlZiA9ICRuZXdEYXRhTm9kZS0+cGFy
YW1ldGVyczsKKyAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkcGFyYW1EYXRhTm9kZSk7CisKKyAg
ICAgICAgcHJpbnQgIiAgfCAgIHw+ICBQYXJhbTsgVFlQRSBcIiRwYXJhbVR5cGVcIiBOQU1FIFwi
JHBhcmFtTmFtZVwiIiAuIAorICAgICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygiXG4g
IHwgICAgICAgICAgICAgICIsICRwYXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMpIC4g
IlxuIiB1bmxlc3MgJGJlUXVpZXQ7ICAgICAgICAgIAorICAgIH0KK30KKwogc3ViIFBhcnNlSW50
ZXJmYWNlCiB7CiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwpAQCAtMjIwLDcgKzI4NiwxNyBAQCBz
dWIgUGFyc2VJbnRlcmZhY2UKIAogICAgICAgICAjIEZpbGwgaW4ga25vd24gcGFydHMgb2YgdGhl
IGRvbUNsYXNzIGRhdGFzdHJ1Y3R1cmUgbm93Li4uCiAgICAgICAgICRkYXRhTm9kZS0+bmFtZSgk
aW50ZXJmYWNlTmFtZSk7Ci0gICAgICAgICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKHBh
cnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMpKTsKKyAg
ICAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRp
bnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICBpZiAoZGVmaW5lZCAkZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAgICAgIG15ICRuZXdEYXRh
Tm9kZSA9IG5ldyBkb21GdW5jdGlvbigpOworICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWdu
YXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsKKyAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2ln
bmF0dXJlLT5uYW1lKCJDb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAg
ICAgICAgIHBhcnNlUGFyYW1ldGVycygkbmV3RGF0YU5vZGUsICRleHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ29uc3RydWN0b3IifSk7CisgICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNv
bnN0cnVjdG9yIn0gPSAxOworICAgICAgICAgICAgJGRhdGFOb2RlLT5jb25zdHJ1Y3RvcigkbmV3
RGF0YU5vZGUpOworICAgICAgICB9CisgICAgICAgICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKCRleHRlbmRlZEF0dHJpYnV0ZXMpOwogCiAgICAgICAgICMgSW5oZXJpdGFuY2UgZGV0ZWN0
aW9uCiAgICAgICAgIG15IEBpbnRlcmZhY2VQYXJlbnRzID0gc3BsaXQoLywvLCAkaW50ZXJmYWNl
QmFzZSk7CkBAIC0yOTksMzIgKzM3NSw3IEBAIHN1YiBQYXJzZUludGVyZmFjZQogICAgICAgICAg
ICAgICAgICRtZXRob2RFeGNlcHRpb24gPX4gcy9ccysvL2c7CiAgICAgICAgICAgICAgICAgQHsk
bmV3RGF0YU5vZGUtPnJhaXNlc0V4Y2VwdGlvbnN9ID0gc3BsaXQoLywvLCAkbWV0aG9kRXhjZXB0
aW9uKTsKIAotICAgICAgICAgICAgICAgICMgU3BsaXQgYXJndW1lbnRzIGF0IGNvbW1hcyBidXQg
b25seSBpZiB0aGUgY29tbWEKLSAgICAgICAgICAgICAgICAjIGlzIG5vdCB3aXRoaW4gYXR0cmli
dXRlIGJyYWNrZXRzLCBleHByZXNzZWQgaGVyZQotICAgICAgICAgICAgICAgICMgYXMgYmVpbmcg
Zm9sbG93ZWQgYnkgYSAnXScgd2l0aG91dCBhIHByZWNlZGluZyAnWycuCi0gICAgICAgICAgICAg
ICAgIyBOb3RlIHRoYXQgdGhpcyBhc3N1bWVzIHRoYXQgYXR0cmlidXRlcyBkb24ndCBuZXN0Lgot
ICAgICAgICAgICAgICAgIG15IEBwYXJhbXMgPSBzcGxpdCgvLCg/IVteW10qXF0pLywgJG1ldGhv
ZFNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAgZm9yZWFjaChAcGFyYW1zKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG15ICRsaW5lID0gJF87Ci0KLSAgICAgICAgICAgICAgICAgICAgJGxpbmUg
PX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVBhcmFtZXRlclNlbGVjdG9yLzsKLSAgICAgICAg
ICAgICAgICAgICAgbXkgJHBhcmFtRGlyZWN0aW9uID0gJDE7Ci0gICAgICAgICAgICAgICAgICAg
IG15ICRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcyA9IChkZWZpbmVkKCQyKSA/ICQyIDogIiAiKTsg
Y2hvcCgkcGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMpOwotICAgICAgICAgICAgICAgICAgICBteSAk
cGFyYW1UeXBlID0gKGRlZmluZWQoJDMpID8gJDMgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3Vy
Y2U6XG4kbGluZVxuKSIpKTsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9IChk
ZWZpbmVkKCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbiki
KSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtRGF0YU5vZGUgPSBuZXcgZG9tU2ln
bmF0dXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICRwYXJhbURhdGFOb2RlLT5kaXJlY3Rpb24o
JHBhcmFtRGlyZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPm5h
bWUoJHBhcmFtTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICRwYXJhbURhdGFOb2RlLT50eXBl
KCRwYXJhbVR5cGUpOwotICAgICAgICAgICAgICAgICAgICAkcGFyYW1EYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRwYXJhbUV4dGVuZGVkQXR0cmli
dXRlcykpOwotCi0gICAgICAgICAgICAgICAgICAgIG15ICRhcnJheVJlZiA9ICRuZXdEYXRhTm9k
ZS0+cGFyYW1ldGVyczsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkcGFy
YW1EYXRhTm9kZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgfCAgIHw+ICBQYXJh
bTsgVFlQRSBcIiRwYXJhbVR5cGVcIiBOQU1FIFwiJHBhcmFtTmFtZVwiIiAuIAotICAgICAgICAg
ICAgICAgICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygiXG4gIHwgICAgICAgICAgICAg
ICIsICRwYXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMpIC4gIlxuIiB1bmxlc3MgJGJl
UXVpZXQ7ICAgICAgICAgIAotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYXJz
ZVBhcmFtZXRlcnMoJG5ld0RhdGFOb2RlLCAkbWV0aG9kU2lnbmF0dXJlKTsKIAogICAgICAgICAg
ICAgICAgIG15ICRhcnJheVJlZiA9ICRkYXRhTm9kZS0+ZnVuY3Rpb25zOwogICAgICAgICAgICAg
ICAgIHB1c2goQCRhcnJheVJlZiwgJG5ld0RhdGFOb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KaW5kZXggZjlkZDRhYmExZjM0OWViODkz
MjczMWU3ZjM0YjQ2OWE4ODZmNWIzYy4uMGU5Mzc0OWRhMThkYmY5YmVmNTBhMjFjNWI3NTA3ZjM3
MTllZjA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExT
dHJ1Y3R1cmUucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1
Y3R1cmUucG0KQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0KCBkb21DbGFzcyA9PiB7CiAgICAgZnVu
Y3Rpb25zID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21GdW5jdGlvbicKICAgICBhdHRyaWJ1dGVz
ID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21BdHRyaWJ1dGUnICAgIAogICAgIGV4dGVuZGVkQXR0
cmlidXRlcyA9PiAnJCcsICMgRXh0ZW5kZWQgYXR0cmlidXRlcworICAgIGNvbnN0cnVjdG9yID0+
ICckJywgIyBDb25zdHJ1Y3RvcgogfSk7CiAKICMgVXNlZCB0byByZXByZXNlbnQgZG9tQ2xhc3Mg
Y29udGVudHMgKG5hbWUgb2YgbWV0aG9kLCBzaWduYXR1cmUpCkBAIC04Nyw4ICs4OCw4IEBAIG91
ciAkaWRsRGF0YVR5cGUgPSAnW2EtekEtWjAtOVwgXSc7ICAgIyBHZW5lcmljIGRhdGEgdHlwZSBp
ZGVudGlmaWVyCiAjIE1hZ2ljIElETCBwYXJzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMKIG15ICRz
dXBwb3J0ZWRUeXBlcyA9ICIoKD86dW5zaWduZWQgKT8oPzppbnR8c2hvcnR8KD86bG9uZyApP2xv
bmcpfCg/OiRpZGxJZE5zKikpIjsKIAotIyBTcGVjaWFsIElETCBub3RhdGlvbnMKLW91ciAkZXh0
ZW5kZWRBdHRyaWJ1dGVTeW50YXggPSAnXFtbXl1dKlxdJzsgIyBVc2VkIGZvciBleHRlbmRlZCBh
dHRyaWJ1dGVzCisjIFNwZWNpYWwgSURMIG5vdGF0aW9ucy4gVGhpcyByZWd1bGFyIGV4cHJlc3Np
b24gZXh0cmFjdHMgdGhlIHN0cmluZyBiZXR3ZWVuIHRoZSBmaXJzdCBbIGFuZCBpdHMgY29ycmVz
cG9uZGluZyBdLgorb3VyICRleHRlbmRlZEF0dHJpYnV0ZVN5bnRheCA9IHFyL1xbW15cW1xdXSoo
PzooPz97JElETFN0cnVjdHVyZTo6ZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXh9KVteXFtcXV0qKSpc
XS94OyAjIFVzZWQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMKIAogIyBSZWd1bGFyIGV4cHJlc3Np
b24gYmFzZWQgSURMICdzeW50YWN0aWNhbCB0b2tlbml6ZXInIHVzZWQgaW4gdGhlIElETFBhcnNl
cgogb3VyICRtb2R1bGVTZWxlY3RvciA9ICdtb2R1bGVccyooJyAuICRpZGxJZCAuICcqKVxzKnsn
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJ
bnRlcmZhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJ
bnRlcmZhY2UuaWRsCmluZGV4IDFmMGFhMThjODQ1MGViNWFmNDM4YWRjMGMxZGEwM2E0NzgxZGQy
MDkuLjc0NzRkYWNkMDA4ODFmZTRiNzc2ZGI5ZmNkNTZhMTFkYjEwZWNhNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5p
ZGwKQEAgLTMyLDcgKzMyLDExIEBAIG1vZHVsZSB0ZXN0IHsKICAgICBpbnRlcmZhY2UgWwogICAg
ICAgICBDb25kaXRpb25hbD1Db25kaXRpb24xfENvbmRpdGlvbjIsCiAgICAgICAgIENhbkJlQ29u
c3RydWN0ZWQsCi0gICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAg
ICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAgQ29uc3RydWN0b3Io
aW4gRE9NU3RyaW5nIHN0cjEsIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9N
U3RyaW5nIHN0cjIpLAorICAgICAgICBDb25zdHJ1Y3RvcldpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwKKyAgICAgICAgVjhDb25zdHJ1Y3RvclNldHNBY3RpdmVET01XcmFwcGVyLAorICAgICAg
ICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbgogICAgIF0gVGVzdEludGVyZmFjZSB7CiAgICAg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2Jq
LmlkbAppbmRleCAwNTk1YmJlMzBiMmUwZTc3OWVlOTE2ZjZiMzUyMDJmYmRlMjU0YWM2Li5mYTBk
ODA4MmY3NDgyYzg3YWEzZWYyMDkwOWRhMjAzZGEzZWEzOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0zMiw2ICszMiw3IEBA
CiBtb2R1bGUgdGVzdCB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgTGVnYWN5RGVmYXVsdE9w
dGlvbmFsQXJndW1lbnRzLAorICAgICAgICBDb25zdHJ1Y3RvcgogICAgIF0gVGVzdE9iaiB7CiAg
ICAgICAgIC8vIEF0dHJpYnV0ZXMKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgICAg
ICAgICAgICByZWFkT25seUludEF0dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGI1NjNh
NDU3Yzk5NjM5MTVkMzc3ZDhkNDJlNWRlYTgyYTczMjMwMGEuLjM1YjM4MmQ1NGNlNmMwN2VhMmQ5
MGRiZGRmM2I2N2U2ZTM0MWU2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yMyw4ICsy
MywxMCBAQAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQog
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNy
b3MuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBl
ci5oIgogI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCkBAIC00Myw5ICs0NSwzNCBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLkNvbnRy
dWN0b3IiKTsKLSAgICByZXR1cm4gVjhQcm94eTo6Y29uc3RydWN0RE9NT2JqZWN0V2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ8VGVzdEludGVyZmFjZT4oYXJncywgJmluZm8pOworICAgIElOQ19T
VEFUUygiRE9NLlRlc3RJbnRlcmZhY2UuQ29uc3RydWN0b3IiKTsKKworICAgIGlmICghYXJncy5J
c0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmplY3Qg
Y29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJveHk6OlR5
cGVFcnJvcik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhD
RVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0cjEsIGFyZ3NbMF0pOworICAgIFNUUklOR19U
T19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyMiwgYXJnc1sx
XSk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoIlRlc3RJbnRlcmZhY2UgY29uc3RydWN0b3IncyBhc3NvY2lhdGVkIGNvbnRleHQgaXMg
bm90IGF2YWlsYWJsZSIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKKworICAgIFJlZlB0cjxU
ZXN0SW50ZXJmYWNlPiBvYmogPSBUZXN0SW50ZXJmYWNlOjpjcmVhdGUoc3RyMSwgc3RyMiwgY29u
dGV4dCwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgZ290byBmYWlsOworCisgICAgVjhET01X
cmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBvYmouZ2V0KCkpOwor
ICAgIG9iai0+cmVmKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVE
T01PYmplY3Qob2JqLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3Mu
SG9sZGVyKCkpKTsKKyAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKyAgZmFpbDoKKyAgICByZXR1
cm4gdGhyb3dFcnJvcihlYyk7CiB9CisKIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90
b3R5cGUoKTsKQEAgLTU0LDcgKzgxLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKICAgICAg
ICAgMCwgMCwKICAgICAgICAgMCwgMCk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1
cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgotICAgICAgICBkZXNj
LT5TZXRDYWxsSGFuZGxlcihWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwor
ICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxs
YmFjayk7CiAgICAgCiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCBjMGExYWIxMzY2Mjhm
MDY5ODMyOWZhZDk2Mjg4MGIxYzAxNWU4MDFiLi5lNWIyY2I0ZDg3NGFmMWRhNmI0YzNjNjdkYTk4
YzAwN2FlZDM0YTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwCkBAIC01Myw2ICs1Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0
aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHN0YXRpYyBjb25zdCBCYXRj
aGVkQ2FsbGJhY2sgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDYWxsYmFja3NbXSA9IHsKICAg
ICB7Im1ldGhvZCIsIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVySW50ZXJuYWw6Om1ldGhvZENh
bGxiYWNrfSwKIH07CisKIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKQogewogICAgIGRlc2MtPlJlYWRPbmx5
UHJvdG90eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IGY4ZjZjMmU4YzM1ZDQ1NTUwMzBiODVlMDY0NGY3
ZGYwOTI4MmQxMjguLjMzZDFhNDAyOGFkMjdkZDE3NTkyNzAzMWUwY2JhNGU2NzZhZGYyNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwCkBAIC0xMjI5LDYgKzEyMjksNyBAQCBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJp
YnV0ZSBUZXN0T2JqQXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ2hhc2gnIChUeXBlOiAn
cmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKICAgICB7Imhhc2giLCBUZXN0T2JqSW50
ZXJuYWw6Omhhc2hBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07CisKIHN0YXRpYyBj
b25zdCBCYXRjaGVkQ2FsbGJhY2sgVGVzdE9iakNhbGxiYWNrc1tdID0gewogICAgIHsidm9pZE1l
dGhvZCIsIFRlc3RPYmpJbnRlcm5hbDo6dm9pZE1ldGhvZENhbGxiYWNrfSwKICAgICB7ImludE1l
dGhvZCIsIFRlc3RPYmpJbnRlcm5hbDo6aW50TWV0aG9kQ2FsbGJhY2t9LApAQCAtMTI1OSw2ICsx
MjYwLDcgQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRDYWxsYmFjayBUZXN0T2JqQ2FsbGJhY2tzW10g
PSB7CiAgICAgeyJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIsIFRlc3RPYmpJbnRl
cm5hbDo6bWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdDYWxsYmFja30sCiAgICAgeyJv
dmVybG9hZGVkTWV0aG9kIiwgVGVzdE9iakludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kQ2FsbGJh
Y2t9LAogfTsKKwogc3RhdGljIGNvbnN0IEJhdGNoZWRDb25zdGFudCBUZXN0T2JqQ29uc3RzW10g
PSB7CiAgICAgeyJDT05TVF9WQUxVRV8wIiwgc3RhdGljX2Nhc3Q8c2lnbmVkIGludD4oMCl9LAog
ICAgIHsiQ09OU1RfVkFMVUVfMSIsIHN0YXRpY19jYXN0PHNpZ25lZCBpbnQ+KDEpfSwKQEAgLTEy
NzMsNiArMTI3NSw3IEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQ29uc3RhbnQgVGVzdE9iakNvbnN0
c1tdID0gewogICAgIHsiQ09OU1RfVkFMVUVfMTQiLCBzdGF0aWNfY2FzdDxzaWduZWQgaW50Pigw
eDFhYmMpfSwKIH07CiAKKwogQ09NUElMRV9BU1NFUlQoMCA9PSBUZXN0T2JqOjpDT05TVF9WQUxV
RV8wLCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzBJc1dyb25nVXNlRG9udENoZWNrRW51bXMpOwog
Q09NUElMRV9BU1NFUlQoMSA9PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8xLCBUZXN0T2JqRW51bUNP
TlNUX1ZBTFVFXzFJc1dyb25nVXNlRG9udENoZWNrRW51bXMpOwogQ09NUElMRV9BU1NFUlQoMiA9
PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8yLCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzJJc1dyb25n
VXNlRG9udENoZWNrRW51bXMpOwpAQCAtMTI4NSw2ICsxMjg4LDIyIEBAIENPTVBJTEVfQVNTRVJU
KDB4MDEgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVfMTIsIFRlc3RPYmpFbnVtQ09OU1RfVkFMVUVf
MTJJc1dyb25nCiBDT01QSUxFX0FTU0VSVCgwWDIwID09IFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzEz
LCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzEzSXNXcm9uZ1VzZURvbnRDaGVja0VudW1zKTsKIENP
TVBJTEVfQVNTRVJUKDB4MWFiYyA9PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8xNCwgVGVzdE9iakVu
dW1DT05TVF9WQUxVRV8xNElzV3JvbmdVc2VEb250Q2hlY2tFbnVtcyk7CiAKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFRlc3RPYmo6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLkNvbnN0cnVjdG9yIik7
CisKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5j
dGlvbi4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisKKyAgICBSZWZQdHI8VGVzdE9iaj4gb2Jq
ID0gVGVzdE9iajo6Y3JlYXRlKCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIo
YXJncy5Ib2xkZXIoKSwgJmluZm8sIG9iai5nZXQoKSk7CisgICAgb2JqLT5yZWYoKTsKKyAgICBW
OERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChvYmouZ2V0KCksIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOworICAgIHJldHVybiBhcmdz
LkhvbGRlcigpOworfQorCiBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBkZXNjKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgK
aW5kZXggYTI5NmNkMGIxNTlkNmJlNGViMzkxYjNhNjU2ZGNlNDlhMDlhZGI4NC4uNGJjNDFjY2Zl
OTUxZWMyMmNiZDQwMWNjMTA5OGNjNmZhYzkwMmM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaApAQCAtNDUsNiArNDUsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOwogICAgIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYpOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tTWV0aG9kV2l0
aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CisgICAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tQXR0ckFjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKTsKICAgICBzdGF0aWMgdm9pZCBjdXN0b21BdHRyQWNjZXNzb3JTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmll
bGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105754</attachid>
            <date>2011-08-31 00:45:17 -0700</date>
            <delta_ts>2011-08-31 09:14:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66536-20110831004516.patch</filename>
            <type>text/plain</type>
            <size>38603</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQxNTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZTI4NDhjYjAzNWQ5OWEx
ZjFiMjViNjk5NjFmMTUwMjE3MTJjMWJjLi4yMGIzMmE3MDRiODk0MDM1YWE4MjAxNjI3OGIxMzBl
YWUxYjg0ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDgtMzAgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViIElE
TCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gSURMUGFyc2VyLnBtIGFuZCBDb2Rl
R2VuZXJhdG9yVjgucG0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjUzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBzcGVjIGlzIGhlcmU6IGh0dHA6Ly93d3cudzMub3JnL1RSL1dlYklETC8jQ29u
c3RydWN0b3IKKworICAgICAgICBbMV0gSW50cm9kdWNlZCBXZWIgSURMICdDb25zdHJ1Y3Rvcicg
ZXh0ZW5kZWQgYXR0cmlidXRlLgorCisgICAgICAgIFsyXSBBZGRlZCAnQ29uc3RydWN0b3JXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQnIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKyAgICAgICAgLSBU
aGUgY29uc3RydWN0b3IgcGFzc2VzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdG8gYSBYWFg6OmNy
ZWF0ZSgpIG1ldGhvZCwKKyAgICAgICAgbGlrZSBYWFg6OmNyZWF0ZSguLi4sIGNvbnRleHQsIC4u
LikuCisKKyAgICAgICAgWzNdIEFkZGVkICdWOENvbnN0cnVjdG9yU2V0c0FjdGl2ZURPTVdyYXBw
ZXInIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKyAgICAgICAgLSBUaGUgY29uc3RydWN0b3IgY2FsbHMg
VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QoKQorICAgICAgICBp
bnN0ZWFkIG9mIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KCkuCisKKyAg
ICAgICAgWzRdIEFkZGVkICdDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbicgZXh0ZW5kZWQgYXR0
cmlidXRlLgorICAgICAgICAtIEEgcGxhY2Vob2xkZXIgZm9yIEV4Y2VwdGlvbkNvZGUgaXMgcGFz
c2VkIHRvIGEgWFhYOjpjcmVhdGUoKSBtZXRob2QsCisgICAgICAgIGxpa2UgWFhYOjpjcmVhdGUo
Li4uLCBlYykuCisgICAgICAgIC0gV2UgY2FuIHVzZSAnQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRp
b24nIGFuZCAnQ29uc3RydWN0b3JXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQnIHRvZ2V0aGVy
LgorCisgICAgICAgIE5vdGU6CisgICAgICAgIC0gQ29uc3RydWN0b3Igb3ZlcmxvYWRpbmcgaXMg
bm90IHlldCBpbXBsZW1lbnRlZC4KKyAgICAgICAgLSBXZSBjYW5ub3QgeWV0IHNwZWNpZnkgW09w
dGlvbmFsXSB3aXRob3V0IENhbGxXaXRoRGVmYXVsdFZhbHVlLgorCisgICAgICAgIFRlc3Q6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAorICAg
ICAgICAgICAgICBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAg
ICAgICAoR2VuZXJhdGVIZWFkZXIpOiBHZW5lcmF0ZXMgY29uc3RydWN0b3JDYWxsYmFjaygpIGhl
YWRlciwgaWYgJ0NvbnN0cnVjdG9yJyBpcyBzcGVjaWZpZWQuCisgICAgICAgIChHZW5lcmF0ZUZ1
bmN0aW9uQ2FsbGJhY2spOiBVc2VzIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygpIGFuZCBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygpLgorICAgICAgICAoR2VuZXJhdGVBcmd1bWVudHNDb3Vu
dENoZWNrKTogU3BsaXRzIG91dCBvZiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2soKSBmb3IgcmV1
c2UuCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6IERpdHRvLgorICAgICAgICAo
R2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKTogR2VuZXJhdGVzIGNvbnN0cnVjdG9yQ2FsbGJh
Y2soKSBkZWZpbml0aW9uLgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChwYXJzZUV4dGVu
ZGVkQXR0cmlidXRlcyk6IFByZXZpb3VzbHksIG9ubHkgYSBzdHJpbmcgaW4gdGhlICJBPUIsIEMs
IEQsIEU9RiIgZm9ybWF0IGNhbiBiZSBwYXJzZWQuIFRoaXMgcGF0Y2ggZW5hYmxlcyB0byBwYXJz
ZSBhIHN0cmluZyBpbiB0aGUgIkE9QiwgQywgRCwgRT1GLCBHKGluIERPTVN0cmluZyBzLCBpbiBb
SCwgSSwgSl0gRE9NU3RyaW5nIHQpIiBmb3JtYXQuCisgICAgICAgIChwYXJzZVBhcmFtZXRlcnMp
OiBTcGxpdHMgb3V0IG9mIFBhcnNlSW50ZXJmYWNlKCkgZm9yIHJldXNlLgorICAgICAgICAoUGFy
c2VJbnRlcmZhY2UpOiBVc2VzIHBhcnNlUGFyYW1ldGVycygpLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvSURMU3RydWN0dXJlLnBtOiBBZGRlZCBkb21DbGFzc3tjb25zdHJ1Y3Rvcn0uIENo
YW5nZWQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBleHRyYWN0IHRoZSBsaXN0IG9mIGV4dGVu
ZGVkIGF0dHJpYnV0ZXMuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRl
cmZhY2UuaWRsOiBBZGRlZCBhbGwgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdGhhdCB0aGlzIHBh
dGNoIGlzIGdvaW5nIHRvIGludHJvZHVjZS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGw6IEFkZGVkICdDb25zdHJ1Y3RvcicuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6IFVwZGF0ZWQgdGhlIHRlc3QgcmVz
dWx0LgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHA6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6Y29u
c3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5oOiBEaXR0by4KKwogMjAxMS0wOC0zMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gZ3N0cmVhbWVyLyBmaWxlcyBkaXJlY3Rs
eSByZWxhdGVkIHRvIHRoZSBNZWRpYVBsYXllciBuZWVkIFZJREVPIGd1YXJkcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBm
M2M2NDQxOGY3OTFmYzcwZDdmNzFkNjliOGU4OGYyM2YzNmQ2YTIwLi4zZmNiNzJkODRiMzdkNTI5
MDYyMzJkYjlmZDhmZjU4YzBmZjNmMjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzU0LDcgKzM1NCw3IEBAIEVORAog
ICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNhbkJlQ29uc3RydWN0ZWQifSkgeworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ29uc3RydWN0b3IifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8
PEVORCk7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpOwogRU5ECkBAIC0xMjUzLDI4ICsxMjUzLDcg
QEAgRU5ECiAKICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJz
fTsKIAotICAgIG15ICRyZXF1aXJlc0FsbEFyZ3VtZW50czsKLSAgICBteSAkcmVxdWlyZXNBbGxB
cmd1bWVudHNEZWZhdWx0ID0gIiI7Ci0gICAgaWYgKCEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJMZWdhY3lEZWZhdWx0T3B0aW9uYWxBcmd1bWVudHMifSkgewotICAgICAgICAkcmVx
dWlyZXNBbGxBcmd1bWVudHNEZWZhdWx0ID0gIlJhaXNlIjsKLSAgICB9Ci0gICAgJHJlcXVpcmVz
QWxsQXJndW1lbnRzID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJSZXF1aXJlc0FsbEFyZ3VtZW50cyJ9IHx8ICRyZXF1aXJlc0FsbEFyZ3VtZW50c0RlZmF1bHQ7
Ci0gICAgaWYgKCRyZXF1aXJlc0FsbEFyZ3VtZW50cykgewotICAgICAgICBteSAkbnVtTWFuZGF0
b3J5UGFyYW1zID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAgICBmb3JlYWNoIG15
ICRwYXJhbSAocmV2ZXJzZShAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pKSB7Ci0gICAgICAgICAg
ICBpZiAoJHBhcmFtLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewotICAgICAg
ICAgICAgICAgICRudW1NYW5kYXRvcnlQYXJhbXMtLTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgbGFzdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgJG51bU1hbmRh
dG9yeVBhcmFtcylcbiIpOwotICAgICAgICBpZiAoJHJlcXVpcmVzQWxsQXJndW1lbnRzIGVxICJS
YWlzZSIpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKFwiTm90IGVub3VnaCBhcmd1bWVudHNcIiwgVjhQcm94eTo6VHlwZUVy
cm9yKTtcbiIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7Ci0g
ICAgICAgIH0KLSAgICB9CisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgR2VuZXJhdGVBcmd1
bWVudHNDb3VudENoZWNrKCRmdW5jdGlvbiwgJGRhdGFOb2RlKSk7CiAKICAgICBteSAoJHN2Z1By
b3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUsICRzdmdOYXRpdmVUeXBlKSA9IEdldFNW
R1Byb3BlcnR5VHlwZXMoJGltcGxDbGFzc05hbWUpOwogCkBAIC0xMzQ2LDYgKzEzMjUsNjEgQEAg
RU5ECiBFTkQKICAgICB9CiAKKyAgICBteSAoJHBhcmFtZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1J
bmRleCkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkZnVuY3Rpb24sICRpbXBsQ2xhc3NOYW1l
KTsKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcpOwor
CisgICAgIyBCdWlsZCB0aGUgZnVuY3Rpb24gY2FsbCBzdHJpbmcuCisgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0aW9uLCAkcGFyYW1J
bmRleCwgIiAgICAiLCAkaW1wbENsYXNzTmFtZSkpOworCisgICAgaWYgKCRyYWlzZXNFeGNlcHRp
b25zKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgfVxuIik7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgZmFpbDpcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7XG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7XG4iKTsKKyAgICB9CisKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAifVxuXG4iKTsKK30KKworc3ViIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaworeworICAg
IG15ICRmdW5jdGlvbiA9IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAg
bXkgJGFyZ3VtZW50c0NvdW50Q2hlY2tTdHJpbmcgPSAiIjsKKyAgICBteSAkcmVxdWlyZXNBbGxB
cmd1bWVudHM7CisgICAgbXkgJHJlcXVpcmVzQWxsQXJndW1lbnRzRGVmYXVsdCA9ICIiOworICAg
IGlmICghJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVnYWN5RGVmYXVsdE9wdGlv
bmFsQXJndW1lbnRzIn0pIHsKKyAgICAgICAgJHJlcXVpcmVzQWxsQXJndW1lbnRzRGVmYXVsdCA9
ICJSYWlzZSI7CisgICAgfQorICAgICRyZXF1aXJlc0FsbEFyZ3VtZW50cyA9ICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVxdWlyZXNBbGxBcmd1bWVudHMifSB8
fCAkcmVxdWlyZXNBbGxBcmd1bWVudHNEZWZhdWx0OworICAgIGlmICgkcmVxdWlyZXNBbGxBcmd1
bWVudHMpIHsKKyAgICAgICAgbXkgJG51bU1hbmRhdG9yeVBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5w
YXJhbWV0ZXJzfTsKKyAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKHJldmVyc2UoQHskZnVuY3Rp
b24tPnBhcmFtZXRlcnN9KSkgeworICAgICAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKKyAgICAgICAgICAgICAgICAkbnVtTWFuZGF0b3J5UGFy
YW1zLS07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxhc3Q7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRudW1NYW5kYXRvcnlQYXJhbXMgPj0g
MSkgeworICAgICAgICAgICAgJGFyZ3VtZW50c0NvdW50Q2hlY2tTdHJpbmcgLj0gIiAgICBpZiAo
YXJncy5MZW5ndGgoKSA8ICRudW1NYW5kYXRvcnlQYXJhbXMpXG4iOworICAgICAgICAgICAgaWYg
KCRyZXF1aXJlc0FsbEFyZ3VtZW50cyBlcSAiUmFpc2UiKSB7CisgICAgICAgICAgICAgICAgJGFy
Z3VtZW50c0NvdW50Q2hlY2tTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXCJO
b3QgZW5vdWdoIGFyZ3VtZW50c1wiLCBWOFByb3h5OjpUeXBlRXJyb3IpO1xuIjsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGFyZ3VtZW50c0NvdW50Q2hlY2tTdHJpbmcg
Lj0gIiAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gJGFyZ3VtZW50c0NvdW50Q2hlY2tT
dHJpbmc7Cit9CisKK3N1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaworeworICAgIG15ICRmdW5j
dGlvbiA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisKKyAgICBteSAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgPSAiIjsKICAgICBteSAkcGFyYW1JbmRleCA9IDA7CiAgICAg
Zm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAg
ICAgVHJhbnNsYXRlUGFyYW1ldGVyKCRwYXJhbWV0ZXIpOwpAQCAtMTM1OCwxMCArMTM5MiwxMCBA
QCBFTkQKICAgICAgICAgbXkgJG9wdGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ik9wdGlvbmFsIn07ICAgICAgICAKICAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0
aW9uYWwgbmUgIkNhbGxXaXRoRGVmYXVsdFZhbHVlIiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKICAgICAgICAgICAgICMgR2VuZXJhdGUgZWFybHkg
Y2FsbCBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFyYW1JbmRl
eCkge1xuIik7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAo
YXJncy5MZW5ndGgoKSA8PSAkcGFyYW1JbmRleCkge1xuIjsKICAgICAgICAgICAgIG15ICRmdW5j
dGlvbkNhbGwgPSBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygkZnVuY3Rpb24sICRwYXJhbUlu
ZGV4LCAiICAgICIgeCAyLCAkaW1wbENsYXNzTmFtZSk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAkZnVuY3Rpb25DYWxsKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgfVxuIik7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcg
Lj0gJGZ1bmN0aW9uQ2FsbDsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAi
ICAgIH1cbiI7CiAgICAgICAgIH0KIAogICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25D
b2RlLmgifSA9IDE7CkBAIC0xMzcwLDMzICsxNDA0LDMzIEBAIEVORAogICAgICAgICAgICAgbXkg
JGNsYXNzTmFtZSA9IEdldENhbGxiYWNrQ2xhc3NOYW1lKCRwYXJhbWV0ZXItPnR5cGUpOwogICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siJGNsYXNzTmFtZS5oIn0gPSAxOwogICAgICAgICAgICAg
aWYgKCRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBSZWZQdHI8IiAuICRwYXJh
bWV0ZXItPnR5cGUgLiAiPiAkcGFyYW1ldGVyTmFtZTtcbiIpOwotICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAkcGFyYW1JbmRl
eCAmJiAhYXJnc1skcGFyYW1JbmRleF0tPklzTnVsbCgpICYmICFhcmdzWyRwYXJhbUluZGV4XS0+
SXNVbmRlZmluZWQoKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgIiAgICAgICAgaWYgKCFhcmdzWyRwYXJhbUluZGV4XS0+SXNPYmplY3QoKSlcbiIpOwot
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7XG4iKTsKLSAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICAkcGFyYW1ldGVyTmFtZSA9ICR7Y2xhc3NO
YW1lfTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9
XG4iKTsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBSZWZQ
dHI8IiAuICRwYXJhbWV0ZXItPnR5cGUgLiAiPiAkcGFyYW1ldGVyTmFtZTtcbiI7CisgICAgICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PiAkcGFyYW1JbmRleCAmJiAhYXJnc1skcGFyYW1JbmRleF0tPklzTnVsbCgpICYmICFhcmdzWyRw
YXJhbUluZGV4XS0+SXNVbmRlZmluZWQoKSkge1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgaWYgKCFhcmdzWyRwYXJhbUluZGV4XS0+SXNPYmpl
Y3QoKSlcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAg
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7XG4iOworICAgICAg
ICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICAkcGFyYW1ldGVyTmFt
ZSA9ICR7Y2xhc3NOYW1lfTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCBnZXRTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICB9XG4iOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9ICRwYXJhbUlu
ZGV4IHx8ICFhcmdzWyRwYXJhbUluZGV4XS0+SXNPYmplY3QoKSlcbiIpOwotICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZ
UEVfTUlTTUFUQ0hfRVJSKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgUmVmUHRyPCIgLiAkcGFyYW1ldGVyLT50eXBlIC4gIj4gJHBhcmFtZXRlck5h
bWUgPSAke2NsYXNzTmFtZX06OmNyZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwgZ2V0U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTtcbiIpOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0
cmluZyAuPSAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9ICRwYXJhbUluZGV4IHx8ICFhcmdzWyRw
YXJhbUluZGV4XS0+SXNPYmplY3QoKSlcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJS
KTtcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgUmVm
UHRyPCIgLiAkcGFyYW1ldGVyLT50eXBlIC4gIj4gJHBhcmFtZXRlck5hbWUgPSAke2NsYXNzTmFt
ZX06OmNyZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTtcbiI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYgKCRwYXJhbWV0ZXItPnR5cGUg
ZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIn0gPSAxOwotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICBib29sICR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdyA9IGZhbHNlO1xu
Iik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVUeXBl
ICRwYXJhbWV0ZXJOYW1lID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1skcGFy
YW1JbmRleF0sICR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdyk7XG4iKTsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKCR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdylc
biIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTtcbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgYm9vbCAke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cgPSBmYWxzZTtcbiI7CisgICAg
ICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAkbmF0aXZlVHlwZSAkcGFyYW1l
dGVyTmFtZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhd
LCAke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cpO1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJD
aGVja1N0cmluZyAuPSAiICAgIGlmICgke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cpXG4iOworICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7XG4iOwogICAgICAgICB9IGVsc2lmIChUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBh
cmFtZXRlcikpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5h
dGl2ZVR5cGUgJHBhcmFtZXRlck5hbWUgPSAiIC4KLSAgICAgICAgICAgICAgICAgSlNWYWx1ZVRv
TmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpIC4gIjtcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoVU5MSUtFTFkoISRwYXJhbWV0
ZXJOYW1lKSkge1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
ICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiICAgICAgICBnb3RvIGZhaWw7XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgfVxuIik7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hl
Y2tTdHJpbmcgLj0gIiAgICAkbmF0aXZlVHlwZSAkcGFyYW1ldGVyTmFtZSA9ICIgLgorICAgICAg
ICAgICAgICAgICBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5kZXhd
IikgLiAiO1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlm
IChVTkxJS0VMWSghJHBhcmFtZXRlck5hbWUpKSB7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRl
ckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7XG4iOworICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGdvdG8gZmFpbDtcbiI7
CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAgICAg
ICB9IGVsc2lmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLykgewogICAgICAgICAgICAg
bXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4
XSIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gQ29udmVy
dFRvVjhQYXJhbWV0ZXIoJHBhcmFtZXRlciwgJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAk
dmFsdWUpIC4gIlxuIik7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAg
ICAiIC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJHBhcmFtZXRlciwgJG5hdGl2ZVR5cGUsICRwYXJh
bWV0ZXJOYW1lLCAkdmFsdWUpIC4gIlxuIjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IlY4QmluZGluZ01hY3Jvcy5oIn0gPSAxOwogICAgICAgICAgICAgIyBJ
ZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNlbnQs
IGFuZCB0aGUgYXJndW1lbnQncyB0eXBlIGlzIGFuCkBAIC0xNDA5LDM4ICsxNDQzLDExNSBAQCBF
TkQKICAgICAgICAgICAgICAgICBteSAkYXJnVmFsdWUgPSAiYXJnc1skcGFyYW1JbmRleF0iOwog
ICAgICAgICAgICAgICAgIG15ICRhcmdUeXBlID0gR2V0VHlwZUZyb21TaWduYXR1cmUoJHBhcmFt
ZXRlcik7CiAgICAgICAgICAgICAgICAgaWYgKElzV3JhcHBlclR5cGUoJGFyZ1R5cGUpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPiAkcGFyYW1JbmRleCAmJiAhaXNVbmRlZmluZWRPck51bGwoJGFyZ1ZhbHVlKSAm
JiAhVjgke2FyZ1R5cGV9OjpIYXNJbnN0YW5jZSgkYXJnVmFsdWUpKSB7XG4iKTsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgVjhQcm94eTo6dGhy
b3dUeXBlRXJyb3IoKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTtcbiIpOwot
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOwor
ICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+ICRwYXJhbUluZGV4ICYmICFpc1VuZGVmaW5lZE9yTnVsbCgkYXJnVmFsdWUp
ICYmICFWOCR7YXJnVHlwZX06Okhhc0luc3RhbmNlKCRhcmdWYWx1ZSkpIHtcbiI7CisgICAgICAg
ICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBWOFByb3h5Ojp0
aHJvd1R5cGVFcnJvcigpO1xuIjsKKyAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNr
U3RyaW5nIC49ICIgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpO1xuIjsK
KyAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgfVxuIjsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiICAgIEVYQ0VQVElPTl9CTE9DSygkbmF0aXZlVHlwZSwgJHBhcmFtZXRl
ck5hbWUsICIgLgotICAgICAgICAgICAgICAgICBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwg
ImFyZ3NbJHBhcmFtSW5kZXhdIikgLiAiKTtcbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgRVhDRVBUSU9OX0JMT0NLKCRuYXRpdmVUeXBlLCAkcGFyYW1ldGVy
TmFtZSwgIiAuCisgICAgICAgICAgICAgICAgIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAi
YXJnc1skcGFyYW1JbmRleF0iKSAuICIpO1xuIjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgk
cGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNJbmRleCJ9KSB7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmIChVTkxJS0VMWSgkcGFyYW1ldGVyTmFt
ZSA8IDApKSB7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
ICAgIGVjID0gSU5ERVhfU0laRV9FUlI7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgICAgIGdvdG8gZmFpbDtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICB9XG4iKTsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0
cmluZyAuPSAiICAgIGlmIChVTkxJS0VMWSgkcGFyYW1ldGVyTmFtZSA8IDApKSB7XG4iOworICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGVjID0gSU5ERVhfU0la
RV9FUlI7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAg
IGdvdG8gZmFpbDtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAg
ICB9XG4iOwogICAgICAgICB9CiAKICAgICAgICAgJHBhcmFtSW5kZXgrKzsKICAgICB9CisgICAg
cmV0dXJuICgkcGFyYW1ldGVyQ2hlY2tTdHJpbmcsICRwYXJhbUluZGV4KTsKK30KIAotICAgICMg
QnVpbGQgdGhlIGZ1bmN0aW9uIGNhbGwgc3RyaW5nLgotICAgIG15ICRjYWxsU3RyaW5nID0gR2Vu
ZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0aW9uLCAkcGFyYW1JbmRleCwgIiAgICAiLCAk
aW1wbENsYXNzTmFtZSk7Ci0gICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiRjYWxsU3RyaW5n
Iik7CitzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrCit7CisgICAgbXkgJGZ1bmN0aW9u
ID0gc2hpZnQ7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05h
bWUgPSBzaGlmdDsKKworICAgIG15ICRyYWlzZXNFeGNlcHRpb25zID0gQHskZnVuY3Rpb24tPnJh
aXNlc0V4Y2VwdGlvbnN9OworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiJ9KSB7CisgICAgICAgICRyYWlzZXNFeGNlcHRp
b25zID0gMTsKKyAgICB9CisgICAgaWYgKCEkcmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICBm
b3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAg
ICAgICAgaWYgKCghJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0g
YW5kIFR5cGVDYW5GYWlsQ29udmVyc2lvbigkcGFyYW1ldGVyKSkgb3IgJHBhcmFtZXRlci0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IklzSW5kZXgifSkgeworICAgICAgICAgICAgICAgICRyYWlzZXNF
eGNlcHRpb25zID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIG15
IEBleHRyYUFyZ3VtZW50TGlzdDsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBsQ2xhc3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLiR7aW1w
bENsYXNzTmFtZX0uQ29uc3RydWN0b3IiKTsKKworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENh
bGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3Ig
Y2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisK
K0VORAorCisgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVj
aygkZnVuY3Rpb24sICRkYXRhTm9kZSkpOwogCiAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgfVxuIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgZmFpbDpcbiIpOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7XG4iKTsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCk7XG4iKTsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29kZS5oIn0g
PSAxOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CiAgICAgfQogCi0gICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIn1cblxuIik7CisgICAgbXkgKCRwYXJhbWV0ZXJDaGVj
a1N0cmluZywgJHBhcmFtSW5kZXgpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soJGZ1bmN0aW9u
LCAkaW1wbENsYXNzTmFtZSk7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICRwYXJhbWV0ZXJDaGVj
a1N0cmluZyk7CisKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29u
c3RydWN0b3JXaXRoIn0gJiYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3Ry
dWN0b3JXaXRoIn0gZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7CisgICAgICAgIHB1c2go
QGV4dHJhQXJndW1lbnRMaXN0LCAiY29udGV4dCIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgPDxFTkQpOworCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKCIke2ltcGxDbGFzc05hbWV9IGNvbnN0cnVjdG9yJ3MgYXNzb2NpYXRlZCBj
b250ZXh0IGlzIG5vdCBhdmFpbGFibGUiLCBWOFByb3h5OjpSZWZlcmVuY2VFcnJvcik7CitFTkQK
KyAgICB9CisKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3Ry
dWN0b3JSYWlzZXNFeGNlcHRpb24ifSkgeworICAgICAgICBwdXNoKEBleHRyYUFyZ3VtZW50TGlz
dCwgImVjIik7CisgICAgfQorCisgICAgbXkgQGFyZ3VtZW50TGlzdDsKKyAgICBteSAkaW5kZXgg
PSAwOworICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9
KSB7CisgICAgICAgIGxhc3QgaWYgJGluZGV4IGVxICRwYXJhbUluZGV4OworICAgICAgICBwdXNo
KEBhcmd1bWVudExpc3QsICRwYXJhbWV0ZXItPm5hbWUpOworICAgICAgICAkaW5kZXgrKzsKKyAg
ICB9CisKKyAgICBteSAkYXJndW1lbnRTdHJpbmcgPSBqb2luKCIsICIsIEBhcmd1bWVudExpc3Qs
IEBleHRyYUFyZ3VtZW50TGlzdCk7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOworICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwke2ltcGxDbGFzc05hbWV9PiBvYmogPSAk
e2ltcGxDbGFzc05hbWV9OjpjcmVhdGUoJHthcmd1bWVudFN0cmluZ30pO1xuIik7CisKKyAgICBp
ZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNFeGNl
cHRpb24ifSkgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoZWMpXG4iKTsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGdvdG8gZmFpbDtcbiIpOworICAg
IH0KKworICAgIG15ICRET01PYmplY3QgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJWOENvbnN0cnVjdG9yU2V0c0FjdGl2ZURPTVdyYXBwZXIifSA/ICJBY3RpdmVET01PYmplY3Qi
IDogIkRPTU9iamVjdCI7CisgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKworICAgIFY4
RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgb2JqLmdldCgp
KTsKKyAgICBvYmotPnJlZigpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtE
T01PYmplY3R9KG9iai5nZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdz
LkhvbGRlcigpKSk7CisgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CitFTkQKKworICAgIGlmICgk
cmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgZmFpbDpc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdGhyb3dFcnJvcihl
Yyk7XG4iKTsKKyAgICB9CisKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOworICAgIHB1
c2goQGltcGxDb250ZW50LCAiXG4iKTsKIH0KIAogc3ViIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0
ZURhdGEKQEAgLTE5MDEsNyArMjAxMiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgaWYgKEBkaXNhbGxvd3NTaGFkb3dpbmcpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBzaGFkb3dBdHRyc1tdID0ge1xuIik7CiAg
ICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGRhdGFOb2RlLCBcQGRpc2FsbG93
c1NoYWRvd2luZyk7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcbiIpOworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5cbiIpOwogICAgIH0KIAogICAgIG15ICRoYXNfYXR0
cmlidXRlcyA9IDA7CkBAIC0xOTA5LDcgKzIwMjAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAkaGFzX2F0dHJpYnV0ZXMgPSAxOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgInN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlICR7aW50ZXJmYWNlTmFtZX1BdHRy
c1tdID0ge1xuIik7CiAgICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGRhdGFO
b2RlLCAkYXR0cmlidXRlcyk7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcbiIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5cbiIpOwogICAgIH0KIAogICAgICMgU2V0
dXAgdGFibGUgb2Ygc3RhbmRhcmQgY2FsbGJhY2sgZnVuY3Rpb25zCkBAIC0xOTQ4LDcgKzIwNTks
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogRU5ECiAgICAgICAgICRudW1fY2FsbGJh
Y2tzKys7CiAgICAgfQotICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcbiIpICBpZiAkaGFzX2Nh
bGxiYWNrczsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5cbiIpICBpZiAkaGFzX2NhbGxi
YWNrczsKIAogICAgICMgU2V0dXAgY29uc3RhbnRzCiAgICAgbXkgJGhhc19jb25zdGFudHMgPSAw
OwpAQCAtMTk2NywxNCArMjA3OCwxNCBAQCBFTkQKIEVORAogICAgIH0KICAgICBpZiAoJGhhc19j
b25zdGFudHMpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRl
ZCgkZGF0YU5vZGUpKTsKICAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifSAv
LyBuYW1lc3BhY2UgJHtpbnRlcmZhY2VOYW1lfUludGVybmFsXG5cbiIpOwogCiAgICAgIyBJbiBu
YW1lc3BhY2UgV2ViQ29yZSwgYWRkIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbiBmb3IgJ0NhbkJl
Q29uc3RydWN0ZWQnLgotICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
YW5CZUNvbnN0cnVjdGVkIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbUNvbnN0cnVjdG9yIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4
Q3VzdG9tQ29uc3RydWN0b3IifSkgeworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ29uc3RydWN0b3IifSkgewogICAgICAgICBteSAkdjhDb25zdHJ1Y3RGdW5jdGlv
bjsKICAgICAgICAgbXkgJGNhbGxXaXRoID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2FsbFdpdGgifTsKICAgICAgICAgaWYgKCRjYWxsV2l0aCBhbmQgJGNhbGxXaXRoIGVxICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IikgewpAQCAtMTk4OCw4ICsyMDk5LDEzIEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiAke2NsYXNzTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJnCiAgICAgSU5DX1NUQVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS5Db250
cnVjdG9yIik7CiAgICAgcmV0dXJuIFY4UHJveHk6OiR7djhDb25zdHJ1Y3RGdW5jdGlvbn08JGlu
dGVyZmFjZU5hbWU+KGFyZ3MsICZpbmZvKTsKIH0KKwogRU5ECi0gICB9CisgICAgfQorCisgICAg
aWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKKyAg
ICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZS0+Y29uc3RydWN0b3Is
ICRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOworICAgIH0KIAogICAgIG15ICRhY2Nlc3NfY2hl
Y2sgPSAiIjsKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tE
b21haW5TZWN1cml0eSJ9ICYmICEoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpKSB7CkBA
IC0yMDQ3LDkgKzIxNjMsOSBAQCBFTkQKICAgICAgICAgJGltcGxJbmNsdWRlc3sid3RmL1VudXNl
ZFBhcmFtLmgifSA9IDE7CiAgICAgfQogCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSkgeworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0ZXIifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgPDxFTkQpOwotICAgICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOCR7aW50ZXJmYWNlTmFt
ZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2spOworICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4JHtp
bnRlcmZhY2VOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiBFTkQKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMzFlODIzNjM0
OGVmYjY5Y2Q0ODg5OGI4NGY4NTc4Nzg1ZjhjY2NkYS4uYjlmMzg3ZWRkNDgxZWU5YjQwNWYwMmEw
YWU2Y2RjYWI3MGM4YTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9J
RExQYXJzZXIucG0KQEAgLTIyLDYgKzIyLDcgQEAKIHBhY2thZ2UgSURMUGFyc2VyOwogCiB1c2Ug
c3RyaWN0OwordXNlIHJlICdldmFsJzsKIAogdXNlIElQQzo6T3BlbjI7CiB1c2UgSURMU3RydWN0
dXJlOwpAQCAtMTM5LDIyICsxNDAsODcgQEAgc3ViIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMKIHN1
YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlcwogewogICAgIG15ICRzdHIgPSBzaGlmdDsKLSAgICAk
c3RyID1+IHMvXFtccyooLio/KVxzKlxdLyQxL2c7CisgICAgJHN0ciA9fiBzL1xbXHMqKC4qKVxz
KlxdLyQxL2c7CiAKICAgICBteSAlYXR0cnMgPSAoKTsKIAotICAgIGZvcmVhY2ggbXkgJHZhbHVl
IChzcGxpdCgvXHMqLFxzKi8sICRzdHIpKSB7Ci0gICAgICAgIChteSAkbmFtZSwgbXkgJHZhbCkg
PSBzcGxpdCgvXHMqPVxzKi8sICR2YWx1ZSwgMik7Ci0KLSAgICAgICAgIyBBdHRyaWJ1dGVzIHdp
dGggbm8gdmFsdWUgYXJlIHNldCB0byBiZSB0cnVlCi0gICAgICAgICR2YWwgPSAxIHVubGVzcyBk
ZWZpbmVkICR2YWw7Ci0gICAgICAgICRhdHRyc3skbmFtZX0gPSAkdmFsOwotICAgICAgICBkaWUo
IkludmFsaWQgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWU6ICckbmFtZSdcbiIpIGlmICRuYW1lID1+
IC9ccy87CisgICAgd2hpbGUgKCRzdHIgIX4gL15ccyokLykgeworICAgICAgICAjIFBhcnNlIG5h
bWUKKyAgICAgICAgaWYgKCRzdHIgIX4gL15ccyooW1x3XGRdKykvKSB7CisgICAgICAgICAgICBk
aWUoIkludmFsaWQgZXh0ZW5kZWQgYXR0cmlidXRlOiAnJHN0cidcbiIpOworICAgICAgICB9Cisg
ICAgICAgIG15ICRuYW1lID0gJDE7CisgICAgICAgICRzdHIgPX4gcy9eXHMqKFtcd1xkXSspLy87
CisKKyAgICAgICAgaWYgKCRzdHIgPX4gL15ccyo9LykgeworICAgICAgICAgICAgIyBQYXJzZSAn
PScgdmFsdWUgfCAnPScgdmFsdWUgJywnCisgICAgICAgICAgICAkc3RyID1+IHMvXlxzKj0vLzsK
KyAgICAgICAgICAgIGlmICgkc3RyID1+IC9eXHMqKFteLF0qKSw/LykgeworICAgICAgICAgICAg
ICAgICRhdHRyc3skbmFtZX0gPSAkMTsKKyAgICAgICAgICAgICAgICAkYXR0cnN7JG5hbWV9ID1+
IHMvXiguKj8pXHMqJC8kMS87CisgICAgICAgICAgICAgICAgJHN0ciA9fiBzL15ccyooW14sXSop
LD8vLzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGllKCJJbnZhbGlk
IGV4dGVuZGVkIGF0dHJpYnV0ZTogJyRzdHInXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNpZiAoJHN0ciA9fiAvXlxzKlwoLykgeworICAgICAgICAgICAgIyBQYXJzZSAnKCcgYXJn
dW1lbnRzICcpJyB8ICcoJyBhcmd1bWVudHMgJyknICcsJworICAgICAgICAgICAgJHN0ciA9fiBz
L15ccypcKC8vOworICAgICAgICAgICAgaWYgKCRzdHIgPX4gL14oW14pXSopXCksPy8pIHsKKyAg
ICAgICAgICAgICAgICAkYXR0cnN7JG5hbWV9ID0gJDE7CisgICAgICAgICAgICAgICAgJGF0dHJz
eyRuYW1lfSA9fiBzL14oLio/KVxzKiQvJDEvOworICAgICAgICAgICAgICAgICRzdHIgPX4gcy9e
KFteKV0qKVwpLD8vLzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGll
KCJJbnZhbGlkIGV4dGVuZGVkIGF0dHJpYnV0ZTogJyRzdHInXG4iKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNpZiAoJHN0ciA9fiAvXlxzKiw/LykgeworICAgICAgICAgICAgIyBQYXJz
ZSAnJyB8ICcsJworICAgICAgICAgICAgaWYgKCRuYW1lIGVxICJDb25zdHJ1Y3RvciIpIHsKKyAg
ICAgICAgICAgICAgICAkYXR0cnN7JG5hbWV9ID0gIiI7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICRhdHRyc3skbmFtZX0gPSAxOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgJHN0ciA9fiBzL15ccyosPy8vOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ZGllKCJJbnZhbGlkIGV4dGVuZGVkIGF0dHJpYnV0ZTogJyRzdHInXG4iKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIHJldHVybiBcJWF0dHJzOwogfQogCitzdWIgcGFyc2VQYXJhbWV0ZXJzCit7
CisgICAgbXkgJG5ld0RhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJG1ldGhvZFNpZ25hdHVyZSA9
IHNoaWZ0OworCisgICAgIyBTcGxpdCBhcmd1bWVudHMgYXQgY29tbWFzIGJ1dCBvbmx5IGlmIHRo
ZSBjb21tYQorICAgICMgaXMgbm90IHdpdGhpbiBhdHRyaWJ1dGUgYnJhY2tldHMsIGV4cHJlc3Nl
ZCBoZXJlCisgICAgIyBhcyBiZWluZyBmb2xsb3dlZCBieSBhICddJyB3aXRob3V0IGEgcHJlY2Vk
aW5nICdbJy4KKyAgICAjIE5vdGUgdGhhdCB0aGlzIGFzc3VtZXMgdGhhdCBhdHRyaWJ1dGVzIGRv
bid0IG5lc3QuCisgICAgbXkgQHBhcmFtcyA9IHNwbGl0KC8sKD8hW15bXSpcXSkvLCAkbWV0aG9k
U2lnbmF0dXJlKTsKKyAgICBmb3JlYWNoIChAcGFyYW1zKSB7CisgICAgICAgIG15ICRsaW5lID0g
JF87CisKKyAgICAgICAgJGxpbmUgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVBhcmFtZXRl
clNlbGVjdG9yLzsKKyAgICAgICAgbXkgJHBhcmFtRGlyZWN0aW9uID0gJDE7CisgICAgICAgIG15
ICRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcyA9IChkZWZpbmVkKCQyKSA/ICQyIDogIiAiKTsgY2hv
cCgkcGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICBteSAkcGFyYW1UeXBlID0gKGRl
ZmluZWQoJDMpID8gJDMgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIp
KTsKKyAgICAgICAgbXkgJHBhcmFtTmFtZSA9IChkZWZpbmVkKCQ0KSA/ICQ0IDogZGllKCJQYXJz
aW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CisKKyAgICAgICAgbXkgJHBhcmFtRGF0
YU5vZGUgPSBuZXcgZG9tU2lnbmF0dXJlKCk7CisgICAgICAgICRwYXJhbURhdGFOb2RlLT5kaXJl
Y3Rpb24oJHBhcmFtRGlyZWN0aW9uKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPm5hbWUoJHBh
cmFtTmFtZSk7CisgICAgICAgICRwYXJhbURhdGFOb2RlLT50eXBlKCRwYXJhbVR5cGUpOworICAg
ICAgICAkcGFyYW1EYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRy
aWJ1dGVzKCRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcykpOworCisgICAgICAgIG15ICRhcnJheVJl
ZiA9ICRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyczsKKyAgICAgICAgcHVzaChAJGFycmF5UmVmLCAk
cGFyYW1EYXRhTm9kZSk7CisKKyAgICAgICAgcHJpbnQgIiAgfCAgIHw+ICBQYXJhbTsgVFlQRSBc
IiRwYXJhbVR5cGVcIiBOQU1FIFwiJHBhcmFtTmFtZVwiIiAuIAorICAgICAgICAgICAgZHVtcEV4
dGVuZGVkQXR0cmlidXRlcygiXG4gIHwgICAgICAgICAgICAgICIsICRwYXJhbURhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMpIC4gIlxuIiB1bmxlc3MgJGJlUXVpZXQ7ICAgICAgICAgIAorICAg
IH0KK30KKwogc3ViIFBhcnNlSW50ZXJmYWNlCiB7CiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwpA
QCAtMjIwLDcgKzI4NiwxNyBAQCBzdWIgUGFyc2VJbnRlcmZhY2UKIAogICAgICAgICAjIEZpbGwg
aW4ga25vd24gcGFydHMgb2YgdGhlIGRvbUNsYXNzIGRhdGFzdHJ1Y3R1cmUgbm93Li4uCiAgICAg
ICAgICRkYXRhTm9kZS0+bmFtZSgkaW50ZXJmYWNlTmFtZSk7Ci0gICAgICAgICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRpbnRlcmZhY2VFeHRl
bmRlZEF0dHJpYnV0ZXMpKTsKKyAgICAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IHBhcnNl
RXh0ZW5kZWRBdHRyaWJ1dGVzKCRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAg
ICBpZiAoZGVmaW5lZCAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKKyAg
ICAgICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IG5ldyBkb21GdW5jdGlvbigpOworICAgICAgICAg
ICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsKKyAgICAgICAg
ICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1lKCJDb25zdHJ1Y3RvciIpOworICAgICAg
ICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5k
ZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIHBhcnNlUGFyYW1ldGVycygkbmV3RGF0YU5vZGUs
ICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSk7CisgICAgICAgICAgICAkZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0gPSAxOworICAgICAgICAgICAgJGRhdGFO
b2RlLT5jb25zdHJ1Y3RvcigkbmV3RGF0YU5vZGUpOworICAgICAgICB9CisgICAgICAgICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZXMpOwogCiAgICAgICAg
ICMgSW5oZXJpdGFuY2UgZGV0ZWN0aW9uCiAgICAgICAgIG15IEBpbnRlcmZhY2VQYXJlbnRzID0g
c3BsaXQoLywvLCAkaW50ZXJmYWNlQmFzZSk7CkBAIC0yOTksMzIgKzM3NSw3IEBAIHN1YiBQYXJz
ZUludGVyZmFjZQogICAgICAgICAgICAgICAgICRtZXRob2RFeGNlcHRpb24gPX4gcy9ccysvL2c7
CiAgICAgICAgICAgICAgICAgQHskbmV3RGF0YU5vZGUtPnJhaXNlc0V4Y2VwdGlvbnN9ID0gc3Bs
aXQoLywvLCAkbWV0aG9kRXhjZXB0aW9uKTsKIAotICAgICAgICAgICAgICAgICMgU3BsaXQgYXJn
dW1lbnRzIGF0IGNvbW1hcyBidXQgb25seSBpZiB0aGUgY29tbWEKLSAgICAgICAgICAgICAgICAj
IGlzIG5vdCB3aXRoaW4gYXR0cmlidXRlIGJyYWNrZXRzLCBleHByZXNzZWQgaGVyZQotICAgICAg
ICAgICAgICAgICMgYXMgYmVpbmcgZm9sbG93ZWQgYnkgYSAnXScgd2l0aG91dCBhIHByZWNlZGlu
ZyAnWycuCi0gICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhpcyBhc3N1bWVzIHRoYXQgYXR0
cmlidXRlcyBkb24ndCBuZXN0LgotICAgICAgICAgICAgICAgIG15IEBwYXJhbXMgPSBzcGxpdCgv
LCg/IVteW10qXF0pLywgJG1ldGhvZFNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAgZm9yZWFj
aChAcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRsaW5lID0gJF87Ci0KLSAgICAg
ICAgICAgICAgICAgICAgJGxpbmUgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVBhcmFtZXRl
clNlbGVjdG9yLzsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtRGlyZWN0aW9uID0gJDE7
Ci0gICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcyA9IChkZWZp
bmVkKCQyKSA/ICQyIDogIiAiKTsgY2hvcCgkcGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMpOwotICAg
ICAgICAgICAgICAgICAgICBteSAkcGFyYW1UeXBlID0gKGRlZmluZWQoJDMpID8gJDMgOiBkaWUo
IlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLSAgICAgICAgICAgICAgICAg
ICAgbXkgJHBhcmFtTmFtZSA9IChkZWZpbmVkKCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5nIGVycm9y
IVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFt
RGF0YU5vZGUgPSBuZXcgZG9tU2lnbmF0dXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICRwYXJh
bURhdGFOb2RlLT5kaXJlY3Rpb24oJHBhcmFtRGlyZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAg
ICAgJHBhcmFtRGF0YU5vZGUtPm5hbWUoJHBhcmFtTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICRwYXJhbURhdGFOb2RlLT50eXBlKCRwYXJhbVR5cGUpOwotICAgICAgICAgICAgICAgICAgICAk
cGFyYW1EYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVz
KCRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcykpOwotCi0gICAgICAgICAgICAgICAgICAgIG15ICRh
cnJheVJlZiA9ICRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyczsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAJGFycmF5UmVmLCAkcGFyYW1EYXRhTm9kZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
cHJpbnQgIiAgfCAgIHw+ICBQYXJhbTsgVFlQRSBcIiRwYXJhbVR5cGVcIiBOQU1FIFwiJHBhcmFt
TmFtZVwiIiAuIAotICAgICAgICAgICAgICAgICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRl
cygiXG4gIHwgICAgICAgICAgICAgICIsICRwYXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMpIC4gIlxuIiB1bmxlc3MgJGJlUXVpZXQ7ICAgICAgICAgIAotICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBwYXJzZVBhcmFtZXRlcnMoJG5ld0RhdGFOb2RlLCAkbWV0aG9kU2ln
bmF0dXJlKTsKIAogICAgICAgICAgICAgICAgIG15ICRhcnJheVJlZiA9ICRkYXRhTm9kZS0+ZnVu
Y3Rpb25zOwogICAgICAgICAgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJG5ld0RhdGFOb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJl
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KaW5k
ZXggZjNiM2UyYTYxYTRhNWI1NTFlODU4MjkwMDljNDk4ODY1YTc1N2E5MS4uMzQwMGUwYzhkOWYx
MjBhNDFkNGMxYTJiNDY0OTYzN2U5MGVlM2FjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0KCBk
b21DbGFzcyA9PiB7CiAgICAgZnVuY3Rpb25zID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21GdW5j
dGlvbicKICAgICBhdHRyaWJ1dGVzID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21BdHRyaWJ1dGUn
ICAgIAogICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsICMgRXh0ZW5kZWQgYXR0cmlidXRl
cworICAgIGNvbnN0cnVjdG9yID0+ICckJywgIyBDb25zdHJ1Y3RvcgogfSk7CiAKICMgVXNlZCB0
byByZXByZXNlbnQgZG9tQ2xhc3MgY29udGVudHMgKG5hbWUgb2YgbWV0aG9kLCBzaWduYXR1cmUp
CkBAIC04OCw4ICs4OSw4IEBAIG91ciAkaWRsRGF0YVR5cGUgPSAnW2EtekEtWjAtOVwgXSc7ICAg
IyBHZW5lcmljIGRhdGEgdHlwZSBpZGVudGlmaWVyCiAjIE1hZ2ljIElETCBwYXJzaW5nIHJlZ3Vs
YXIgZXhwcmVzc2lvbnMKIG15ICRzdXBwb3J0ZWRUeXBlcyA9ICIoKD86dW5zaWduZWQgKT8oPzpp
bnR8c2hvcnR8KD86bG9uZyApP2xvbmcpfCg/OiRpZGxJZE5zKikpIjsKIAotIyBTcGVjaWFsIElE
TCBub3RhdGlvbnMKLW91ciAkZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXggPSAnXFtbXl1dKlxdJzsg
IyBVc2VkIGZvciBleHRlbmRlZCBhdHRyaWJ1dGVzCisjIFNwZWNpYWwgSURMIG5vdGF0aW9ucy4g
VGhpcyByZWd1bGFyIGV4cHJlc3Npb24gZXh0cmFjdHMgdGhlIHN0cmluZyBiZXR3ZWVuIHRoZSBm
aXJzdCBbIGFuZCBpdHMgY29ycmVzcG9uZGluZyBdLgorb3VyICRleHRlbmRlZEF0dHJpYnV0ZVN5
bnRheCA9IHFyL1xbW15cW1xdXSooPzooPz97JElETFN0cnVjdHVyZTo6ZXh0ZW5kZWRBdHRyaWJ1
dGVTeW50YXh9KVteXFtcXV0qKSpcXS94OyAjIFVzZWQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMK
IAogIyBSZWd1bGFyIGV4cHJlc3Npb24gYmFzZWQgSURMICdzeW50YWN0aWNhbCB0b2tlbml6ZXIn
IHVzZWQgaW4gdGhlIElETFBhcnNlcgogb3VyICRtb2R1bGVTZWxlY3RvciA9ICdtb2R1bGVccyoo
JyAuICRpZGxJZCAuICcqKVxzKnsnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsCmluZGV4IDFmMGFhMThjODQ1MGViNWFm
NDM4YWRjMGMxZGEwM2E0NzgxZGQyMDkuLjc0NzRkYWNkMDA4ODFmZTRiNzc2ZGI5ZmNkNTZhMTFk
YjEwZWNhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0SW50ZXJmYWNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdEludGVyZmFjZS5pZGwKQEAgLTMyLDcgKzMyLDExIEBAIG1vZHVsZSB0ZXN0IHsK
ICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1Db25kaXRpb24xfENvbmRpdGlv
bjIsCiAgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCi0gICAgICAgIENhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwK
KyAgICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHN0cjEsIGluIFtPcHRpb25hbD1DYWxs
V2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIHN0cjIpLAorICAgICAgICBDb25zdHJ1Y3Rvcldp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAgVjhDb25zdHJ1Y3RvclNldHNBY3Rp
dmVET01XcmFwcGVyLAorICAgICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbgogICAgIF0g
VGVzdEludGVyZmFjZSB7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCAwNTk1YmJlMzBiMmUwZTc3OWVlOTE2ZjZi
MzUyMDJmYmRlMjU0YWM2Li5mYTBkODA4MmY3NDgyYzg3YWEzZWYyMDkwOWRhMjAzZGEzZWEzOWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsCkBAIC0zMiw2ICszMiw3IEBACiBtb2R1bGUgdGVzdCB7CiAgICAgaW50ZXJmYWNlIFsKICAg
ICAgICAgTGVnYWN5RGVmYXVsdE9wdGlvbmFsQXJndW1lbnRzLAorICAgICAgICBDb25zdHJ1Y3Rv
cgogICAgIF0gVGVzdE9iaiB7CiAgICAgICAgIC8vIEF0dHJpYnV0ZXMKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICByZWFkT25seUludEF0dHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRl
cmZhY2UuY3BwCmluZGV4IGI1NjNhNDU3Yzk5NjM5MTVkMzc3ZDhkNDJlNWRlYTgyYTczMjMwMGEu
LjM1YjM4MmQ1NGNlNmMwN2VhMmQ5MGRiZGRmM2I2N2U2ZTM0MWU2NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRl
cmZhY2UuY3BwCkBAIC0yMyw4ICsyMywxMCBAQAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8
IEVOQUJMRShDb25kaXRpb24yKQogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNp
bmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgog
I2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0Lmgi
CkBAIC00Myw5ICs0NSwzNCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkg
eyB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0SW50ZXJmYWNlLkNvbnRydWN0b3IiKTsKLSAgICByZXR1cm4gVjhQcm94eTo6Y29uc3Ry
dWN0RE9NT2JqZWN0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ8VGVzdEludGVyZmFjZT4oYXJn
cywgJmluZm8pOworICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZhY2UuQ29uc3RydWN0b3Ii
KTsKKworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1
bmN0aW9uLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8
IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4
UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTVFJJ
TkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0cjEsIGFy
Z3NbMF0pOworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJh
bWV0ZXI8Piwgc3RyMiwgYXJnc1sxXSk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkK
KyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRlc3RJbnRlcmZhY2UgY29uc3RydWN0b3IncyBh
c3NvY2lhdGVkIGNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIsIFY4UHJveHk6OlJlZmVyZW5jZUVy
cm9yKTsKKworICAgIFJlZlB0cjxUZXN0SW50ZXJmYWNlPiBvYmogPSBUZXN0SW50ZXJmYWNlOjpj
cmVhdGUoc3RyMSwgc3RyMiwgY29udGV4dCwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgZ290
byBmYWlsOworCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCks
ICZpbmZvLCBvYmouZ2V0KCkpOworICAgIG9iai0+cmVmKCk7CisgICAgVjhET01XcmFwcGVyOjpz
ZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3Qob2JqLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKKyAgICByZXR1cm4gYXJncy5Ib2xkZXIo
KTsKKyAgZmFpbDoKKyAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9CisKIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNl
VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MpCiB7CiAg
ICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKQEAgLTU0LDcgKzgxLDcgQEAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZh
Y2VUZW1wbGF0ZSh2ODoKICAgICAgICAgMCwgMCwKICAgICAgICAgMCwgMCk7CiAgICAgVU5VU0VE
X1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBi
ZSB1c2VkLgotICAgICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRlc3RJbnRlcmZhY2U6OmNv
bnN0cnVjdG9yQ2FsbGJhY2spOworICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdEludGVy
ZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgCiAKICAgICAvLyBDdXN0b20gdG9TdHJp
bmcgdGVtcGxhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cAppbmRleCBjMGExYWIxMzY2MjhmMDY5ODMyOWZhZDk2Mjg4MGIxYzAxNWU4MDFiLi5lNWIyY2I0
ZDg3NGFmMWRhNmI0YzNjNjdkYTk4YzAwN2FlZDM0YTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC01Myw2ICs1Myw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHN0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJDYWxsYmFja3NbXSA9IHsKICAgICB7Im1ldGhvZCIsIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVySW50ZXJuYWw6Om1ldGhvZENhbGxiYWNrfSwKIH07CisKIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKQog
ewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IGY4ZjZjMmU4
YzM1ZDQ1NTUwMzBiODVlMDY0NGY3ZGYwOTI4MmQxMjguLjMzZDFhNDAyOGFkMjdkZDE3NTkyNzAz
MWUwY2JhNGU2NzZhZGYyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0xMjI5LDYgKzEyMjksNyBAQCBzdGF0
aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0T2JqQXR0cnNbXSA9IHsKICAgICAvLyBBdHRy
aWJ1dGUgJ2hhc2gnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKICAg
ICB7Imhhc2giLCBUZXN0T2JqSW50ZXJuYWw6Omhhc2hBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKIH07CisKIHN0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgVGVzdE9iakNhbGxiYWNr
c1tdID0gewogICAgIHsidm9pZE1ldGhvZCIsIFRlc3RPYmpJbnRlcm5hbDo6dm9pZE1ldGhvZENh
bGxiYWNrfSwKICAgICB7ImludE1ldGhvZCIsIFRlc3RPYmpJbnRlcm5hbDo6aW50TWV0aG9kQ2Fs
bGJhY2t9LApAQCAtMTI1OSw2ICsxMjYwLDcgQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRDYWxsYmFj
ayBUZXN0T2JqQ2FsbGJhY2tzW10gPSB7CiAgICAgeyJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRp
b25hbEFyZyIsIFRlc3RPYmpJbnRlcm5hbDo6bWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxB
cmdDYWxsYmFja30sCiAgICAgeyJvdmVybG9hZGVkTWV0aG9kIiwgVGVzdE9iakludGVybmFsOjpv
dmVybG9hZGVkTWV0aG9kQ2FsbGJhY2t9LAogfTsKKwogc3RhdGljIGNvbnN0IEJhdGNoZWRDb25z
dGFudCBUZXN0T2JqQ29uc3RzW10gPSB7CiAgICAgeyJDT05TVF9WQUxVRV8wIiwgc3RhdGljX2Nh
c3Q8c2lnbmVkIGludD4oMCl9LAogICAgIHsiQ09OU1RfVkFMVUVfMSIsIHN0YXRpY19jYXN0PHNp
Z25lZCBpbnQ+KDEpfSwKQEAgLTEyNzMsNiArMTI3NSw3IEBAIHN0YXRpYyBjb25zdCBCYXRjaGVk
Q29uc3RhbnQgVGVzdE9iakNvbnN0c1tdID0gewogICAgIHsiQ09OU1RfVkFMVUVfMTQiLCBzdGF0
aWNfY2FzdDxzaWduZWQgaW50PigweDFhYmMpfSwKIH07CiAKKwogQ09NUElMRV9BU1NFUlQoMCA9
PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8wLCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzBJc1dyb25n
VXNlRG9udENoZWNrRW51bXMpOwogQ09NUElMRV9BU1NFUlQoMSA9PSBUZXN0T2JqOjpDT05TVF9W
QUxVRV8xLCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzFJc1dyb25nVXNlRG9udENoZWNrRW51bXMp
OwogQ09NUElMRV9BU1NFUlQoMiA9PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8yLCBUZXN0T2JqRW51
bUNPTlNUX1ZBTFVFXzJJc1dyb25nVXNlRG9udENoZWNrRW51bXMpOwpAQCAtMTI4NSw2ICsxMjg4
LDIyIEBAIENPTVBJTEVfQVNTRVJUKDB4MDEgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVfMTIsIFRl
c3RPYmpFbnVtQ09OU1RfVkFMVUVfMTJJc1dyb25nCiBDT01QSUxFX0FTU0VSVCgwWDIwID09IFRl
c3RPYmo6OkNPTlNUX1ZBTFVFXzEzLCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzEzSXNXcm9uZ1Vz
ZURvbnRDaGVja0VudW1zKTsKIENPTVBJTEVfQVNTRVJUKDB4MWFiYyA9PSBUZXN0T2JqOjpDT05T
VF9WQUxVRV8xNCwgVGVzdE9iakVudW1DT05TVF9WQUxVRV8xNElzV3JvbmdVc2VEb250Q2hlY2tF
bnVtcyk7CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPYmo6OmNvbnN0cnVjdG9yQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0T2JqLkNvbnN0cnVjdG9yIik7CisKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5v
dCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisKKyAg
ICBSZWZQdHI8VGVzdE9iaj4gb2JqID0gVGVzdE9iajo6Y3JlYXRlKCk7CisKKyAgICBWOERPTVdy
YXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIG9iai5nZXQoKSk7Cisg
ICAgb2JqLT5yZWYoKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVj
dChvYmouZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIo
KSkpOworICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworfQorCiBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKQogewogICAgIGRlc2MtPlJlYWRP
bmx5UHJvdG90eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmgKaW5kZXggYTI5NmNkMGIxNTlkNmJlNGViMzkxYjNhNjU2ZGNl
NDlhMDlhZGI4NC4uNGJjNDFjY2ZlOTUxZWMyMmNiZDQwMWNjMTA5OGNjNmZhYzkwMmM5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5m
byBpbmZvOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tTWV0aG9kQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY3VzdG9tTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7
CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY3VzdG9tQXR0ckFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKICAgICBzdGF0aWMgdm9pZCBjdXN0b21BdHRy
QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKICAgICBzdGF0aWMg
Y29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZp
ZWxkQ291bnQgKyAwOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>