<?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>97335</bug_id>
          
          <creation_ts>2012-09-21 06:44:48 -0700</creation_ts>
          <short_desc>DOM4: Add support for rest parameters to DOMTokenList</short_desc>
          <delta_ts>2020-04-05 09:59:32 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dom.spec.whatwg.org/#domtokenlist</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Erik Arvidsson">arv</reporter>
          <assigned_to name="Erik Arvidsson">arv</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>pf</cc>
    
    <cc>rwaldron</cc>
    
    <cc>syoichi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>725485</commentid>
    <comment_count>0</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-21 06:44:48 -0700</bug_when>
    <thetext>DOM4 allows passing multiple arguments to DOMTokenList add and remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725607</commentid>
    <comment_count>1</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-21 10:11:12 -0700</bug_when>
    <thetext>*** Bug 97343 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725608</commentid>
    <comment_count>2</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-21 10:11:25 -0700</bug_when>
    <thetext>Discussion: https://www.w3.org/Bugs/Public/show_bug.cgi?id=13999</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728556</commentid>
    <comment_count>3</comment_count>
      <attachid>165803</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-26 07:55:45 -0700</bug_when>
    <thetext>Created attachment 165803
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728559</commentid>
    <comment_count>4</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-26 07:57:50 -0700</bug_when>
    <thetext>The DOMTokenList.* files are not really done at this point.

At this point I want feedback on the generated code. Does this approach look reasonable for variadic arguments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728640</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-26 09:12:16 -0700</bug_when>
    <thetext>&gt; At this point I want feedback on the generated code. Does this approach look reasonable for variadic arguments?

It looks plausible to me, but this is really a question for haraken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728666</commentid>
    <comment_count>6</comment_count>
      <attachid>165803</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-26 09:32:05 -0700</bug_when>
    <thetext>Comment on attachment 165803
WIP

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

&gt; Source/WebCore/html/DOMTokenList.h:53
&gt;      virtual void add(const AtomicString&amp;, ExceptionCode&amp;) = 0;
&gt;      virtual void remove(const AtomicString&amp;, ExceptionCode&amp;) = 0;

Just curious, with the new code, do these ever get called or do we always call the Vector versions? It&apos;s hard to tell since I&apos;m unfamiliar with the bindings code. If the latter, can we delete these two methods or are they called internal to WebCore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728677</commentid>
    <comment_count>7</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-26 09:41:26 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 165803 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165803&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/DOMTokenList.h:53
&gt; &gt;      virtual void add(const AtomicString&amp;, ExceptionCode&amp;) = 0;
&gt; &gt;      virtual void remove(const AtomicString&amp;, ExceptionCode&amp;) = 0;
&gt; 
&gt; Just curious, with the new code, do these ever get called or do we always call the Vector versions? It&apos;s hard to tell since I&apos;m unfamiliar with the bindings code. If the latter, can we delete these two methods or are they called internal to WebCore?

I&apos;m working on these now.

The DOM bindings will never call these but there is other WebCore code that calls them. I might just update the call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728923</commentid>
    <comment_count>8</comment_count>
      <attachid>165863</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-26 13:27:34 -0700</bug_when>
    <thetext>Created attachment 165863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728936</commentid>
    <comment_count>9</comment_count>
      <attachid>165868</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-26 13:40:36 -0700</bug_when>
    <thetext>Created attachment 165868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728952</commentid>
    <comment_count>10</comment_count>
      <attachid>165868</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-26 14:01:21 -0700</bug_when>
    <thetext>Comment on attachment 165868
Patch

Attachment 165868 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14021630</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728957</commentid>
    <comment_count>11</comment_count>
      <attachid>165868</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-26 14:06:20 -0700</bug_when>
    <thetext>Comment on attachment 165868
Patch

Attachment 165868 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14043260</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728979</commentid>
    <comment_count>12</comment_count>
      <attachid>165876</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-26 14:28:34 -0700</bug_when>
    <thetext>Created attachment 165876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729096</commentid>
    <comment_count>13</comment_count>
      <attachid>165876</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-26 17:27:52 -0700</bug_when>
    <thetext>Comment on attachment 165876
Patch

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

The binding part and test cases LGTM with some comments.

ojan: would you take a look at the WebCore/html part?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2720
&gt; +            if ($argType eq &quot;DOMString&quot;) {
&gt; +                $nativeElementType = &quot;String&quot;;

Why can&apos;t you use GetNativeType() for DOMString?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2724
&gt; +                    $nativeElementType = $nativeElementType . &quot; &quot;;

Nit: $nativeElementType .= &quot; &quot;;

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1423
&gt; +    my $hasVariadic = 0;
&gt;      my $numMandatoryParams = @{$function-&gt;parameters};
&gt;      foreach my $parameter (@{$function-&gt;parameters}) {
&gt;          if ($parameter-&gt;extendedAttributes-&gt;{&quot;Optional&quot;}) {
&gt;              push(@orExpression, GenerateParametersCheckExpression($numParameters, $function));
&gt;              $numMandatoryParams--;
&gt;          }
&gt; +        if ($parameter-&gt;isVariadic) {
&gt; +            $hasVariadic = 1;
&gt; +            last;
&gt; +        }
&gt;          $numParameters++;
&gt;      }
&gt; -    push(@orExpression, GenerateParametersCheckExpression($numParameters, $function));
&gt; +    if (!$hasVariadic) {
&gt; +        push(@orExpression, GenerateParametersCheckExpression($numParameters, $function));
&gt; +    }

This looks correct, but shall we make the logic the same as the CodeGeneratorJS.pm one?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1773
&gt; +                $nativeElementType = $nativeElementType . &quot; &quot;;

Nit: $nativeElementType .= &quot; &quot;;

&gt; Source/WebCore/bindings/scripts/IDLParser.pm:251
&gt; +        my $isVariadic = $paramTypeSuffix eq &quot;...&quot;;

tasak@ is about to land the new IDLParser.pm in a day (https://bugs.webkit.org/show_bug.cgi?id=26398). I&apos;d be happy if you could modify the new IDLParser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729500</commentid>
    <comment_count>14</comment_count>
      <attachid>165876</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-27 07:06:52 -0700</bug_when>
    <thetext>Comment on attachment 165876
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2720
&gt;&gt; +                $nativeElementType = &quot;String&quot;;
&gt; 
&gt; Why can&apos;t you use GetNativeType() for DOMString?

GetNativeType returns &quot;const String&amp;&quot;

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1423
&gt;&gt; +    }
&gt; 
&gt; This looks correct, but shall we make the logic the same as the CodeGeneratorJS.pm one?

Done.

&gt;&gt; Source/WebCore/bindings/scripts/IDLParser.pm:251
&gt;&gt; +        my $isVariadic = $paramTypeSuffix eq &quot;...&quot;;
&gt; 
&gt; tasak@ is about to land the new IDLParser.pm in a day (https://bugs.webkit.org/show_bug.cgi?id=26398). I&apos;d be happy if you could modify the new IDLParser.

I see that it landed overnight. I&apos;ll rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729523</commentid>
    <comment_count>15</comment_count>
      <attachid>166000</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-27 07:52:29 -0700</bug_when>
    <thetext>Created attachment 166000
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729534</commentid>
    <comment_count>16</comment_count>
      <attachid>166000</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-27 08:03:31 -0700</bug_when>
    <thetext>Comment on attachment 166000
Patch

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

r+ for the V8 binding part and test cases. Please r+ it if the WebCore/html part is OK.

&gt; Source/WebCore/bindings/scripts/IDLParser.pm:1249
&gt; -        $self-&gt;parseEllipsis();
&gt; +        $paramDataNode-&gt;isVariadic($self-&gt;parseEllipsis());

Great! The new IDL parser is much much easier to modify:)

&gt; Source/WebCore/bindings/scripts/IDLStructure.pm:115
&gt;  our $typeNamespaceSelector = &apos;((?:&apos; . $idlId . &apos;*::)*)\s*(&apos; . $idlDataType . &apos;*)&apos;;
&gt;  
&gt; -our $interfaceSelector = &apos;(interface|exception)\s*((?:&apos; . $extendedAttributeSyntax . &apos; )?)(&apos; . $idlIdNs . &apos;*)\s*(?::(\s*[^{]*))?{([-a-zA-Z0-9_&quot;=\s(),;:\[\]&lt;&gt;&amp;\|?]*)&apos;;
&gt; -our $interfaceMethodSelector = &apos;\s*((?:&apos; . $extendedAttributeSyntax . &apos; )?)(static\s+)?&apos; . $supportedTypes . &apos;\s*(&apos; . $idlIdNs . &apos;*)\s*\(\s*([a-zA-Z0-9:\s,=\[\]&lt;&gt;?]*)&apos;;
&gt; +our $interfaceSelector = &apos;(interface|exception)\s*((?:&apos; . $extendedAttributeSyntax . &apos; )?)(&apos; . $idlIdNs . &apos;*)\s*(?::(\s*[^{]*))?{([-a-zA-Z0-9_&quot;=\s(),;:\[\]&lt;&gt;&amp;\|?.]*)&apos;;
&gt; +our $interfaceMethodSelector = &apos;\s*((?:&apos; . $extendedAttributeSyntax . &apos; )?)(static\s+)?&apos; . $supportedTypes . &apos;\s*(&apos; . $idlIdNs . &apos;*)\s*\(\s*([a-zA-Z0-9:\s,=\[\]&lt;&gt;?.]*)&apos;;
&gt;  our $interfaceParameterSelector = &apos;(in|out)\s*((?:&apos; . $extendedAttributeSyntax . &apos; )?)&apos; . $supportedTypes . $supportedTypeSuffix . &apos;\s*(&apos; . $idlIdNs . &apos;*)&apos;;
&gt;  
&gt;  our $interfaceAttributeSelector = &apos;\s*(static\s+)?(readonly attribute|attribute)\s*(&apos; . $extendedAttributeSyntax . &apos; )?&apos; . $supportedTypes . &apos;\s*(&apos; . $idlType . &apos;*)&apos;;

I think that these variables are no longer used by the IDL parser. I&apos;ll remove them in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729556</commentid>
    <comment_count>17</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-27 08:23:06 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Source/WebCore/bindings/scripts/IDLStructure.pm:115
&gt; &gt;  our $typeNamespaceSelector = &apos;((?:&apos; . $idlId . &apos;*::)*)\s*(&apos; . $idlDataType . &apos;*)&apos;;
&gt; &gt;  
&gt; &gt; -our $interfaceSelector = &apos;(interface|exception)\s*((?:&apos; . $extendedAttributeSyntax . &apos; )?)(&apos; . $idlIdNs . &apos;*)\s*(?::(\s*[^{]*))?{([-a-zA-Z0-9_&quot;=\s(),;:\[\]&lt;&gt;&amp;\|?]*)&apos;;
&gt; &gt; -our $interfaceMethodSelector = &apos;\s*((?:&apos; . $extendedAttributeSyntax . &apos; )?)(static\s+)?&apos; . $supportedTypes . &apos;\s*(&apos; . $idlIdNs . &apos;*)\s*\(\s*([a-zA-Z0-9:\s,=\[\]&lt;&gt;?]*)&apos;;
&gt; &gt; +our $interfaceSelector = &apos;(interface|exception)\s*((?:&apos; . $extendedAttributeSyntax . &apos; )?)(&apos; . $idlIdNs . &apos;*)\s*(?::(\s*[^{]*))?{([-a-zA-Z0-9_&quot;=\s(),;:\[\]&lt;&gt;&amp;\|?.]*)&apos;;
&gt; &gt; +our $interfaceMethodSelector = &apos;\s*((?:&apos; . $extendedAttributeSyntax . &apos; )?)(static\s+)?&apos; . $supportedTypes . &apos;\s*(&apos; . $idlIdNs . &apos;*)\s*\(\s*([a-zA-Z0-9:\s,=\[\]&lt;&gt;?.]*)&apos;;
&gt; &gt;  our $interfaceParameterSelector = &apos;(in|out)\s*((?:&apos; . $extendedAttributeSyntax . &apos; )?)&apos; . $supportedTypes . $supportedTypeSuffix . &apos;\s*(&apos; . $idlIdNs . &apos;*)&apos;;
&gt; &gt;  
&gt; &gt;  our $interfaceAttributeSelector = &apos;\s*(static\s+)?(readonly attribute|attribute)\s*(&apos; . $extendedAttributeSyntax . &apos; )?&apos; . $supportedTypes . &apos;\s*(&apos; . $idlType . &apos;*)&apos;;
&gt; 
&gt; I think that these variables are no longer used by the IDL parser. I&apos;ll remove them in a follow-up patch.

Yeah, my patch works when I remove all of these</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729593</commentid>
    <comment_count>18</comment_count>
      <attachid>166017</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-27 09:20:13 -0700</bug_when>
    <thetext>Created attachment 166017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729707</commentid>
    <comment_count>19</comment_count>
      <attachid>166017</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 11:05:14 -0700</bug_when>
    <thetext>Comment on attachment 166017
Patch

Clearing flags on attachment: 166017

Committed r129779: &lt;http://trac.webkit.org/changeset/129779&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729708</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 11:05:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729988</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-09-27 16:33:52 -0700</bug_when>
    <thetext>I think we should investigate having the variadic string support use Vector&lt;AtomicString&gt; for the same reason that the single-argument functions use AtomicString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730637</commentid>
    <comment_count>22</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-28 07:20:11 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; I think we should investigate having the variadic string support use Vector&lt;AtomicString&gt; for the same reason that the single-argument functions use AtomicString.

Agreed. I filed bug 97911</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637904</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-04-05 09:59:32 -0700</bug_when>
    <thetext>*** Bug 122528 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165803</attachid>
            <date>2012-09-26 07:55:45 -0700</date>
            <delta_ts>2012-09-26 13:27:30 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-97335-20120926105504.patch</filename>
            <type>text/plain</type>
            <size>46309</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Mzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRkNGFlZmM1NGQxNjM3
ODY4ZGM0ZWEyMzVkOTM3MjIzYTVjODQ0Yy4uNjg0NzIxNThmMDg4OWVmN2M3MGVmYWM5MmI3ZmY0
NGZkMTE0ZWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA5LTI2ICBFcmlr
IEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRE9NNDogQWRkIHN1cHBv
cnQgZm9yIHJlc3QgcGFyYW1ldGVycyB0byBET01Ub2tlbkxpc3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MzM1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV29yayBJbiBQcm9ncmVzcy4gRG8gTm90IFN1
Ym1pdC4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6dG9OYXRpdmVBcnJheSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZlQXJndW1lbnRz
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAg
ICAgKEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayk6CisgICAgICAgIChHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG06CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAg
KEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayk6CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjayk6CisgICAgICAgIChHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSk6CisgICAgICAg
IChSZXF1aXJlc0N1c3RvbVNpZ25hdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9J
RExQYXJzZXIucG06CisgICAgICAgIChwYXJzZVBhcmFtZXRlcnMpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJET01UZXN0T2JqOjp2YXJp
YWRpY1N0cmluZ01ldGhvZCk6CisgICAgICAgIChXZWJET01UZXN0T2JqOjp2YXJpYWRpY0RvdWJs
ZU1ldGhvZCk6CisgICAgICAgIChXZWJET01UZXN0T2JqOjp2YXJpYWRpY05vZGVNZXRob2QpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3Bw
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19zdHJpbmdfbWV0aG9kKToK
KyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZCk6Cisg
ICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX25vZGVfbWV0aG9kKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAgICAgICgt
W0RPTVRlc3RPYmogdmFyaWFkaWNTdHJpbmdNZXRob2Q6dGFpbDpdKToKKyAgICAgICAgKC1bRE9N
VGVzdE9iaiB2YXJpYWRpY0RvdWJsZU1ldGhvZDp0YWlsOl0pOgorICAgICAgICAoLVtET01UZXN0
T2JqIHZhcmlhZGljTm9kZU1ldGhvZDp0YWlsOl0pOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJp
YWRpY1N0cmluZ01ldGhvZENhbGxiYWNrKToKKyAgICAgICAgKFRlc3RPYmpWOEludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY0RvdWJsZU1ldGhv
ZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRp
Y05vZGVNZXRob2RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZlQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b05hdGl2ZUFyZ3VtZW50cyk6CisgICAgICAg
ICogaHRtbC9DbGFzc0xpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NMaXN0OjphZGQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGFzc0xpc3Q6OnJlbW92
ZSk6CisgICAgICAgICogaHRtbC9DbGFzc0xpc3QuaDoKKyAgICAgICAgKENsYXNzTGlzdCk6Cisg
ICAgICAgICogaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01TZXR0YWJsZVRva2VuTGlzdDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NU2V0dGFibGVUb2tlbkxpc3Q6OnJlbW92ZSk6CisgICAgICAgICogaHRt
bC9ET01TZXR0YWJsZVRva2VuTGlzdC5oOgorICAgICAgICAoRE9NU2V0dGFibGVUb2tlbkxpc3Qp
OgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0Lmg6CisgICAgICAgIChET01Ub2tlbkxpc3Qp
OgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmlkbDoKKwogMjAxMi0wOS0yNCAgVG9tbXkg
V2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBB
UEk6IEZpeCB0aGUgaW5jb3JyZWN0bHkgc3BlbGxlZCBSVENQZWVyQ29ubmVjdGlvbjo6b25uZWdv
dGlhdGlvbm5lZWRlZCBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAppbmRleCA3NTMyYjc5M2U3MjhkMGQ4YmMxYWUyZDVjM2UyYTEyZTkwOTcxMzkwLi45
NTA0MWZiN2E0NDI3MGYzNDc3ZGVmNjdiYmY0ZTUyN2Q0YWIxZTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMzUzLDcgKzM1Myw3IEBAIGVudW0gUGFy
YW1ldGVyRGVmYXVsdFBvbGljeSB7CiAKICAgICB0ZW1wbGF0ZTw+CiAgICAgc3RydWN0IE5hdGl2
ZVZhbHVlVHJhaXRzPFN0cmluZz4gewotICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgYXJyYXlO
YXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIFN0
cmluZyYgaW5kZXhlZFZhbHVlKQorICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFs
dWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCBTdHJpbmcmIGlu
ZGV4ZWRWYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgaW5kZXhlZFZhbHVlID0ganNWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTM2Miw3ICszNjIsNyBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogCiAgICAg
dGVtcGxhdGU8PgogICAgIHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czx1bnNpZ25lZCBsb25nPiB7
Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhcnJheU5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgdW5zaWduZWQgbG9uZyYgaW5kZXhlZFZh
bHVlKQorICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCB1bnNpZ25lZCBsb25nJiBpbmRleGVkVmFs
dWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghanNWYWx1ZS5pc051bWJlcigpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3Nyw3ICszNzcsNyBAQCBlbnVtIFBhcmFt
ZXRlckRlZmF1bHRQb2xpY3kgewogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0cnVjdCBOYXRpdmVW
YWx1ZVRyYWl0czxmbG9hdD4gewotICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgYXJyYXlOYXRp
dmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIGZsb2F0
JiBpbmRleGVkVmFsdWUpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIGZsb2F0JiBpbmRleGVk
VmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGluZGV4ZWRWYWx1ZSA9IGpzVmFsdWUudG9G
bG9hdChleGVjKTsKICAgICAgICAgICAgIHJldHVybiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7CkBA
IC00MDAsNyArNDAwLDI2IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBU
IGluZGV4VmFsdWU7Ci0gICAgICAgICAgICBpZiAoIVRyYWl0c1R5cGU6OmFycmF5TmF0aXZlVmFs
dWUoZXhlYywgb2JqZWN0LT5nZXQoZXhlYywgaSksIGluZGV4VmFsdWUpKQorICAgICAgICAgICAg
aWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShleGVjLCBvYmplY3QtPmdldChleGVjLCBpKSwg
aW5kZXhWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxUPigpOworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChpbmRleFZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgVmVjdG9y
PFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3Qgc3RhcnRJ
bmRleCA9IDApCisgICAgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRD
b3VudCgpOworICAgICAgICBBU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOworCisgICAgICAg
IFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAgIHR5cGVkZWYgTmF0aXZlVmFsdWVUcmFpdHM8VD4g
VHJhaXRzVHlwZTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICBUIGluZGV4VmFsdWU7CisgICAgICAgICAgICBpZiAo
IVRyYWl0c1R5cGU6Om5hdGl2ZVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KGkpLCBpbmRleFZh
bHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7CiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKGluZGV4VmFsdWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGUzNzY2ZDNiYTc2
NDRmYzIyMDFmMDQ2MWY4Mjc4NGI1Njc1OWIxNmUuLmQ5YzI2ZDE0ZDc1YWUzZDA0NjFiZjk0MmQ1
ZTAyOWZjM2RmMzE3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yNjA0LDcgKzI2MDQsNyBAQCBzdWIgR2VuZXJhdGVB
cmd1bWVudHNDb3VudENoZWNrCiAKICAgICBteSAkbnVtTWFuZGF0b3J5UGFyYW1zID0gQHskZnVu
Y3Rpb24tPnBhcmFtZXRlcnN9OwogICAgIGZvcmVhY2ggbXkgJHBhcmFtIChyZXZlcnNlKEB7JGZ1
bmN0aW9uLT5wYXJhbWV0ZXJzfSkpIHsKLSAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKKyAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik9wdGlvbmFsIn0gb3IgJHBhcmFtLT5pc1ZhcmlhZGljKSB7CiAgICAgICAgICAg
ICAkbnVtTWFuZGF0b3J5UGFyYW1zLS07CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBs
YXN0OwpAQCAtMjcwNywxMyArMjcwNywzOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sK
ICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRhcmdUeXBl
PiAkbmFtZSA9ICR7Y2FsbGJhY2tDbGFzc05hbWV9OjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJn
dW1lbnQoJGFyZ3NJbmRleCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7XG4iKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNsYW1wIn0pIHsKLSAgICAgICAgICAgICAgICBteSAkbmF0aXZlVmFsdWUgPSAiJHtu
YW1lfU5hdGl2ZVZhbHVlIjsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgJGFyZ1R5cGUgJG5hbWUgPSAwO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGRvdWJsZSAkbmF0aXZlVmFsdWUgPSBleGVjLT5hcmd1bWVudCgkYXJnc0lu
ZGV4KS50b051bWJlcihleGVjKTtcbiIpOworICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVlID0g
IiR7bmFtZX1OYXRpdmVWYWx1ZSI7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgJGFyZ1R5cGUgJG5hbWUgPSAwO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgZG91YmxlICRuYXRpdmVWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgp
LnRvTnVtYmVyKGV4ZWMpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
XG5cbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghaXNuYW4o
JG5hdGl2ZVZhbHVlKSlcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICAkbmFtZSA9IGNsYW1wVG88JGFyZ1R5cGU+KCRuYXRpdmVWYWx1ZSk7XG5cbiIpOworICAg
ICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7CisgICAgICAgICAgICBteSAk
bmF0aXZlRWxlbWVudFR5cGU7CisgICAgICAgICAgICBpZiAoJGFyZ1R5cGUgZXEgIkRPTVN0cmlu
ZyIpIHsKKyAgICAgICAgICAgICAgICAkbmF0aXZlRWxlbWVudFR5cGUgPSAiU3RyaW5nIjsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJG5hdGl2ZUVsZW1lbnRUeXBlID0g
R2V0TmF0aXZlVHlwZSgkYXJnVHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKCRuYXRpdmVFbGVt
ZW50VHlwZSA9fiAvPiQvKSB7CisgICAgICAgICAgICAgICAgICAgICRuYXRpdmVFbGVtZW50VHlw
ZSA9ICRuYXRpdmVFbGVtZW50VHlwZSAuICIgIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmICghSXNOYXRpdmVUeXBlKCRhcmdUeXBlKSkgeworICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWZWN0b3I8JG5hdGl2ZUVsZW1l
bnRUeXBlPiAkbmFtZTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBmb3IgKHVuc2lnbmVkIGkgPSAkYXJnc0luZGV4OyBpIDwgZXhlYy0+YXJndW1lbnRDb3Vu
dCgpOyArK2kpIHtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgaWYgKCFleGVjLT5hcmd1bWVudChpKS5pbmhlcml0cygmSlMke2FyZ1R5cGV9OjpzX2lu
Zm8pKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lLmFwcGVuZCh0byRhcmdUeXBlKGV4ZWMt
PmFyZ3VtZW50KGkpKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgfVxuIikKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRuYW1lID0gdG9O
YXRpdmVBcmd1bWVudHM8JG5hdGl2ZUVsZW1lbnRUeXBlPihleGVjLCAkYXJnc0luZGV4KTtcbiIp
OworICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlIHR5cGUgY29udmVyc2lvbiBzdWNjZWVk
ZWQuCiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcblxuIik7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghaXNuYW4oJG5hdGl2
ZVZhbHVlKSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgJG5hbWUgPSBjbGFtcFRvPCRhcmdUeXBlPigkbmF0aXZlVmFsdWUpO1xuXG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQg
YXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUgYXJndW1lbnQncyB0eXBlIGlzIGFuCiAgICAg
ICAgICAgICAjIGludGVyZmFjZSB0eXBlLCB0aGVuIGlmIHRoZSBpbmNvbWluZyB2YWx1ZSBkb2Vz
IG5vdCBpbXBsZW1lbnQgdGhhdCBpbnRlcmZhY2UsIGEgVHlwZUVycm9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDA2ODEw
NTYwMDYzMjFjYmEyMTcwMDI0NTM4YWJkMDE3NWZkMmEwZTIuLjdmYWY5MjAwYTRhYzBkNGZmNzE3
MjJjZmI2NDUyOTkyN2JjZDdiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0xNDA1LDE1ICsxNDA1LDIyIEBAIHN1YiBH
ZW5lcmF0ZUZ1bmN0aW9uUGFyYW1ldGVyc0NoZWNrCiAKICAgICBteSBAb3JFeHByZXNzaW9uID0g
KCk7CiAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSAwOworICAgIG15ICRoYXNWYXJpYWRpYyA9IDA7
CiAgICAgbXkgJG51bU1hbmRhdG9yeVBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsK
ICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewog
ICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0p
IHsKICAgICAgICAgICAgIHB1c2goQG9yRXhwcmVzc2lvbiwgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2tFeHByZXNzaW9uKCRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb24pKTsKICAgICAgICAgICAgICRu
dW1NYW5kYXRvcnlQYXJhbXMtLTsKICAgICAgICAgfQorICAgICAgICBpZiAoJHBhcmFtZXRlci0+
aXNWYXJpYWRpYykgeworICAgICAgICAgICAgJGhhc1ZhcmlhZGljID0gMTsKKyAgICAgICAgICAg
IGxhc3Q7CisgICAgICAgIH0KICAgICAgICAgJG51bVBhcmFtZXRlcnMrKzsKICAgICB9Ci0gICAg
cHVzaChAb3JFeHByZXNzaW9uLCBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24oJG51
bVBhcmFtZXRlcnMsICRmdW5jdGlvbikpOworICAgIGlmICghJGhhc1ZhcmlhZGljKSB7CisgICAg
ICAgIHB1c2goQG9yRXhwcmVzc2lvbiwgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9u
KCRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb24pKTsKKyAgICB9CiAgICAgcmV0dXJuICgkbnVtTWFu
ZGF0b3J5UGFyYW1zLCBqb2luKCIgfHwgIiwgQG9yRXhwcmVzc2lvbikpOwogfQogCkBAIC0xNjI0
LDEyICsxNjMxLDEyIEBAIHN1YiBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sKICAgICBteSAk
ZGF0YU5vZGUgPSBzaGlmdDsKIAogICAgIG15ICRudW1NYW5kYXRvcnlQYXJhbXMgPSAwOwotICAg
IG15ICRvcHRpb25hbFNlZW4gPSAwOworICAgIG15ICRhbGxvd05vbk9wdGlvbmFsID0gMTsKICAg
ICBmb3JlYWNoIG15ICRwYXJhbSAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAg
IGlmICgkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAgICAg
ICAgICAkb3B0aW9uYWxTZWVuID0gMTsKKyAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik9wdGlvbmFsIn0gb3IgJHBhcmFtLT5pc1ZhcmlhZGljKSB7CisgICAgICAgICAg
ICAkYWxsb3dOb25PcHRpb25hbCA9IDA7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBk
aWUgIkFuIGFyZ3VtZW50IG11c3Qgbm90IGJlIGRlY2xhcmVkIHRvIGJlIG9wdGlvbmFsIHVubGVz
cyBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgdG8gdGhlIG9wZXJhdGlvbiBhcmUgYWxzbyBvcHRp
b25hbC4iIGlmICRvcHRpb25hbFNlZW47CisgICAgICAgICAgICBkaWUgIkFuIGFyZ3VtZW50IG11
c3Qgbm90IGJlIGRlY2xhcmVkIHRvIGJlIG9wdGlvbmFsIHVubGVzcyBhbGwgc3Vic2VxdWVudCBh
cmd1bWVudHMgdG8gdGhlIG9wZXJhdGlvbiBhcmUgYWxzbyBvcHRpb25hbC4iIGlmICEkYWxsb3dO
b25PcHRpb25hbDsKICAgICAgICAgICAgICRudW1NYW5kYXRvcnlQYXJhbXMrKzsKICAgICAgICAg
fQogICAgIH0KQEAgLTE3NjMsNiArMTc3MCwyMyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKICAgICAgICAgfSBlbHNpZiAoJG5hdGl2ZVR5cGUgPX4gL15WOFBhcmFtZXRlci8pIHsKICAg
ICAgICAgICAgIG15ICR2YWx1ZSA9IEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoYXJncywgJHBhcmFtSW5kZXgsICRwYXJhbWV0ZXJEZWZhdWx0UG9s
aWN5KSIsICJhcmdzLkdldElzb2xhdGUoKSIpOwogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNr
U3RyaW5nIC49ICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRwYXJhbWV0ZXIsICRuYXRp
dmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgJHZhbHVlKSAuICJcbiI7CisgICAgICAgIH0gZWxzaWYg
KCRwYXJhbWV0ZXItPmlzVmFyaWFkaWMpIHsKKyAgICAgICAgICAgIG15ICRuYXRpdmVFbGVtZW50
VHlwZSA9IEdldE5hdGl2ZVR5cGUoJHBhcmFtZXRlci0+dHlwZSk7CisgICAgICAgICAgICBpZiAo
JG5hdGl2ZUVsZW1lbnRUeXBlID1+IC8+JC8pIHsKKyAgICAgICAgICAgICAgICAkbmF0aXZlRWxl
bWVudFR5cGUgPSAkbmF0aXZlRWxlbWVudFR5cGUgLiAiICI7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIG15ICRhcmdUeXBlID0gR2V0VHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlcik7
CisgICAgICAgICAgICBpZiAoSXNXcmFwcGVyVHlwZSgkYXJnVHlwZSkpIHsKKyAgICAgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBWZWN0b3I8JG5hdGl2ZUVsZW1lbnRU
eXBlPiAkcGFyYW1ldGVyTmFtZTtcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNr
U3RyaW5nIC49ICIgICAgZm9yIChpbnQgaSA9ICRwYXJhbUluZGV4OyBpIDwgYXJncy5MZW5ndGgo
KTsgKytpKSB7XG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAi
ICAgICAgICBpZiAoIVY4JHthcmdUeXBlfTo6SGFzSW5zdGFuY2UoYXJnc1tpXSkpXG4iOworICAg
ICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTtcbiI7CisgICAgICAgICAgICAg
ICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgICRwYXJhbWV0ZXJOYW1lLmFwcGVu
ZChWOCR7YXJnVHlwZX06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJn
c1tpXSkpKTtcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIg
ICAgfVxuIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRl
ckNoZWNrU3RyaW5nIC49ICIgICAgRVhDRVBUSU9OX0JMT0NLKFZlY3RvcjwkbmF0aXZlRWxlbWVu
dFR5cGU+LCAkcGFyYW1ldGVyTmFtZSwgdG9OYXRpdmVBcmd1bWVudHM8JG5hdGl2ZUVsZW1lbnRU
eXBlPihhcmdzLCAkcGFyYW1JbmRleCkpO1xuIjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICMgSWYgdGhlICJTdHJpY3RUeXBlQ2hlY2tpbmciIGV4dGVuZGVk
IGF0dHJpYnV0ZSBpcyBwcmVzZW50LCBhbmQgdGhlIGFyZ3VtZW50J3MgdHlwZSBpcyBhbgogICAg
ICAgICAgICAgIyBpbnRlcmZhY2UgdHlwZSwgdGhlbiBpZiB0aGUgaW5jb21pbmcgdmFsdWUgZG9l
cyBub3QgaW1wbGVtZW50IHRoYXQgaW50ZXJmYWNlLCBhIFR5cGVFcnJvcgpAQCAtMzU5Myw2ICsz
NjE3LDEzIEBAIHN1YiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZQogCiAgICAgJHR5cGUgPSBH
ZXROYXRpdmVUeXBlKCR0eXBlLCAkcGFyYW1ldGVySW5kZXggPj0gMCA/IDEgOiAwKTsKIAorICAg
IGlmICgkc2lnbmF0dXJlLT5pc1ZhcmlhZGljKSB7CisgICAgICAgIGlmICgkdHlwZSA9fiAvXlY4
UGFyYW1ldGVyLykgeworICAgICAgICAgICAgJHR5cGUgPSAiU3RyaW5nIjsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gIlZlY3RvcjwkdHlwZT4iOworICAgIH0KKwogICAgIGlmICgkcGFyYW1l
dGVySW5kZXggPj0gMCAmJiAkdHlwZSBlcSAiVjhQYXJhbWV0ZXIiKSB7CiAgICAgICAgICMgRklY
TUU6IFRoaXMgaW1wbGVtZW50cyBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYW5kIFtUcmVhdFVu
ZGVmaW5lZEFzPU51bGxTdHJpbmddLAogICAgICAgICAjIGJ1dCB0aGUgV2ViIElETCBzcGVjIHJl
cXVpcmVzIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gYW5kIFtUcmVhdFVuZGVmaW5lZEFzPUVt
cHR5U3RyaW5nXS4KQEAgLTM2MDYsNiArMzYzNyw3IEBAIHN1YiBHZXROYXRpdmVUeXBlRnJvbVNp
Z25hdHVyZQogICAgICAgICAkdHlwZSAuPSAiPCRtb2RlPiI7CiAgICAgfQogCisKICAgICByZXR1
cm4gJHR5cGU7CiB9CiAKQEAgLTM4OTEsNyArMzkyMyw3IEBAIHN1YiBSZXF1aXJlc0N1c3RvbVNp
Z25hdHVyZQogICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRl
ciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAgIG15ICRvcHRpb25hbCA9ICRw
YXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9OworICAgICAgICBteSAk
b3B0aW9uYWwgPSAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSBv
ciAkcGFyYW1ldGVyLT5pc1ZhcmlhZGljOwogICAgICAgICBpZiAoKCRvcHRpb25hbCAmJiAkb3B0
aW9uYWwgbmUgIkRlZmF1bHRJc1VuZGVmaW5lZCIgJiYgJG9wdGlvbmFsIG5lICJEZWZhdWx0SXNO
dWxsU3RyaW5nIikgfHwgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNr
In0pIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmluZGV4IDA1N2MwM2Q2YzZhMmI5MWY5M2Jk
ZWE1YzAyYjc0OTYxYmZiODlkNDEuLmFiYTMyMzRjYTg4ZDdhNzU4YjQyNjg2NDY5ZjQxZDA5ZjIx
ZmExNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFy
c2VyLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBt
CkBAIC0yNDgsNiArMjQ4LDcgQEAgc3ViIHBhcnNlUGFyYW1ldGVycwogICAgICAgICBteSAkcGFy
YW1OYW1lID0gKGRlZmluZWQoJDUpID8gJDUgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6
XG4kbGluZVxuKSIpKTsKIAogICAgICAgICBteSAkaXNOdWxsYWJsZSA9ICRwYXJhbVR5cGVTdWZm
aXggZXEgIj8iOworICAgICAgICBteSAkaXNWYXJpYWRpYyA9ICRwYXJhbVR5cGVTdWZmaXggZXEg
Ii4uLiI7CiAKICAgICAgICAgbXkgJHBhcmFtRGF0YU5vZGUgPSBuZXcgZG9tU2lnbmF0dXJlKCk7
CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5kaXJlY3Rpb24oJHBhcmFtRGlyZWN0aW9uKTsKQEAg
LTI1NSw2ICsyNTYsNyBAQCBzdWIgcGFyc2VQYXJhbWV0ZXJzCiAgICAgICAgICRwYXJhbURhdGFO
b2RlLT50eXBlKCRwYXJhbVR5cGUpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRwYXJhbUV4dGVuZGVkQXR0cmlidXRl
cykpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNOdWxsYWJsZSgkaXNOdWxsYWJsZSk7Cisg
ICAgICAgICRwYXJhbURhdGFOb2RlLT5pc1ZhcmlhZGljKCRpc1ZhcmlhZGljKTsKIAogICAgICAg
ICBteSAkYXJyYXlSZWYgPSAkbmV3RGF0YU5vZGUtPnBhcmFtZXRlcnM7CiAgICAgICAgIHB1c2go
QCRhcnJheVJlZiwgJHBhcmFtRGF0YU5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbQppbmRleCAyZTNmYjZjODA2ZTU0YWM2M2E5NTA3YTlk
OGNmY2VjYWU2MzEzNjllLi5lMDA1MDM0NDY4NmJiNGU2OGQ4M2ZkZTk0M2JmMzBjNjc5Y2I2Mzc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVy
ZS5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5w
bQpAQCAtNjcsNyArNjcsOCBAQCBzdHJ1Y3QoIGRvbVNpZ25hdHVyZSA9PiB7CiAgICAgbmFtZSA9
PiAnJCcsICAgICAgIyBWYXJpYWJsZSBuYW1lCiAgICAgdHlwZSA9PiAnJCcsICAgICAgIyBWYXJp
YWJsZSB0eXBlCiAgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRy
aWJ1dGVzCi0gICAgaXNOdWxsYWJsZSA9PiAnJCcgIyBJcyB2YXJpYWJsZSB0eXBlIE51bGxhYmxl
IChUPykKKyAgICBpc051bGxhYmxlID0+ICckJywgIyBJcyB2YXJpYWJsZSB0eXBlIE51bGxhYmxl
IChUPykKKyAgICBpc1ZhcmlhZGljID0+ICckJyAjIElzIHZhcmlhYmxlIHZhcmlhZGljIChsb25n
Li4uIG51bWJlcnMpCiB9KTsKIAogIyBVc2VkIHRvIHJlcHJlc2VudCBzdHJpbmcgY29uc3RhbnRz
CkBAIC05Miw3ICs5Myw3IEBAIG91ciAkaWRsRGF0YVR5cGUgPSAnW2EtekEtWjAtOVwgXSc7ICAg
IyBHZW5lcmljIGRhdGEgdHlwZSBpZGVudGlmaWVyCiAKICMgTWFnaWMgSURMIHBhcnNpbmcgcmVn
dWxhciBleHByZXNzaW9ucwogbXkgJHN1cHBvcnRlZFR5cGVzID0gIigoPzooPzp1bnNpZ25lZCAp
Pyg/OmludHxzaG9ydHwoPzpsb25nICk/bG9uZyl8KD86JGlkbElkTnMqKSkoPzpcXFtcXF18PCg/
OiRpZGxJZE5zTGlzdCopPik/KSI7Ci1teSAkc3VwcG9ydGVkVHlwZVN1ZmZpeCA9ICIoXFw/KT8i
OworbXkgJHN1cHBvcnRlZFR5cGVTdWZmaXggPSAiKFxcP3xcXC5cXC5cXC4pPyI7CiAKICMgU3Bl
Y2lhbCBJREwgbm90YXRpb25zLiBUaGlzIHJlZ3VsYXIgZXhwcmVzc2lvbiBleHRyYWN0cyB0aGUg
c3RyaW5nIGJldHdlZW4gdGhlIGZpcnN0IFsgYW5kIGl0cyBjb3JyZXNwb25kaW5nIF0uCiBvdXIg
JGV4dGVuZGVkQXR0cmlidXRlU3ludGF4ID0gcXIvXFtbXlxbXF1dKig/Oig/P3skSURMU3RydWN0
dXJlOjpleHRlbmRlZEF0dHJpYnV0ZVN5bnRheH0pW15cW1xdXSopKlxdL3g7ICMgVXNlZCBmb3Ig
ZXh0ZW5kZWQgYXR0cmlidXRlcwpAQCAtMTA3LDggKzEwOCw4IEBAIG91ciAkc2V0dGVyUmFpc2Vz
U2VsZWN0b3IgPSAnXGJzZXR0ZXJccytyYWlzZXNccypcKCgnIC4gJGlkbElkTnNMaXN0IC4gJyop
XHMqXCknCiAKIG91ciAkdHlwZU5hbWVzcGFjZVNlbGVjdG9yID0gJygoPzonIC4gJGlkbElkIC4g
Jyo6OikqKVxzKignIC4gJGlkbERhdGFUeXBlIC4gJyopJzsKIAotb3VyICRpbnRlcmZhY2VTZWxl
Y3RvciA9ICcoaW50ZXJmYWNlfGV4Y2VwdGlvbilccyooKD86JyAuICRleHRlbmRlZEF0dHJpYnV0
ZVN5bnRheCAuICcgKT8pKCcgLiAkaWRsSWROcyAuICcqKVxzKig/OjooXHMqW157XSopKT97KFst
YS16QS1aMC05XyI9XHMoKSw7OlxbXF08PiZcfD9dKiknOwotb3VyICRpbnRlcmZhY2VNZXRob2RT
ZWxlY3RvciA9ICdccyooKD86JyAuICRleHRlbmRlZEF0dHJpYnV0ZVN5bnRheCAuICcgKT8pKHN0
YXRpY1xzKyk/JyAuICRzdXBwb3J0ZWRUeXBlcyAuICdccyooJyAuICRpZGxJZE5zIC4gJyopXHMq
XChccyooW2EtekEtWjAtOTpccyw9XFtcXTw+P10qKSc7CitvdXIgJGludGVyZmFjZVNlbGVjdG9y
ID0gJyhpbnRlcmZhY2V8ZXhjZXB0aW9uKVxzKigoPzonIC4gJGV4dGVuZGVkQXR0cmlidXRlU3lu
dGF4IC4gJyApPykoJyAuICRpZGxJZE5zIC4gJyopXHMqKD86OihccypbXntdKikpP3soWy1hLXpB
LVowLTlfIj1ccygpLDs6XFtcXTw+Jlx8Py5dKiknOworb3VyICRpbnRlcmZhY2VNZXRob2RTZWxl
Y3RvciA9ICdccyooKD86JyAuICRleHRlbmRlZEF0dHJpYnV0ZVN5bnRheCAuICcgKT8pKHN0YXRp
Y1xzKyk/JyAuICRzdXBwb3J0ZWRUeXBlcyAuICdccyooJyAuICRpZGxJZE5zIC4gJyopXHMqXChc
cyooW2EtekEtWjAtOTpccyw9XFtcXTw+Py5dKiknOwogb3VyICRpbnRlcmZhY2VQYXJhbWV0ZXJT
ZWxlY3RvciA9ICcoaW58b3V0KVxzKigoPzonIC4gJGV4dGVuZGVkQXR0cmlidXRlU3ludGF4IC4g
JyApPyknIC4gJHN1cHBvcnRlZFR5cGVzIC4gJHN1cHBvcnRlZFR5cGVTdWZmaXggLiAnXHMqKCcg
LiAkaWRsSWROcyAuICcqKSc7CiAKIG91ciAkaW50ZXJmYWNlQXR0cmlidXRlU2VsZWN0b3IgPSAn
XHMqKHN0YXRpY1xzKyk/KHJlYWRvbmx5IGF0dHJpYnV0ZXxhdHRyaWJ1dGUpXHMqKCcgLiAkZXh0
ZW5kZWRBdHRyaWJ1dGVTeW50YXggLiAnICk/JyAuICRzdXBwb3J0ZWRUeXBlcyAuICdccyooJyAu
ICRpZGxUeXBlIC4gJyopJzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCmluZGV4IDBjZjY3NjU5OWM2M2Jm
MTI1YzFkNDliY2FhMGM4MzNjODUzMTgxM2MuLmQ1MzZmOTQ3YWMyNWE5N2U3NTFhMWY0MjAzMjg5
N2FmNGQzOGI5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcApAQCAtMjYsMTIgKzI2LDE0IEBACiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJTVkdQb2ludC5oIgogI2luY2x1ZGUg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRlc3RPYmouaCIKICNpbmNsdWRl
ICJXZWJET01EaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV2ViRE9NRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJXZWJET01JREJLZXkuaCIKKyNpbmNsdWRlICJXZWJET01Ob2RlLmgiCiAjaW5jbHVkZSAi
V2ViRE9NU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJXZWJET01TdHJpbmcuaCIKICNpbmNsdWRlICJX
ZWJET01hLmgiCkBAIC05NjksNiArOTcxLDMwIEBAIFdlYkRPTWJvb2wgV2ViRE9NVGVzdE9iajo6
c3RyaWN0RnVuY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nJiBzdHIsIGZsb2F0IGEsIGludCBiCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBXZWJET01UZXN0T2JqOjp2YXJpYWRpY1N0cmlu
Z01ldGhvZChjb25zdCBXZWJET01TdHJpbmcmIGhlYWQsIGNvbnN0IFdlYkRPTVN0cmluZyYgdGFp
bCkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT52
YXJpYWRpY1N0cmluZ01ldGhvZChoZWFkLCB0YWlsKTsKK30KKwordm9pZCBXZWJET01UZXN0T2Jq
Ojp2YXJpYWRpY0RvdWJsZU1ldGhvZChkb3VibGUgaGVhZCwgZG91YmxlIHRhaWwpCit7CisgICAg
aWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+dmFyaWFkaWNEb3Vi
bGVNZXRob2QoaGVhZCwgdGFpbCk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9iajo6dmFyaWFkaWNO
b2RlTWV0aG9kKGNvbnN0IFdlYkRPTU5vZGUmIGhlYWQsIGNvbnN0IFdlYkRPTU5vZGUmIHRhaWwp
Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+dmFy
aWFkaWNOb2RlTWV0aG9kKHRvV2ViQ29yZShoZWFkKSwgdG9XZWJDb3JlKHRhaWwpKTsKK30KKwog
V2ViQ29yZTo6VGVzdE9iaiogdG9XZWJDb3JlKGNvbnN0IFdlYkRPTVRlc3RPYmomIHdyYXBwZXIp
CiB7CiAgICAgcmV0dXJuIHdyYXBwZXIuaW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAppbmRleCBkNTVm
Zjc4NjU1MWViZDNjNzRhZDFhOTY4ODMyZDIwMjliY2FjNTI3Li43YjEwZmQwMmJmY2UyZGMxN2Jm
NGQ4NGJiMjk3YzBlNzE5ZTI1YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaApAQCAtMzQsNiArMzQsNyBA
QCBjbGFzcyBXZWJET01EaWN0aW9uYXJ5OwogY2xhc3MgV2ViRE9NRG9jdW1lbnQ7CiBjbGFzcyBX
ZWJET01FdmVudExpc3RlbmVyOwogY2xhc3MgV2ViRE9NSURCS2V5OworY2xhc3MgV2ViRE9NTm9k
ZTsKIGNsYXNzIFdlYkRPTVNWR1BvaW50OwogY2xhc3MgV2ViRE9NU3RyaW5nOwogY2xhc3MgV2Vi
RE9NVGVzdE9iajsKQEAgLTE5MCw2ICsxOTEsOSBAQCBwdWJsaWM6CiAgICAgV2ViRE9NU1ZHUG9p
bnQgaW1tdXRhYmxlUG9pbnRGdW5jdGlvbigpOwogICAgIHZvaWQgYmFuYW5hKCk7CiAgICAgV2Vi
RE9NYm9vbCBzdHJpY3RGdW5jdGlvbihjb25zdCBXZWJET01TdHJpbmcmIHN0ciwgZmxvYXQgYSwg
aW50IGIpOworICAgIHZvaWQgdmFyaWFkaWNTdHJpbmdNZXRob2QoY29uc3QgV2ViRE9NU3RyaW5n
JiBoZWFkLCBjb25zdCBXZWJET01TdHJpbmcmIHRhaWwpOworICAgIHZvaWQgdmFyaWFkaWNEb3Vi
bGVNZXRob2QoZG91YmxlIGhlYWQsIGRvdWJsZSB0YWlsKTsKKyAgICB2b2lkIHZhcmlhZGljTm9k
ZU1ldGhvZChjb25zdCBXZWJET01Ob2RlJiBoZWFkLCBjb25zdCBXZWJET01Ob2RlJiB0YWlsKTsK
IAogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGltcGwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9i
ai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmNwcAppbmRleCAxMjA0ZGZiNTBkYmQzZGM5YTQyM2NhMWQ1YWFiNTczMTgz
NWViOTM4Li5hOTI0MzUyMWQ2OTUzYjVlY2NhNTU4Mzg4ZDkwYzI2ZmIwNmY1MTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUg
IndlYmtpdC9XZWJLaXRET01Eb2N1bWVudFByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2Vi
S2l0RE9NSURCS2V5LmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUlEQktleVByaXZhdGUu
aCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NTm9kZS5oIgorI2luY2x1ZGUgIndlYmtpdC9X
ZWJLaXRET01Ob2RlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01TVkdQb2lu
dC5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01TVkdQb2ludFByaXZhdGUuaCIKICNpbmNs
dWRlICJ3ZWJraXQvV2ViS2l0RE9NU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCkBAIC0xNDUyLDYg
KzE0NTQsNDkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9zdHJpY3RfZnVuY3Rpb24oV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHN0ciwgZ2YKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX3N0cmluZ19tZXRob2QoV2Vi
S2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIGhlYWQsIGNvbnN0IGdjaGFyKiB0YWls
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CisgICAgZ19yZXR1cm5faWZfZmFpbChoZWFkKTsKKyAgICBnX3JldHVybl9p
Zl9mYWlsKHRhaWwpOworICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZEhlYWQgPSBXVEY6OlN0cmlu
Zzo6ZnJvbVVURjgoaGVhZCk7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkVGFpbCA9IFdURjo6
U3RyaW5nOjpmcm9tVVRGOCh0YWlsKTsKKyAgICBpdGVtLT52YXJpYWRpY1N0cmluZ01ldGhvZChj
b252ZXJ0ZWRIZWFkLCBjb252ZXJ0ZWRUYWlsKTsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0
X29ial92YXJpYWRpY19kb3VibGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdkb3Vi
bGUgaGVhZCwgZ2RvdWJsZSB0YWlsKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+dmFyaWFkaWNEb3Vi
bGVNZXRob2QoaGVhZCwgdGFpbCk7Cit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfdmFy
aWFkaWNfbm9kZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NTm9kZSog
aGVhZCwgV2ViS2l0RE9NTm9kZSogdGFpbCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYp
OworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoaGVhZCk7CisgICAgZ19yZXR1cm5faWZfZmFpbCh0YWlsKTsKKyAgICBXZWJDb3JlOjpOb2Rl
KiBjb252ZXJ0ZWRIZWFkID0gMDsKKyAgICBpZiAoaGVhZCkgeworICAgICAgICBjb252ZXJ0ZWRI
ZWFkID0gV2ViS2l0Ojpjb3JlKGhlYWQpOworICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZl
cnRlZEhlYWQpOworICAgIH0KKyAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRUYWlsID0gMDsK
KyAgICBpZiAodGFpbCkgeworICAgICAgICBjb252ZXJ0ZWRUYWlsID0gV2ViS2l0Ojpjb3JlKHRh
aWwpOworICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZFRhaWwpOworICAgIH0KKyAg
ICBpdGVtLT52YXJpYWRpY05vZGVNZXRob2QoY29udmVydGVkSGVhZCwgY29udmVydGVkVGFpbCk7
Cit9CisKIGdsb25nCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfbG9uZ19hdHRy
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgK
aW5kZXggMzk1ZmE3N2E2OTE0NGQyMDg2ZGViNTQzMmFjNjA5YjJlNGNjZDk2Ni4uMGFmMjk3NWQ1
NTIyNzEyZThlYjA3ZDE0NmRjMDYwMjU2MjkxZDA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RPYmouaApAQCAtNDg2LDYgKzQ4Niw0MiBAQCBXRUJLSVRfQVBJIFdlYktpdERPTWJvb2wqCiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3N0cmljdF9mdW5jdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxm
LCBjb25zdCBnY2hhciogc3RyLCBnZmxvYXQgYSwgZ2xvbmcgYiwgR0Vycm9yKiogZXJyb3IpOwog
CiAvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfc3RyaW5nX21ldGhvZDoKKyAq
IEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAaGVhZDogQSAjZ2NoYXIKKyAqIEB0YWls
OiBBICNnY2hhcgorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfc3RyaW5nX21ldGhvZChXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBjb25zdCBnY2hhciogaGVhZCwgY29uc3QgZ2NoYXIqIHRhaWwpOworCisvKioKKyAq
IHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZDoKKyAqIEBzZWxmOiBB
ICNXZWJLaXRET01UZXN0T2JqCisgKiBAaGVhZDogQSAjZ2RvdWJsZQorICogQHRhaWw6IEEgI2dk
b3VibGUKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX2RvdWJsZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgZ2RvdWJsZSBoZWFkLCBnZG91YmxlIHRhaWwpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVz
dF9vYmpfdmFyaWFkaWNfbm9kZV9tZXRob2Q6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9i
agorICogQGhlYWQ6IEEgI1dlYktpdERPTU5vZGUKKyAqIEB0YWlsOiBBICNXZWJLaXRET01Ob2Rl
CisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90
ZXN0X29ial92YXJpYWRpY19ub2RlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJL
aXRET01Ob2RlKiBoZWFkLCBXZWJLaXRET01Ob2RlKiB0YWlsKTsKKworLyoqCiAgKiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfbG9uZ19hdHRyOgogICogQHNlbGY6IEEgI1dlYktp
dERPTVRlc3RPYmoKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGY0OGE5YzgzMzcwZjUzNGNmNTA4YWEzY2Zl
Y2FlMjU5NzY2N2VjNjcuLmUyNDIxMmZiNWU3YWI0MTBkNDhhM2EwYmZkZTRjZjNmZWI2Y2E4Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTRmxvYXQzMkFycmF5Lmgi
CisjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNTVkdEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkpTU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGUuaCIKQEAgLTMyMSw2
ICszMjIsOSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9CiAgICAgeyAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIsIERvbnREZWxl
dGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbiksIChpbnRw
dHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsgIm9yYW5nZSIsIERvbnREZWxldGUgfCBKU0M6
OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAg
ICAgeyAic3RyaWN0RnVuY3Rpb24iLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0
cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blN0cmljdEZ1bmN0aW9uKSwgKGludHB0cl90KTMsIE5vSW50cmluc2ljIH0sCisgICAgeyAidmFy
aWFkaWNTdHJpbmdNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZh
cmlhZGljU3RyaW5nTWV0aG9kKSwgKGludHB0cl90KTIsIE5vSW50cmluc2ljIH0sCisgICAgeyAi
dmFyaWFkaWNEb3VibGVNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0
cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljRG91YmxlTWV0aG9kKSwgKGludHB0cl90KTIsIE5vSW50cmluc2ljIH0sCisgICAg
eyAidmFyaWFkaWNOb2RlTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25WYXJpYWRpY05vZGVNZXRob2QpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMgfSwKICAgICB7
IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKQEAgLTI2MDcsNiArMjYxMSw2OSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3Ry
aWN0RnVuY3Rpb24oRXhlY1N0YXRlKgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1
ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOworICAgIFRlc3RPYmoqIGltcGwgPSBz
dGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgY29uc3QgU3RyaW5nJiBo
ZWFkKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCku
aXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFZlY3RvcjxTdHJpbmc+IHRhaWwgPSB0b05hdGl2ZUFyZ3VtZW50
czxTdHJpbmc+KGV4ZWMsIDEpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBpbXBsLT52YXJp
YWRpY1N0cmluZ01ldGhvZChoZWFkLCB0YWlsKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAg
IGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVz
dE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwor
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBk
b3VibGUgaGVhZChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpLnRvTnVtYmVyKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgVmVjdG9y
PGRvdWJsZT4gdGFpbCA9IHRvTmF0aXZlQXJndW1lbnRzPGRvdWJsZT4oZXhlYywgMSk7CisgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIGltcGwtPnZhcmlhZGljRG91YmxlTWV0aG9kKGhlYWQsIHRh
aWwpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY05vZGVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZK
U1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVj
dCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
ICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRl
c3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBOb2RlKiBoZWFkKHRvTm9kZShNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIFZlY3RvcjxOb2RlKj4gdGFpbDsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFleGVj
LT5hcmd1bWVudChpKS5pbmhlcml0cygmSlNOb2RlOjpzX2luZm8pKQorICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRhaWwuYXBwZW5kKHRvTm9kZShl
eGVjLT5hcmd1bWVudChpKSkpOworICAgIH0KKyAgICBpbXBsLT52YXJpYWRpY05vZGVNZXRob2Qo
aGVhZCwgdGFpbCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKwogdm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKICAgICBKU1Rlc3RPYmoqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0T2JqKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggMTIzMjcyNDA1MmFkZjIwZWI4YTY5MDZhMDIxMTk1
MzUzZDFhMTFjZi4uNTIwMjExNTA3YjFmODBiYjBjYmU2ODk5Zjk1NTZlMzVlYmY5MWU0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaApAQCAtMjE1LDYgKzIxNSw5IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uCiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbW11
dGFibGVQb2ludEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoSlNDOjpFeGVj
U3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y1N0cmluZ01ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2Qo
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSop
OwogLy8gQXR0cmlidXRlcwogCiBKU0M6OkpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlMb25nQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5oCmluZGV4IDZhOTA5OTExY2M4YmIwYWMwMzFjNzAxMjlhNDE5MTYyZDY1ZWVjYWUuLmVk
YzQ5NDA5MmVhZDJkZDNkMmVmYzFiOTFiN2U3MDM2NWExZjg4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKQEAg
LTMxLDYgKzMxLDcgQEAKIEBjbGFzcyBET01EaWN0aW9uYXJ5OwogQGNsYXNzIERPTURvY3VtZW50
OwogQGNsYXNzIERPTUlEQktleTsKK0BjbGFzcyBET01Ob2RlOwogQGNsYXNzIERPTVNWR0RvY3Vt
ZW50OwogQGNsYXNzIERPTVNWR1BvaW50OwogQGNsYXNzIERPTVRlc3RPYmo7CkBAIC0xNzMsNiAr
MTc0LDkgQEAgZW51bSB7CiAtIChET01TVkdQb2ludCAqKWltbXV0YWJsZVBvaW50RnVuY3Rpb247
CiAtICh2b2lkKW9yYW5nZTsKIC0gKERPTWJvb2wgKilzdHJpY3RGdW5jdGlvbjooTlNTdHJpbmcg
KilzdHIgYTooZmxvYXQpYSBiOihpbnQpYjsKKy0gKHZvaWQpdmFyaWFkaWNTdHJpbmdNZXRob2Q6
KE5TU3RyaW5nICopaGVhZCB0YWlsOihOU1N0cmluZyAqKXRhaWw7CistICh2b2lkKXZhcmlhZGlj
RG91YmxlTWV0aG9kOihkb3VibGUpaGVhZCB0YWlsOihkb3VibGUpdGFpbDsKKy0gKHZvaWQpdmFy
aWFkaWNOb2RlTWV0aG9kOihET01Ob2RlICopaGVhZCB0YWlsOihET01Ob2RlICopdGFpbDsKIEBl
bmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQppbmRleCA4YjJiY2YwMGIxZjk2NDEzYzkwYzkwOTAw
ZDUwZjg4YzhlYWQ2ZDYyLi5lZDQwMWE0NGU4MzBlZTM2NDc4OWExNmY2YzRkNDU2Y2IwNGY4M2Qx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T2JqLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmoubW0KQEAgLTU4LDYgKzU4LDcgQEAKICNpbXBvcnQgIklEQktleS5oIgog
I2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW1wb3J0ICJLVVJMLmgiCisjaW1w
b3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJPYmpDRXZlbnRMaXN0ZW5lci5oIgogI2ltcG9ydCAiU1ZH
RG9jdW1lbnQuaCIKICNpbXBvcnQgIlNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oIgpAQCAtMTA1
Niw2ICsxMDU3LDI0IEBAIC0gKERPTWJvb2wgKilzdHJpY3RGdW5jdGlvbjooTlNTdHJpbmcgKilz
dHIgYTooZmxvYXQpYSBiOihpbnQpYgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy0gKHZvaWQp
dmFyaWFkaWNTdHJpbmdNZXRob2Q6KE5TU3RyaW5nICopaGVhZCB0YWlsOihOU1N0cmluZyAqKXRh
aWwKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1Q
TC0+dmFyaWFkaWNTdHJpbmdNZXRob2QoaGVhZCwgdGFpbCk7Cit9CisKKy0gKHZvaWQpdmFyaWFk
aWNEb3VibGVNZXRob2Q6KGRvdWJsZSloZWFkIHRhaWw6KGRvdWJsZSl0YWlsCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnZhcmlhZGljRG91
YmxlTWV0aG9kKGhlYWQsIHRhaWwpOworfQorCistICh2b2lkKXZhcmlhZGljTm9kZU1ldGhvZDoo
RE9NTm9kZSAqKWhlYWQgdGFpbDooRE9NTm9kZSAqKXRhaWwKK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+dmFyaWFkaWNOb2RlTWV0aG9kKGNv
cmUoaGVhZCksIGNvcmUodGFpbCkpOworfQorCiBAZW5kCiAKIFdlYkNvcmU6OlRlc3RPYmoqIGNv
cmUoRE9NVGVzdE9iaiAqd3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCBmMmQxZmU4MTBkMWJhZWQxNzQ1NmM3YjE0MDFh
OTc4NjcxYmQzZmMzLi44YThmZmE2ZTI2NWZkZjRjYzE4NjdiOGRmN2Y2ZTg3ZjFmYzFiODg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
CkBAIC0yNjMsNSArMjYzLDkgQEAgbW9kdWxlIHRlc3QgewogICAgICAgICBbUmVmbGVjdD1DT05T
VF9JTVBMXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBDT05TVF9KQVZBU0NSSVBUID0gMTU7CiAKICAg
ICAgICAgYXR0cmlidXRlIFtSZXBsYWNlYWJsZV0gbG9uZyByZXBsYWNlYWJsZUF0dHJpYnV0ZTsK
KworICAgICAgICB2b2lkIHZhcmlhZGljU3RyaW5nTWV0aG9kKGluIERPTVN0cmluZyBoZWFkLCBp
biBET01TdHJpbmcuLi4gdGFpbCk7CisgICAgICAgIHZvaWQgdmFyaWFkaWNEb3VibGVNZXRob2Qo
aW4gZG91YmxlIGhlYWQsIGluIGRvdWJsZS4uLiB0YWlsKTsKKyAgICAgICAgdm9pZCB2YXJpYWRp
Y05vZGVNZXRob2QoaW4gTm9kZSBoZWFkLCBpbiBOb2RlLi4uIHRhaWwpOwogICAgIH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouY3BwCmluZGV4IDUwMjQyOGE3MTAwYzVmNzE2NjNjZjVjNjkxNTE2OWQ5NzIyMTU1MzUuLjdl
OGZkNmJjZGU5YjZmYmIwNmMzZDRjZDQyYmJhZjQ3Zjk2YzRhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhEb2N1
bWVudC5oIgogI2luY2x1ZGUgIlY4RmxvYXQzMkFycmF5LmgiCisjaW5jbHVkZSAiVjhOb2RlLmgi
CiAjaW5jbHVkZSAiVjhTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlY4U1ZHUG9pbnQuaCIKICNp
bmNsdWRlICJWOFNjcmlwdFByb2ZpbGUuaCIKQEAgLTE5MDUsNiArMTkwNiw0NyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmljdEZ1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElz
b2xhdGUoKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFyaWFkaWNTdHJp
bmdNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmoudmFyaWFkaWNTdHJpbmdNZXRob2QiKTsKKyAgICBpZiAoYXJncy5M
ZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05f
QkxPQ0soVjhQYXJhbWV0ZXI8PiwgaGVhZCwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywg
MCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFZlY3RvcjxTdHJp
bmc+LCB0YWlsLCB0b05hdGl2ZUFyZ3VtZW50czxTdHJpbmc+KGFyZ3MsIDEpKTsKKyAgICBpbXAt
PnZhcmlhZGljU3RyaW5nTWV0aG9kKGhlYWQsIHRhaWwpOworICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhcmlhZGljRG91YmxlTWV0
aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLnZhcmlhZGljRG91YmxlTWV0aG9kIik7CisgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdz
LkdldElzb2xhdGUoKSk7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soZG91YmxlLCBoZWFkLCBzdGF0aWNf
Y2FzdDxkb3VibGU+KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCktPk51bWJlclZhbHVlKCkpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soVmVjdG9yPGRv
dWJsZT4sIHRhaWwsIHRvTmF0aXZlQXJndW1lbnRzPGRvdWJsZT4oYXJncywgMSkpOworICAgIGlt
cC0+dmFyaWFkaWNEb3VibGVNZXRob2QoaGVhZCwgdGFpbCk7CisgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFyaWFkaWNOb2RlTWV0
aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLnZhcmlhZGljTm9kZU1ldGhvZCIpOworICAgIGlmIChhcmdzLkxlbmd0aCgp
IDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5H
ZXRJc29sYXRlKCkpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKE5vZGUqLCBoZWFkLCBWOE5vZGU6Okhh
c0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVm
aW5lZCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDAp
OworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiB0YWlsOworICAgIGZvciAoaW50IGkgPSAxOyBp
IDwgYXJncy5MZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmICghVjhOb2RlOjpIYXNJbnN0YW5j
ZShhcmdzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdl
dElzb2xhdGUoKSk7CisgICAgICAgIHRhaWwuYXBwZW5kKFY4Tm9kZTo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzW2ldKSkpOworICAgIH0KKyAgICBpbXAtPnZhcmlh
ZGljTm9kZU1ldGhvZChoZWFkLCB0YWlsKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgVGVzdE9ialY4SW50ZXJuYWwKIAogc3RhdGljIGNvbnN0IFY4RE9N
Q29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RPYmpBdHRyc1tdID0gewpAQCAt
MjA4Niw2ICsyMTI4LDggQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hl
ZENhbGxiYWNrIFY4VGVzdE9iakNhbGxiYWNrc1tdID0gewogICAgIHsiaW1tdXRhYmxlUG9pbnRG
dW5jdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEZ1bmN0aW9uQ2FsbGJh
Y2t9LAogICAgIHsib3JhbmdlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om9yYW5nZUNhbGxiYWNrfSwK
ICAgICB7InN0cmljdEZ1bmN0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZ1bmN0aW9u
Q2FsbGJhY2t9LAorICAgIHsidmFyaWFkaWNTdHJpbmdNZXRob2QiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6dmFyaWFkaWNTdHJpbmdNZXRob2RDYWxsYmFja30sCisgICAgeyJ2YXJpYWRpY0RvdWJsZU1l
dGhvZCIsIFRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY0RvdWJsZU1ldGhvZENhbGxiYWNrfSwK
IH07CiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDb25zdGFudCBW
OFRlc3RPYmpDb25zdHNbXSA9IHsKQEAgLTIyMzcsNiArMjI4MSwxMiBAQCBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRl
KHY4OjpQZXJzaQogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ1
QXJndltjb252ZXJ0NUFyZ2NdID0geyBWOGU6OkdldFJhd1RlbXBsYXRlKCkgfTsKICAgICB2ODo6
SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQ1U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6
TmV3KGRlc2MsIGNvbnZlcnQ1QXJnYywgY29udmVydDVBcmd2KTsKICAgICBwcm90by0+U2V0KHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDUiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDVDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29u
dmVydDVTaWduYXR1cmUpKTsKKworICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3ZhcmlhZGljTm9k
ZU1ldGhvZCcKKyAgICBjb25zdCBpbnQgdmFyaWFkaWNOb2RlTWV0aG9kQXJnYyA9IDI7CisgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdmFyaWFkaWNOb2RlTWV0aG9kQXJndlt2
YXJpYWRpY05vZGVNZXRob2RBcmdjXSA9IHsgVjhOb2RlOjpHZXRSYXdUZW1wbGF0ZSgpLCBWOE5v
ZGU6OkdldFJhd1RlbXBsYXRlKCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHZh
cmlhZGljTm9kZU1ldGhvZFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCB2YXJp
YWRpY05vZGVNZXRob2RBcmdjLCB2YXJpYWRpY05vZGVNZXRob2RBcmd2KTsKKyAgICBwcm90by0+
U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidmFyaWFkaWNOb2RlTWV0aG9kIiksIHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljTm9kZU1ldGhvZENh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2YXJpYWRpY05vZGVNZXRob2RTaWduYXR1cmUpKTsKICAg
ICBWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKGRlc2MsIHByb3Rv
LCBWOFRlc3RPYmpDb25zdHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0T2JqQ29uc3RzKSk7CiAK
ICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmgKaW5kZXggMGM5ZWU0ZjRjYTE4YTBjODBjNmUyYjM1YTI3NjcxODQ0NzBmMmVi
Zi4uNTU2ZjY4NjY0MjZkMjdkZTY2YzZkNzE4N2JhYzEzMjhlMWNhM2Q1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTE4MiwyOCArMTgyLDI5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIHRlbXBsYXRlPD4KICAgICBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFp
dHM8U3RyaW5nPiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGFycmF5TmF0aXZlVmFs
dWUoY29uc3Qgdjg6OkxvY2FsPHY4OjpBcnJheT4mIGFycmF5LCBzaXplX3QgaSkKKyAgICAgICAg
c3RhdGljIGlubGluZSBTdHJpbmcgbmF0aXZlVmFsdWUoY29uc3Qgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+JiB2YWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRvV2ViQ29yZVN0cmlu
ZyhhcnJheS0+R2V0KGkpKTsKKyAgICAgICAgICAgIHJldHVybiB0b1dlYkNvcmVTdHJpbmcodmFs
dWUpOwogICAgICAgICB9CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4KICAgICBzdHJ1Y3QgTmF0
aXZlVmFsdWVUcmFpdHM8ZmxvYXQ+IHsKLSAgICAgICAgc3RhdGljIGlubGluZSBmbG9hdCBhcnJh
eU5hdGl2ZVZhbHVlKGNvbnN0IHY4OjpMb2NhbDx2ODo6QXJyYXk+JiBhcnJheSwgc2l6ZV90IGkp
CisgICAgICAgIHN0YXRpYyBpbmxpbmUgZmxvYXQgbmF0aXZlVmFsdWUoY29uc3Qgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+JiB2YWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGZsb2F0PihhcnJheS0+R2V0KHY4SW50ZWdlcihpKSktPk51bWJlclZhbHVlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZS0+TnVtYmVyVmFsdWUo
KSk7CiAgICAgICAgIH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0cnVjdCBOYXRp
dmVWYWx1ZVRyYWl0czxkb3VibGU+IHsKLSAgICAgICAgc3RhdGljIGlubGluZSBkb3VibGUgYXJy
YXlOYXRpdmVWYWx1ZShjb25zdCB2ODo6TG9jYWw8djg6OkFycmF5PiYgYXJyYXksIHNpemVfdCBp
KQorICAgICAgICBzdGF0aWMgaW5saW5lIGRvdWJsZSBuYXRpdmVWYWx1ZShjb25zdCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4mIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihhcnJheS0+R2V0KHY4SW50ZWdlcihpKSktPk51bWJlclZhbHVlKCkp
OworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUtPk51bWJlclZh
bHVlKCkpOwogICAgICAgICB9CiAgICAgfTsKIAorCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CiAg
ICAgVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQog
ICAgIHsKQEAgLTIxNSwxMiArMjE2LDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZSh2ODo6TG9jYWw8djg6OlZhbHVlPjo6TmV3KHZh
bHVlKSk7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkxvY2FsPHY4
OjpBcnJheT46OkNhc3QodjhWYWx1ZSk7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBhcnJheS0+
TGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVHJhaXRzVHlwZTo6YXJyYXlOYXRpdmVWYWx1ZShh
cnJheSwgaSkpOwotICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFRyYWl0c1R5cGU6Om5hdGl2ZVZh
bHVlKGFycmF5LT5HZXQoaSkpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgICBWZWN0b3I8VD4gdG9OYXRpdmVBcmd1bWVudHMoY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgc2l6ZV90IHN0YXJ0SW5kZXgpCisgICAgeworICAgICAg
ICBBU1NFUlQoc3RhcnRJbmRleCA8PSBhcmdzLkxlbmd0aCgpKTsKKyAgICAgICAgVmVjdG9yPFQ+
IHJlc3VsdDsKKyAgICAgICAgdHlwZWRlZiBOYXRpdmVWYWx1ZVRyYWl0czxUPiBUcmFpdHNUeXBl
OworICAgICAgICBzaXplX3QgbGVuZ3RoID0gYXJncy5MZW5ndGgoKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoVHJhaXRzVHlwZTo6bmF0aXZlVmFsdWUoYXJnc1tpXSkpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAorCiAgICAgLy8gVmFsaWRhdGVzIHRoYXQgdGhlIHBhc3NlZCBv
YmplY3QgaXMgYSBzZXF1ZW5jZSB0eXBlIHBlciBXZWJJREwgc3BlYwogICAgIC8vIGh0dHA6Ly93
d3cudzMub3JnL1RSLzIwMTIvV0QtV2ViSURMLTIwMTIwMjA3LyNlcy1zZXF1ZW5jZQogICAgIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFNlcXVlbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgdWludDMyX3QmIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ2xhc3NMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2xhc3NMaXN0LmNwcApp
bmRleCBhMzI1YTEyMjZhYTlhNDViNDU1NGNiYjllZWU3MDI3Mjg4NGFkMGM3Li5lNmUwNzljZGYx
ZGU4ZmQ3NDdjOGIyNTg5OTRkMzAxNGQ0NWE5NzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NsYXNzTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DbGFzc0xpc3Qu
Y3BwCkBAIC04Myw2ICs4MywxMiBAQCB2b2lkIENsYXNzTGlzdDo6YWRkKGNvbnN0IEF0b21pY1N0
cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGFkZEludGVybmFsKHRva2VuKTsK
IH0KIAordm9pZCBDbGFzc0xpc3Q6OmFkZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2Vucy5z
aXplKCk7ICsraSkKKyAgICAgICAgYWRkKHRva2Vuc1tpXSwgZWMpOworfQorCiB2b2lkIENsYXNz
TGlzdDo6YWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKIHsKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIG9sZENsYXNzTmFtZShtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShjbGFz
c0F0dHIpKTsKQEAgLTEwMSw2ICsxMDcsMTMgQEAgdm9pZCBDbGFzc0xpc3Q6OnJlbW92ZShjb25z
dCBBdG9taWNTdHJpbmcmIHRva2VuLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZW1vdmVJbnRl
cm5hbCh0b2tlbik7CiB9CiAKK3ZvaWQgQ2xhc3NMaXN0OjpyZW1vdmUoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHRva2VucywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlbW92ZSh0b2tlbnNbaV0sIGVj
KTsKK30KKworCiB2b2lkIENsYXNzTGlzdDo6cmVtb3ZlSW50ZXJuYWwoY29uc3QgQXRvbWljU3Ry
aW5nJiB0b2tlbikKIHsKICAgICAvLyBDaGVjayB1c2luZyBjb250YWlucyBmaXJzdCBzaW5jZSBp
dCB1c2VzIEF0b21pY1N0cmluZyBjb21wYXJpc29ucyBpbnN0ZWFkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0NsYXNzTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DbGFzc0xp
c3QuaAppbmRleCA5OTJmYWQ0NzRjNjNkNzVmMThiOWVlZmI1NjQ4NjYwZjZiMzgxMGVkLi41OTg4
MTUwZWIwZDEwNGRkMTY5OWU1YTAwNjMxMGUzY2U0ZDZkMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NsYXNzTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2xhc3NM
aXN0LmgKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNs
dWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OCw4
ICs1MCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGFkZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGQoY29u
c3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmUoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgdmlydHVhbCBi
b29sIHRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVNldHRhYmxlVG9rZW5MaXN0LmNwcAppbmRleCAzYTg2ZTljMDAwMjQ0Mjk4ZDI0YWRjYzNkMTA1
YzFlZDQyNDc0OWYwLi5hNjRkZjRmNGFjMGZmMDZlZTVjM2Y2MzM1Zjc4MjEyYzFiNzc0ZWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmNwcApAQCAtNTgs
NiArNTgsMTIgQEAgdm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6YWRkKGNvbnN0IEF0b21pY1N0
cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGFkZEludGVybmFsKHRva2VuKTsK
IH0KIAordm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6YWRkKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0b2tlbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdG9rZW5zLnNpemUoKTsgKytpKQorICAgICAgICBhZGQodG9rZW5zW2ldLCBlYyk7Cit9CisK
IHZvaWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdG9rZW4pCiB7CiAgICAgbV92YWx1ZSA9IGFkZFRva2VuKG1fdmFsdWUsIHRva2VuKTsKQEAg
LTc0LDYgKzgwLDEyIEBAIHZvaWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OnJlbW92ZShjb25zdCBB
dG9taWNTdHJpbmcmIHRva2VuLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZW1vdmVJbnRlcm5h
bCh0b2tlbik7CiB9CiAKK3ZvaWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OnJlbW92ZShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdG9rZW5zLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHRva2Vucy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVtb3ZlKHRva2Vu
c1tpXSwgZWMpOworfQorCiB2b2lkIERPTVNldHRhYmxlVG9rZW5MaXN0OjpyZW1vdmVJbnRlcm5h
bChjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQogewogICAgIG1fdmFsdWUgPSByZW1vdmVUb2tl
bihtX3ZhbHVlLCB0b2tlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNl
dHRhYmxlVG9rZW5MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5M
aXN0LmgKaW5kZXggMGIyM2M2YWIyMjlmYTY1NWNlMzg4ODE5NGQ4OWUzN2NiY2U5OTNlMS4uMTA5
OWM4MmQ3NmNmMWIyODYwNDcxZDE1MTUzMjI0N2I1YTVlNjUwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaApAQCAtNTAsOCArNTAsMTIgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV90b2tlbnMuc2l6
ZSgpOyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRl
eCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKwogICAgIHZpcnR1YWwgdm9pZCBhZGQoY29uc3QgQXRv
bWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29u
c3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBhZGQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIHZp
cnR1YWwgYm9vbCB0b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAppbmRleCBmZDExMGI3ZmZkMDRmNjA5YzIwMzNl
ZDMyYTNiMjE2OTg4YWRkMzMxLi5hYzg1NzE5MGFmOWExNGI5ZmYwYjgzYmEwZThhOTNmOWE2NzE5
YTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKQEAgLTQ2LDggKzQ2LDEyIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
YWRkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgPSAwOwor
CiAgICAgdmlydHVhbCBib29sIHRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwKaW5kZXggY2Y1N2UxYWVlZjk2ZTI5Njc1MDBl
ZTE3ZTUwZjQyZmQwODljNjcyYi4uODVlZjEwOTJjNzFhMTE5MzJhZDBlN2E1NmNhNDNhNTU1YWJk
MDhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmlkbApAQCAtMzEsOCArMzEsOCBA
QCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25n
IGxlbmd0aDsKICAgICAgICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9NU3Ry
aW5nIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgICAgIGJvb2xlYW4gY29udGFp
bnMoaW4gRE9NU3RyaW5nIHRva2VuKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgdm9p
ZCBhZGQoaW4gRE9NU3RyaW5nIHRva2VuKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAg
dm9pZCByZW1vdmUoaW4gRE9NU3RyaW5nIHRva2VuKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAg
ICAgICAgdm9pZCBhZGQoaW4gRE9NU3RyaW5nLi4uIHRva2VucykgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIHZvaWQgcmVtb3ZlKGluIERPTVN0cmluZy4uLiB0b2tlbnMpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogICAgICAgICBib29sZWFuIHRvZ2dsZShpbiBET01TdHJpbmcgdG9rZW4p
IHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBU
KSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165863</attachid>
            <date>2012-09-26 13:27:34 -0700</date>
            <delta_ts>2012-09-26 13:40:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97335-20120926162652.patch</filename>
            <type>text/plain</type>
            <size>66979</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Mzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRkNGFlZmM1NGQxNjM3
ODY4ZGM0ZWEyMzVkOTM3MjIzYTVjODQ0Yy4uOTEyNzE2ZjM1ZTUzMDdhZDk5Y2I3MjQyYjkwOTgw
MGNmMDBiNjk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wOS0yNiAgRXJp
ayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERPTTQ6IEFkZCBzdXBw
b3J0IGZvciByZXN0IHBhcmFtZXRlcnMgdG8gRE9NVG9rZW5MaXN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzMzNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciByZXN0
IHBhcmFtYXRlcnMgdG8gRE9NVG9rZW5MaXN0IGFkZCBhbmQgcmVtb3ZlLgorICAgICAgICBodHRw
Oi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tdG9rZW5saXN0CisKKyAgICAgICAgVGhlIGNvZGUg
Z2VuZXJhdG9yIGhhcyBiZWVuIHVwZGF0ZWQgdG8gdW5kZXJzdGFuZCB2YXJpYWRpYyBtZXRob2Rz
LgorICAgICAgICBXaGVuIGEgbWV0aG9kIGhhcyBhIHJlc3QgcGFyYW1ldGVyIHRoZSByZW1haW5p
bmcgYXJndW1lbnRzIGFyZSBjb2xsZWN0ZWQKKyAgICAgICAgaW50byBhIFdURjo6VmVjdG9yLgor
CisgICAgICAgIERPTVRva2VuTGlzdCwgRE9NU2V0dGFibGVUb2tlbkxpc3QgYW5kIENsYXNzTGlz
dCB3ZXJlIHJlc3RydWN0dXJlZCBhIGJpdCB0bworICAgICAgICBhbGxvdyBjb2RlIHRvIGJlIHNo
YXJlZCBiZXR0ZXIuCisKKyAgICAgICAgVXBkYXRlZCBleGlzdGluZyB0ZXN0cyBhbmQgaW5jbHVk
ZXMgbmV3IGJpbmRpbmcgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZlQXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b05hdGl2ZUFyZ3VtZW50cyk6IFNpbWlsYXIgdG8gdG9O
YXRpdmVBcnJheSBidXQgZXh0cmFjdHMgdGhlIGFyZ3VtZW50cyBpbnN0ZWFkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVB
cmd1bWVudHNDb3VudENoZWNrKTogVXBkYXRlZCB0byB0cmVhdCByZXN0IHBhcmFtYXRlcnMgYXMg
b3B0aW9uYWwuCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6IEdlbmVyYXRlIGNv
ZGUgZm9yIHJlc3QgcGFyYW1zLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvblBhcmFtZXRlcnNDaGVjayk6IFVw
ZGF0ZWQgdG8gdHJlYXQgcmVzdCBwYXJhbWF0ZXJzIGFzIG9wdGlvbmFsLgorICAgICAgICAoR2Vu
ZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjayk6ICBHZW5lcmF0ZSBjb2RlIGZvciByZXN0IHBhcmFtcy4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKHBhcnNlUGFyYW1ldGVycyk6
IFdoZW4gYSBwYXJhbWV0ZXIgaXMgZGVmaW5lZCBhcyBULi4uIHdlIHNldCBpc1ZhcmlhZGljIHRv
IHRydWUuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG06CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkRPTVRlc3RPYmo6OnZhcmlhZGljU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkRP
TVRlc3RPYmo6OnZhcmlhZGljRG91YmxlTWV0aG9kKToKKyAgICAgICAgKFdlYkRPTVRlc3RPYmo6
OnZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3Zh
cmlhZGljX3N0cmluZ19tZXRob2QpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial92YXJp
YWRpY19kb3VibGVfbWV0aG9kKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFk
aWNfbm9kZV9tZXRob2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2Rl
TWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE9iai5tbToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiB2YXJpYWRpY1N0cmluZ01ldGhvZDp0
YWlsOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHZhcmlhZGljRG91YmxlTWV0aG9kOnRhaWw6
XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogdmFyaWFkaWNOb2RlTWV0aG9kOnRhaWw6XSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljU3RyaW5nTWV0aG9kQ2FsbGJhY2spOgorICAgICAg
ICAoVGVzdE9ialY4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnZhcmlhZGljRG91YmxlTWV0aG9kQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OnZhcmlhZGljTm9kZU1ldGhvZENhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6dG9O
YXRpdmVBcnJheSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0
aXZlQXJndW1lbnRzKTogU2ltaWxhciB0byB0b05hdGl2ZUFycmF5IGJ1dCBleHRyYWN0cyB0aGUg
YXJndW1lbnRzIGluc3RlYWQuCisgICAgICAgICogaHRtbC9DbGFzc0xpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xhc3NMaXN0OjpDbGFzc0xpc3QpOgorICAgICAgICAqIGh0bWwvQ2xhc3NM
aXN0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENsYXNzTGlzdCk6CisgICAgICAg
ICogaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01T
ZXR0YWJsZVRva2VuTGlzdDo6Y29udGFpbnNJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01TZXR0YWJsZVRva2VuTGlzdDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNldHRhYmxl
VG9rZW5MaXN0OjphZGRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZXR0YWJsZVRv
a2VuTGlzdDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNldHRhYmxlVG9rZW5MaXN0
OjpyZW1vdmVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZXR0YWJsZVRva2VuTGlz
dDo6c2V0VmFsdWUpOgorICAgICAgICAqIGh0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaDoKKyAg
ICAgICAgKERPTVNldHRhYmxlVG9rZW5MaXN0KToKKyAgICAgICAgKiBodG1sL0RPTVRva2VuTGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnZhbGlkYXRlVG9rZW5zKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojpjb250
YWlucyk6IE1vdmVkIGltcGxlbWVudGF0aW9uIHRvIGJhc2UgY2xhc3MgdG8gYWxsb3cgY29kZSBz
aGFyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjphZGQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6cmVtb3ZlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnRvZ2dsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RE9NVG9rZW5MaXN0OjphZGRJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9N
VG9rZW5MaXN0OjpyZW1vdmVJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9N
VG9rZW5MaXN0OjphZGRUb2tlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5M
aXN0OjphZGRUb2tlbnMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjpyZW1vdmVU
b2tlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjpyZW1vdmVUb2tl
bnMpOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0Lmg6CisgICAgICAgIChET01Ub2tlbkxp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojp0b1N0cmluZyk6CisgICAgICAg
ICogaHRtbC9ET01Ub2tlbkxpc3QuaWRsOgorCiAyMDEyLTA5LTI0ICBUb21teSBXaWRlbmZseWNo
dCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogRml4IHRo
ZSBpbmNvcnJlY3RseSBzcGVsbGVkIFJUQ1BlZXJDb25uZWN0aW9uOjpvbm5lZ290aWF0aW9ubmVl
ZGVkIGNhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmlu
ZGV4IDc1MzJiNzkzZTcyOGQwZDhiYzFhZTJkNWMzZTJhMTJlOTA5NzEzOTAuLjFlZmE0YjMwNGY2
MmI3MDE1ZWExZTVkZTcxYzJlYzhkZTRiYzU4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCkBAIC0zNTMsNyArMzUzLDcgQEAgZW51bSBQYXJhbWV0ZXJEZWZh
dWx0UG9saWN5IHsKIAogICAgIHRlbXBsYXRlPD4KICAgICBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFp
dHM8U3RyaW5nPiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhcnJheU5hdGl2ZVZhbHVl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgU3RyaW5nJiBpbmRl
eGVkVmFsdWUpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIFN0cmluZyYgaW5kZXhlZFZhbHVl
KQogICAgICAgICB7CiAgICAgICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzYyLDcg
KzM2Miw3IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAKICAgICB0ZW1wbGF0ZTw+
CiAgICAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPHVuc2lnbmVkIGxvbmc+IHsKLSAgICAgICAg
c3RhdGljIGlubGluZSBib29sIGFycmF5TmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCB1bnNpZ25lZCBsb25nJiBpbmRleGVkVmFsdWUpCisgICAg
ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU1ZhbHVlIGpzVmFsdWUsIHVuc2lnbmVkIGxvbmcmIGluZGV4ZWRWYWx1ZSkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFqc1ZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVs
dFBvbGljeSB7CiAKICAgICB0ZW1wbGF0ZTw+CiAgICAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRz
PGZsb2F0PiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhcnJheU5hdGl2ZVZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgZmxvYXQmIGluZGV4ZWRW
YWx1ZSkKKyAgICAgICAgc3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgZmxvYXQmIGluZGV4ZWRWYWx1ZSkKICAg
ICAgICAgewogICAgICAgICAgICAgaW5kZXhlZFZhbHVlID0ganNWYWx1ZS50b0Zsb2F0KGV4ZWMp
OwogICAgICAgICAgICAgcmV0dXJuICFleGVjLT5oYWRFeGNlcHRpb24oKTsKQEAgLTQwMCw3ICs0
MDAsMjUgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKIAogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIFQgaW5kZXhWYWx1
ZTsKLSAgICAgICAgICAgIGlmICghVHJhaXRzVHlwZTo6YXJyYXlOYXRpdmVWYWx1ZShleGVjLCBv
YmplY3QtPmdldChleGVjLCBpKSwgaW5kZXhWYWx1ZSkpCisgICAgICAgICAgICBpZiAoIVRyYWl0
c1R5cGU6Om5hdGl2ZVZhbHVlKGV4ZWMsIG9iamVjdC0+Z2V0KGV4ZWMsIGkpLCBpbmRleFZhbHVl
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7CisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGluZGV4VmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgVmVjdG9yPFQ+IHRvTmF0aXZl
QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3Qgc3RhcnRJbmRleCA9IDApCisg
ICAgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAg
ICAgICBBU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOworCisgICAgICAgIFZlY3RvcjxUPiBy
ZXN1bHQ7CisgICAgICAgIHR5cGVkZWYgTmF0aXZlVmFsdWVUcmFpdHM8VD4gVHJhaXRzVHlwZTsK
KworICAgICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICBUIGluZGV4VmFsdWU7CisgICAgICAgICAgICBpZiAoIVRyYWl0c1R5cGU6
Om5hdGl2ZVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KGkpLCBpbmRleFZhbHVlKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KGluZGV4VmFsdWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGUzNzY2ZDNiYTc2NDRmYzIyMDFmMDQ2
MWY4Mjc4NGI1Njc1OWIxNmUuLmQ5YzI2ZDE0ZDc1YWUzZDA0NjFiZjk0MmQ1ZTAyOWZjM2RmMzE3
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC0yNjA0LDcgKzI2MDQsNyBAQCBzdWIgR2VuZXJhdGVBcmd1bWVudHNDb3Vu
dENoZWNrCiAKICAgICBteSAkbnVtTWFuZGF0b3J5UGFyYW1zID0gQHskZnVuY3Rpb24tPnBhcmFt
ZXRlcnN9OwogICAgIGZvcmVhY2ggbXkgJHBhcmFtIChyZXZlcnNlKEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfSkpIHsKLSAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9w
dGlvbmFsIn0pIHsKKyAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9w
dGlvbmFsIn0gb3IgJHBhcmFtLT5pc1ZhcmlhZGljKSB7CiAgICAgICAgICAgICAkbnVtTWFuZGF0
b3J5UGFyYW1zLS07CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsYXN0OwpAQCAtMjcw
NywxMyArMjcwNywzOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRhcmdUeXBlPiAkbmFtZSA9ICR7
Y2FsbGJhY2tDbGFzc05hbWV9OjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoJGFyZ3NJ
bmRleCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7XG4iKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNsYW1w
In0pIHsKLSAgICAgICAgICAgICAgICBteSAkbmF0aXZlVmFsdWUgPSAiJHtuYW1lfU5hdGl2ZVZh
bHVlIjsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJGFyZ1R5cGUg
JG5hbWUgPSAwO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGRvdWJsZSAkbmF0aXZlVmFsdWUgPSBleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS50b051bWJl
cihleGVjKTtcbiIpOworICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVlID0gIiR7bmFtZX1OYXRp
dmVWYWx1ZSI7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJGFyZ1R5cGUg
JG5hbWUgPSAwO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZG91
YmxlICRuYXRpdmVWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpLnRvTnVtYmVyKGV4
ZWMpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG5cbiIpOworICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghaXNuYW4oJG5hdGl2ZVZhbHVl
KSlcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZSA9
IGNsYW1wVG88JGFyZ1R5cGU+KCRuYXRpdmVWYWx1ZSk7XG5cbiIpOworICAgICAgICB9IGVsc2lm
ICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7CisgICAgICAgICAgICBteSAkbmF0aXZlRWxlbWVu
dFR5cGU7CisgICAgICAgICAgICBpZiAoJGFyZ1R5cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAg
ICAgICAgICAgICAkbmF0aXZlRWxlbWVudFR5cGUgPSAiU3RyaW5nIjsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgJG5hdGl2ZUVsZW1lbnRUeXBlID0gR2V0TmF0aXZlVHlw
ZSgkYXJnVHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKCRuYXRpdmVFbGVtZW50VHlwZSA9fiAv
PiQvKSB7CisgICAgICAgICAgICAgICAgICAgICRuYXRpdmVFbGVtZW50VHlwZSA9ICRuYXRpdmVF
bGVtZW50VHlwZSAuICIgIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghSXNOYXRpdmVUeXBlKCRhcmdUeXBlKSkgeworICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWZWN0b3I8JG5hdGl2ZUVsZW1lbnRUeXBlPiAkbmFt
ZTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBmb3IgKHVu
c2lnbmVkIGkgPSAkYXJnc0luZGV4OyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFl
eGVjLT5hcmd1bWVudChpKS5pbmhlcml0cygmSlMke2FyZ1R5cGV9OjpzX2luZm8pKVxuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgICRuYW1lLmFwcGVuZCh0byRhcmdUeXBlKGV4ZWMtPmFyZ3VtZW50KGkp
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIikK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRuYW1lID0gdG9OYXRpdmVBcmd1bWVu
dHM8JG5hdGl2ZUVsZW1lbnRUeXBlPihleGVjLCAkYXJnc0luZGV4KTtcbiIpOworICAgICAgICAg
ICAgICAgICMgQ2hlY2sgaWYgdGhlIHR5cGUgY29udmVyc2lvbiBzdWNjZWVkZWQuCiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcblxuIik7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghaXNuYW4oJG5hdGl2ZVZhbHVlKSlcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUgPSBj
bGFtcFRvPCRhcmdUeXBlPigkbmF0aXZlVmFsdWUpO1xuXG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7XG4iKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlz
IHByZXNlbnQsIGFuZCB0aGUgYXJndW1lbnQncyB0eXBlIGlzIGFuCiAgICAgICAgICAgICAjIGlu
dGVyZmFjZSB0eXBlLCB0aGVuIGlmIHRoZSBpbmNvbWluZyB2YWx1ZSBkb2VzIG5vdCBpbXBsZW1l
bnQgdGhhdCBpbnRlcmZhY2UsIGEgVHlwZUVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDA2ODEwNTYwMDYzMjFjYmEy
MTcwMDI0NTM4YWJkMDE3NWZkMmEwZTIuLjQxMWMwZDkxZDIxM2ZhM2FmZTJjNzYzNWQ2YTYyYmU2
MDQ0ZjBhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCkBAIC0xNDA1LDE1ICsxNDA1LDIyIEBAIHN1YiBHZW5lcmF0ZUZ1bmN0
aW9uUGFyYW1ldGVyc0NoZWNrCiAKICAgICBteSBAb3JFeHByZXNzaW9uID0gKCk7CiAgICAgbXkg
JG51bVBhcmFtZXRlcnMgPSAwOworICAgIG15ICRoYXNWYXJpYWRpYyA9IDA7CiAgICAgbXkgJG51
bU1hbmRhdG9yeVBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKICAgICBmb3JlYWNo
IG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewogICAgICAgICBpZiAo
JHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKICAgICAgICAg
ICAgIHB1c2goQG9yRXhwcmVzc2lvbiwgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9u
KCRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb24pKTsKICAgICAgICAgICAgICRudW1NYW5kYXRvcnlQ
YXJhbXMtLTsKICAgICAgICAgfQorICAgICAgICBpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykg
eworICAgICAgICAgICAgJGhhc1ZhcmlhZGljID0gMTsKKyAgICAgICAgICAgIGxhc3Q7CisgICAg
ICAgIH0KICAgICAgICAgJG51bVBhcmFtZXRlcnMrKzsKICAgICB9Ci0gICAgcHVzaChAb3JFeHBy
ZXNzaW9uLCBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24oJG51bVBhcmFtZXRlcnMs
ICRmdW5jdGlvbikpOworICAgIGlmICghJGhhc1ZhcmlhZGljKSB7CisgICAgICAgIHB1c2goQG9y
RXhwcmVzc2lvbiwgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uKCRudW1QYXJhbWV0
ZXJzLCAkZnVuY3Rpb24pKTsKKyAgICB9CiAgICAgcmV0dXJuICgkbnVtTWFuZGF0b3J5UGFyYW1z
LCBqb2luKCIgfHwgIiwgQG9yRXhwcmVzc2lvbikpOwogfQogCkBAIC0xNjI0LDEyICsxNjMxLDEy
IEBAIHN1YiBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sKICAgICBteSAkZGF0YU5vZGUgPSBz
aGlmdDsKIAogICAgIG15ICRudW1NYW5kYXRvcnlQYXJhbXMgPSAwOwotICAgIG15ICRvcHRpb25h
bFNlZW4gPSAwOworICAgIG15ICRhbGxvd05vbk9wdGlvbmFsID0gMTsKICAgICBmb3JlYWNoIG15
ICRwYXJhbSAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAgIGlmICgkcGFyYW0t
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAgICAgICAgICAkb3B0aW9u
YWxTZWVuID0gMTsKKyAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9w
dGlvbmFsIn0gb3IgJHBhcmFtLT5pc1ZhcmlhZGljKSB7CisgICAgICAgICAgICAkYWxsb3dOb25P
cHRpb25hbCA9IDA7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkaWUgIkFuIGFyZ3Vt
ZW50IG11c3Qgbm90IGJlIGRlY2xhcmVkIHRvIGJlIG9wdGlvbmFsIHVubGVzcyBhbGwgc3Vic2Vx
dWVudCBhcmd1bWVudHMgdG8gdGhlIG9wZXJhdGlvbiBhcmUgYWxzbyBvcHRpb25hbC4iIGlmICRv
cHRpb25hbFNlZW47CisgICAgICAgICAgICBkaWUgIkFuIGFyZ3VtZW50IG11c3Qgbm90IGJlIGRl
Y2xhcmVkIHRvIGJlIG9wdGlvbmFsIHVubGVzcyBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgdG8g
dGhlIG9wZXJhdGlvbiBhcmUgYWxzbyBvcHRpb25hbC4iIGlmICEkYWxsb3dOb25PcHRpb25hbDsK
ICAgICAgICAgICAgICRudW1NYW5kYXRvcnlQYXJhbXMrKzsKICAgICAgICAgfQogICAgIH0KQEAg
LTE3NjAsNiArMTc2NywyMyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAg
ICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hf
RVJSO1xuIjsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBn
b3RvIGZhaWw7XG4iOwogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAg
fVxuIjsKKyAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykgeworICAgICAg
ICAgICAgbXkgJG5hdGl2ZUVsZW1lbnRUeXBlID0gR2V0TmF0aXZlVHlwZSgkcGFyYW1ldGVyLT50
eXBlKTsKKyAgICAgICAgICAgIGlmICgkbmF0aXZlRWxlbWVudFR5cGUgPX4gLz4kLykgeworICAg
ICAgICAgICAgICAgICRuYXRpdmVFbGVtZW50VHlwZSA9ICRuYXRpdmVFbGVtZW50VHlwZSAuICIg
IjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbXkgJGFyZ1R5cGUgPSBHZXRUeXBlRnJv
bVNpZ25hdHVyZSgkcGFyYW1ldGVyKTsKKyAgICAgICAgICAgIGlmIChJc1dyYXBwZXJUeXBlKCRh
cmdUeXBlKSkgeworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
IFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRwYXJhbWV0ZXJOYW1lO1xuIjsKKyAgICAgICAg
ICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBmb3IgKGludCBpID0gJHBhcmFt
SW5kZXg7IGkgPCBhcmdzLkxlbmd0aCgpOyArK2kpIHtcbiI7CisgICAgICAgICAgICAgICAgJHBh
cmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGlmICghVjgke2FyZ1R5cGV9OjpIYXNJbnN0
YW5jZShhcmdzW2ldKSlcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRl
KCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAg
ICAgJHBhcmFtZXRlck5hbWUuYXBwZW5kKFY4JHthcmdUeXBlfTo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzW2ldKSkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFy
YW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBFWENFUFRJT05fQkxP
Q0soVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4sICRwYXJhbWV0ZXJOYW1lLCB0b05hdGl2ZUFy
Z3VtZW50czwkbmF0aXZlRWxlbWVudFR5cGU+KGFyZ3MsICRwYXJhbUluZGV4KSk7XG4iOworICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2lmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVy
LykgewogICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIs
ICJNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAkcGFyYW1JbmRleCwgJHBhcmFtZXRlckRl
ZmF1bHRQb2xpY3kpIiwgImFyZ3MuR2V0SXNvbGF0ZSgpIik7CiAgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJHBhcmFtZXRl
ciwgJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4gIlxuIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMDU3YzAzZDZjNmEy
YjkxZjkzYmRlYTVjMDJiNzQ5NjFiZmI4OWQ0MS4uYWJhMzIzNGNhODhkN2E3NThiNDI2ODY0Njlm
NDFkMDlmMjFmYTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQ
YXJzZXIucG0KQEAgLTI0OCw2ICsyNDgsNyBAQCBzdWIgcGFyc2VQYXJhbWV0ZXJzCiAgICAgICAg
IG15ICRwYXJhbU5hbWUgPSAoZGVmaW5lZCgkNSkgPyAkNSA6IGRpZSgiUGFyc2luZyBlcnJvciFc
blNvdXJjZTpcbiRsaW5lXG4pIikpOwogCiAgICAgICAgIG15ICRpc051bGxhYmxlID0gJHBhcmFt
VHlwZVN1ZmZpeCBlcSAiPyI7CisgICAgICAgIG15ICRpc1ZhcmlhZGljID0gJHBhcmFtVHlwZVN1
ZmZpeCBlcSAiLi4uIjsKIAogICAgICAgICBteSAkcGFyYW1EYXRhTm9kZSA9IG5ldyBkb21TaWdu
YXR1cmUoKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmRpcmVjdGlvbigkcGFyYW1EaXJlY3Rp
b24pOwpAQCAtMjU1LDYgKzI1Niw3IEBAIHN1YiBwYXJzZVBhcmFtZXRlcnMKICAgICAgICAgJHBh
cmFtRGF0YU5vZGUtPnR5cGUoJHBhcmFtVHlwZSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJHBhcmFtRXh0ZW5kZWRB
dHRyaWJ1dGVzKSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc051bGxhYmxlKCRpc051bGxh
YmxlKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzVmFyaWFkaWMoJGlzVmFyaWFkaWMpOwog
CiAgICAgICAgIG15ICRhcnJheVJlZiA9ICRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyczsKICAgICAg
ICAgcHVzaChAJGFycmF5UmVmLCAkcGFyYW1EYXRhTm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtCmluZGV4IDJlM2ZiNmM4MDZlNTRhYzYz
YTk1MDdhOWQ4Y2ZjZWNhZTYzMTM2OWUuLmUwMDUwMzQ0Njg2YmI0ZTY4ZDgzZmRlOTQzYmYzMGM2
NzljYjYzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
U3RydWN0dXJlLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3Ry
dWN0dXJlLnBtCkBAIC02Nyw3ICs2Nyw4IEBAIHN0cnVjdCggZG9tU2lnbmF0dXJlID0+IHsKICAg
ICBuYW1lID0+ICckJywgICAgICAjIFZhcmlhYmxlIG5hbWUKICAgICB0eXBlID0+ICckJywgICAg
ICAjIFZhcmlhYmxlIHR5cGUKICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVu
ZGVkIGF0dHJpYnV0ZXMKLSAgICBpc051bGxhYmxlID0+ICckJyAjIElzIHZhcmlhYmxlIHR5cGUg
TnVsbGFibGUgKFQ/KQorICAgIGlzTnVsbGFibGUgPT4gJyQnLCAjIElzIHZhcmlhYmxlIHR5cGUg
TnVsbGFibGUgKFQ/KQorICAgIGlzVmFyaWFkaWMgPT4gJyQnICMgSXMgdmFyaWFibGUgdmFyaWFk
aWMgKGxvbmcuLi4gbnVtYmVycykKIH0pOwogCiAjIFVzZWQgdG8gcmVwcmVzZW50IHN0cmluZyBj
b25zdGFudHMKQEAgLTkyLDcgKzkzLDcgQEAgb3VyICRpZGxEYXRhVHlwZSA9ICdbYS16QS1aMC05
XCBdJzsgICAjIEdlbmVyaWMgZGF0YSB0eXBlIGlkZW50aWZpZXIKIAogIyBNYWdpYyBJREwgcGFy
c2luZyByZWd1bGFyIGV4cHJlc3Npb25zCiBteSAkc3VwcG9ydGVkVHlwZXMgPSAiKCg/Oig/OnVu
c2lnbmVkICk/KD86aW50fHNob3J0fCg/OmxvbmcgKT9sb25nKXwoPzokaWRsSWROcyopKSg/Olxc
W1xcXXw8KD86JGlkbElkTnNMaXN0Kik+KT8pIjsKLW15ICRzdXBwb3J0ZWRUeXBlU3VmZml4ID0g
IihcXD8pPyI7CitteSAkc3VwcG9ydGVkVHlwZVN1ZmZpeCA9ICIoXFw/fFxcLlxcLlxcLik/IjsK
IAogIyBTcGVjaWFsIElETCBub3RhdGlvbnMuIFRoaXMgcmVndWxhciBleHByZXNzaW9uIGV4dHJh
Y3RzIHRoZSBzdHJpbmcgYmV0d2VlbiB0aGUgZmlyc3QgWyBhbmQgaXRzIGNvcnJlc3BvbmRpbmcg
XS4KIG91ciAkZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXggPSBxci9cW1teXFtcXV0qKD86KD8/eyRJ
RExTdHJ1Y3R1cmU6OmV4dGVuZGVkQXR0cmlidXRlU3ludGF4fSlbXlxbXF1dKikqXF0veDsgIyBV
c2VkIGZvciBleHRlbmRlZCBhdHRyaWJ1dGVzCkBAIC0xMDcsOCArMTA4LDggQEAgb3VyICRzZXR0
ZXJSYWlzZXNTZWxlY3RvciA9ICdcYnNldHRlclxzK3JhaXNlc1xzKlwoKCcgLiAkaWRsSWROc0xp
c3QgLiAnKilccypcKScKIAogb3VyICR0eXBlTmFtZXNwYWNlU2VsZWN0b3IgPSAnKCg/OicgLiAk
aWRsSWQgLiAnKjo6KSopXHMqKCcgLiAkaWRsRGF0YVR5cGUgLiAnKiknOwogCi1vdXIgJGludGVy
ZmFjZVNlbGVjdG9yID0gJyhpbnRlcmZhY2V8ZXhjZXB0aW9uKVxzKigoPzonIC4gJGV4dGVuZGVk
QXR0cmlidXRlU3ludGF4IC4gJyApPykoJyAuICRpZGxJZE5zIC4gJyopXHMqKD86OihccypbXntd
KikpP3soWy1hLXpBLVowLTlfIj1ccygpLDs6XFtcXTw+Jlx8P10qKSc7Ci1vdXIgJGludGVyZmFj
ZU1ldGhvZFNlbGVjdG9yID0gJ1xzKigoPzonIC4gJGV4dGVuZGVkQXR0cmlidXRlU3ludGF4IC4g
JyApPykoc3RhdGljXHMrKT8nIC4gJHN1cHBvcnRlZFR5cGVzIC4gJ1xzKignIC4gJGlkbElkTnMg
LiAnKilccypcKFxzKihbYS16QS1aMC05OlxzLD1cW1xdPD4/XSopJzsKK291ciAkaW50ZXJmYWNl
U2VsZWN0b3IgPSAnKGludGVyZmFjZXxleGNlcHRpb24pXHMqKCg/OicgLiAkZXh0ZW5kZWRBdHRy
aWJ1dGVTeW50YXggLiAnICk/KSgnIC4gJGlkbElkTnMgLiAnKilccyooPzo6KFxzKltee10qKSk/
eyhbLWEtekEtWjAtOV8iPVxzKCksOzpcW1xdPD4mXHw/Ll0qKSc7CitvdXIgJGludGVyZmFjZU1l
dGhvZFNlbGVjdG9yID0gJ1xzKigoPzonIC4gJGV4dGVuZGVkQXR0cmlidXRlU3ludGF4IC4gJyAp
Pykoc3RhdGljXHMrKT8nIC4gJHN1cHBvcnRlZFR5cGVzIC4gJ1xzKignIC4gJGlkbElkTnMgLiAn
KilccypcKFxzKihbYS16QS1aMC05OlxzLD1cW1xdPD4/Ll0qKSc7CiBvdXIgJGludGVyZmFjZVBh
cmFtZXRlclNlbGVjdG9yID0gJyhpbnxvdXQpXHMqKCg/OicgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVT
eW50YXggLiAnICk/KScgLiAkc3VwcG9ydGVkVHlwZXMgLiAkc3VwcG9ydGVkVHlwZVN1ZmZpeCAu
ICdccyooJyAuICRpZGxJZE5zIC4gJyopJzsKIAogb3VyICRpbnRlcmZhY2VBdHRyaWJ1dGVTZWxl
Y3RvciA9ICdccyooc3RhdGljXHMrKT8ocmVhZG9ubHkgYXR0cmlidXRlfGF0dHJpYnV0ZSlccyoo
JyAuICRleHRlbmRlZEF0dHJpYnV0ZVN5bnRheCAuICcgKT8nIC4gJHN1cHBvcnRlZFR5cGVzIC4g
J1xzKignIC4gJGlkbFR5cGUgLiAnKiknOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggMGNmNjc2
NTk5YzYzYmYxMjVjMWQ0OWJjYWEwYzgzM2M4NTMxODEzYy4uZDUzNmY5NDdhYzI1YTk3ZTc1MWEx
ZjQyMDMyODk3YWY0ZDM4YjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC0yNiwxMiArMjYs
MTQgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCiAj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGVzdE9iai5oIgog
I2luY2x1ZGUgIldlYkRPTURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXZWJET01Eb2N1bWVudC5o
IgogI2luY2x1ZGUgIldlYkRPTUlEQktleS5oIgorI2luY2x1ZGUgIldlYkRPTU5vZGUuaCIKICNp
bmNsdWRlICJXZWJET01TVkdQb2ludC5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZy5oIgogI2lu
Y2x1ZGUgIldlYkRPTWEuaCIKQEAgLTk2OSw2ICs5NzEsMzAgQEAgV2ViRE9NYm9vbCBXZWJET01U
ZXN0T2JqOjpzdHJpY3RGdW5jdGlvbihjb25zdCBXZWJET01TdHJpbmcmIHN0ciwgZmxvYXQgYSwg
aW50IGIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFdlYkRPTVRlc3RPYmo6OnZhcmlh
ZGljU3RyaW5nTWV0aG9kKGNvbnN0IFdlYkRPTVN0cmluZyYgaGVhZCwgY29uc3QgV2ViRE9NU3Ry
aW5nJiB0YWlsKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
bXBsKCktPnZhcmlhZGljU3RyaW5nTWV0aG9kKGhlYWQsIHRhaWwpOworfQorCit2b2lkIFdlYkRP
TVRlc3RPYmo6OnZhcmlhZGljRG91YmxlTWV0aG9kKGRvdWJsZSBoZWFkLCBkb3VibGUgdGFpbCkK
K3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT52YXJp
YWRpY0RvdWJsZU1ldGhvZChoZWFkLCB0YWlsKTsKK30KKwordm9pZCBXZWJET01UZXN0T2JqOjp2
YXJpYWRpY05vZGVNZXRob2QoY29uc3QgV2ViRE9NTm9kZSYgaGVhZCwgY29uc3QgV2ViRE9NTm9k
ZSYgdGFpbCkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1w
bCgpLT52YXJpYWRpY05vZGVNZXRob2QodG9XZWJDb3JlKGhlYWQpLCB0b1dlYkNvcmUodGFpbCkp
OworfQorCiBXZWJDb3JlOjpUZXN0T2JqKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdE9iaiYg
d3JhcHBlcikKIHsKICAgICByZXR1cm4gd3JhcHBlci5pbXBsKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCmlu
ZGV4IGQ1NWZmNzg2NTUxZWJkM2M3NGFkMWE5Njg4MzJkMjAyOWJjYWM1MjcuLjdiMTBmZDAyYmZj
ZTJkYzE3YmY0ZDg0YmIyOTdjMGU3MTllMjViZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCkBAIC0zNCw2
ICszNCw3IEBAIGNsYXNzIFdlYkRPTURpY3Rpb25hcnk7CiBjbGFzcyBXZWJET01Eb2N1bWVudDsK
IGNsYXNzIFdlYkRPTUV2ZW50TGlzdGVuZXI7CiBjbGFzcyBXZWJET01JREJLZXk7CitjbGFzcyBX
ZWJET01Ob2RlOwogY2xhc3MgV2ViRE9NU1ZHUG9pbnQ7CiBjbGFzcyBXZWJET01TdHJpbmc7CiBj
bGFzcyBXZWJET01UZXN0T2JqOwpAQCAtMTkwLDYgKzE5MSw5IEBAIHB1YmxpYzoKICAgICBXZWJE
T01TVkdQb2ludCBpbW11dGFibGVQb2ludEZ1bmN0aW9uKCk7CiAgICAgdm9pZCBiYW5hbmEoKTsK
ICAgICBXZWJET01ib29sIHN0cmljdEZ1bmN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyLCBm
bG9hdCBhLCBpbnQgYik7CisgICAgdm9pZCB2YXJpYWRpY1N0cmluZ01ldGhvZChjb25zdCBXZWJE
T01TdHJpbmcmIGhlYWQsIGNvbnN0IFdlYkRPTVN0cmluZyYgdGFpbCk7CisgICAgdm9pZCB2YXJp
YWRpY0RvdWJsZU1ldGhvZChkb3VibGUgaGVhZCwgZG91YmxlIHRhaWwpOworICAgIHZvaWQgdmFy
aWFkaWNOb2RlTWV0aG9kKGNvbnN0IFdlYkRPTU5vZGUmIGhlYWQsIGNvbnN0IFdlYkRPTU5vZGUm
IHRhaWwpOwogCiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaW1wbCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDEyMDRkZmI1MGRiZDNkYzlhNDIzY2ExZDVh
YWI1NzMxODM1ZWI5MzguLmE5MjQzNTIxZDY5NTNiNWVjY2E1NTgzODhkOTBjMjZmYjA2ZjUxMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC0zOCw2ICszOCw4IEBACiAj
aW5jbHVkZSAid2Via2l0L1dlYktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIndl
YmtpdC9XZWJLaXRET01JREJLZXkuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSURCS2V5
UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01Ob2RlLmgiCisjaW5jbHVkZSAi
d2Via2l0L1dlYktpdERPTU5vZGVQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERP
TVNWR1BvaW50LmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVNWR1BvaW50UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKQEAg
LTE0NTIsNiArMTQ1NCw0OSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3N0cmljdF9mdW5jdGlvbihX
ZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3RyLCBnZgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfc3RyaW5nX21l
dGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogaGVhZCwgY29uc3QgZ2No
YXIqIHRhaWwpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGhlYWQpOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwodGFpbCk7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkSGVhZCA9IFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOChoZWFkKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRUYWls
ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHRhaWwpOworICAgIGl0ZW0tPnZhcmlhZGljU3RyaW5n
TWV0aG9kKGNvbnZlcnRlZEhlYWQsIGNvbnZlcnRlZFRhaWwpOworfQorCit2b2lkCit3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX2RvdWJsZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgZ2RvdWJsZSBoZWFkLCBnZG91YmxlIHRhaWwpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChz
ZWxmKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2Vi
Q29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT52YXJp
YWRpY0RvdWJsZU1ldGhvZChoZWFkLCB0YWlsKTsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0
X29ial92YXJpYWRpY19ub2RlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRE
T01Ob2RlKiBoZWFkLCBXZWJLaXRET01Ob2RlKiB0YWlsKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoc2VsZik7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19yZXR1
cm5faWZfZmFpbChoZWFkKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHRhaWwpOworICAgIFdlYkNv
cmU6Ok5vZGUqIGNvbnZlcnRlZEhlYWQgPSAwOworICAgIGlmIChoZWFkKSB7CisgICAgICAgIGNv
bnZlcnRlZEhlYWQgPSBXZWJLaXQ6OmNvcmUoaGVhZCk7CisgICAgICAgIGdfcmV0dXJuX2lmX2Zh
aWwoY29udmVydGVkSGVhZCk7CisgICAgfQorICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZFRh
aWwgPSAwOworICAgIGlmICh0YWlsKSB7CisgICAgICAgIGNvbnZlcnRlZFRhaWwgPSBXZWJLaXQ6
OmNvcmUodGFpbCk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkVGFpbCk7Cisg
ICAgfQorICAgIGl0ZW0tPnZhcmlhZGljTm9kZU1ldGhvZChjb252ZXJ0ZWRIZWFkLCBjb252ZXJ0
ZWRUYWlsKTsKK30KKwogZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9s
b25nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RPYmouaAppbmRleCAzOTVmYTc3YTY5MTQ0ZDIwODZkZWI1NDMyYWM2MDliMmU0Y2NkOTY2Li4w
YWYyOTc1ZDU1MjI3MTJlOGViMDdkMTQ2ZGMwNjAyNTYyOTFkMDhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9iai5oCkBAIC00ODYsNiArNDg2LDQyIEBAIFdFQktJVF9BUEkgV2ViS2l0RE9N
Ym9vbCoKIHdlYmtpdF9kb21fdGVzdF9vYmpfc3RyaWN0X2Z1bmN0aW9uKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBzdHIsIGdmbG9hdCBhLCBnbG9uZyBiLCBHRXJyb3IqKiBl
cnJvcik7CiAKIC8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19zdHJpbmdfbWV0
aG9kOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBoZWFkOiBBICNnY2hhcgor
ICogQHRhaWw6IEEgI2djaGFyCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19zdHJpbmdfbWV0aG9kKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBoZWFkLCBjb25zdCBnY2hhciogdGFpbCk7CisK
Ky8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19kb3VibGVfbWV0aG9kOgorICog
QHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBoZWFkOiBBICNnZG91YmxlCisgKiBAdGFp
bDogQSAjZ2RvdWJsZQorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZChXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBnZG91YmxlIGhlYWQsIGdkb3VibGUgdGFpbCk7CisKKy8qKgorICogd2Via2l0
X2RvbV90ZXN0X29ial92YXJpYWRpY19ub2RlX21ldGhvZDoKKyAqIEBzZWxmOiBBICNXZWJLaXRE
T01UZXN0T2JqCisgKiBAaGVhZDogQSAjV2ViS2l0RE9NTm9kZQorICogQHRhaWw6IEEgI1dlYktp
dERPTU5vZGUKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX25vZGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYsIFdlYktpdERPTU5vZGUqIGhlYWQsIFdlYktpdERPTU5vZGUqIHRhaWwpOworCisvKioKICAq
IHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9sb25nX2F0dHI6CiAgKiBAc2VsZjog
QSAjV2ViS2l0RE9NVGVzdE9iagogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZjQ4YTljODMzNzBmNTM0Y2Y1
MDhhYTNjZmVjYWUyNTk3NjY3ZWM2Ny4uZTI0MjEyZmI1ZTdhYjQxMGQ0OGEzYTBiZmRlNGNmM2Zl
YjZjYThjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0RvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNGbG9hdDMy
QXJyYXkuaCIKKyNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU1NWR0RvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiSlNTVkdQb2ludC5oIgogI2luY2x1ZGUgIkpTU2NyaXB0UHJvZmlsZS5oIgpA
QCAtMzIxLDYgKzMyMiw5IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQ
cm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIiwg
RG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9u
KSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAib3JhbmdlIiwgRG9udERlbGV0
ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5z
aWMgfSwKICAgICB7ICJzdHJpY3RGdW5jdGlvbiIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9u
LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24pLCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKKyAg
ICB7ICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMgfSwK
KyAgICB7ICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9u
LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMg
fSwKKyAgICB7ICJ2YXJpYWRpY05vZGVNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlv
biwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCksIChpbnRwdHJfdCkyLCBOb0ludHJpbnNpYyB9
LAogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIApAQCAtMjYwNyw2ICsyNjEx
LDY5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TdHJpY3RGdW5jdGlvbihFeGVjU3RhdGUqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9iaiog
aW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBjb25zdCBT
dHJpbmcmIGhlYWQoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gdGFpbCA9IHRvTmF0aXZl
QXJndW1lbnRzPFN0cmluZz4oZXhlYywgMSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlt
cGwtPnZhcmlhZGljU3RyaW5nTWV0aG9kKGhlYWQsIHRhaWwpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVl
KCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsK
KyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OworICAgIGRvdWJsZSBoZWFkKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkudG9OdW1iZXIoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBWZWN0b3I8ZG91YmxlPiB0YWlsID0gdG9OYXRpdmVBcmd1bWVudHM8ZG91YmxlPihleGVjLCAx
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaW1wbC0+dmFyaWFkaWNEb3VibGVNZXRob2Qo
aGVhZCwgdGFpbCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZhcmlhZGljTm9kZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5o
ZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+
KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGlj
X2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIE5vZGUqIGhlYWQodG9Ob2RlKE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgVmVjdG9yPE5vZGUqPiB0YWlsOworICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50KGkpLmluaGVyaXRzKCZKU05vZGU6OnNfaW5mbykpCisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGFpbC5hcHBlbmQo
dG9Ob2RlKGV4ZWMtPmFyZ3VtZW50KGkpKSk7CisgICAgfQorICAgIGltcGwtPnZhcmlhZGljTm9k
ZU1ldGhvZChoZWFkLCB0YWlsKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworfQorCiB2b2lkIEpTVGVzdE9iajo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTVGVzdE9iaiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCAxMjMyNzI0MDUyYWRmMjBlYjhhNjkw
NmEwMjExOTUzNTNkMWExMWNmLi41MjAyMTE1MDdiMWY4MGJiMGNiZTY4OTlmOTU1NmUzNWViZjkx
ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5oCkBAIC0yMTUsNiArMjE1LDkgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24K
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZShK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljU3RyaW5nTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJs
ZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEpTQzo6RXhl
Y1N0YXRlKik7CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25s
eUxvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmgKaW5kZXggNmE5MDk5MTFjYzhiYjBhYzAzMWM3MDEyOWE0MTkxNjJkNjVl
ZWNhZS4uZWRjNDk0MDkyZWFkMmRkM2QyZWZjMWI5MWI3ZTcwMzY1YTFmODhiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmouaApAQCAtMzEsNiArMzEsNyBAQAogQGNsYXNzIERPTURpY3Rpb25hcnk7CiBAY2xhc3MgRE9N
RG9jdW1lbnQ7CiBAY2xhc3MgRE9NSURCS2V5OworQGNsYXNzIERPTU5vZGU7CiBAY2xhc3MgRE9N
U1ZHRG9jdW1lbnQ7CiBAY2xhc3MgRE9NU1ZHUG9pbnQ7CiBAY2xhc3MgRE9NVGVzdE9iajsKQEAg
LTE3Myw2ICsxNzQsOSBAQCBlbnVtIHsKIC0gKERPTVNWR1BvaW50ICopaW1tdXRhYmxlUG9pbnRG
dW5jdGlvbjsKIC0gKHZvaWQpb3JhbmdlOwogLSAoRE9NYm9vbCAqKXN0cmljdEZ1bmN0aW9uOihO
U1N0cmluZyAqKXN0ciBhOihmbG9hdClhIGI6KGludCliOworLSAodm9pZCl2YXJpYWRpY1N0cmlu
Z01ldGhvZDooTlNTdHJpbmcgKiloZWFkIHRhaWw6KE5TU3RyaW5nICopdGFpbDsKKy0gKHZvaWQp
dmFyaWFkaWNEb3VibGVNZXRob2Q6KGRvdWJsZSloZWFkIHRhaWw6KGRvdWJsZSl0YWlsOworLSAo
dm9pZCl2YXJpYWRpY05vZGVNZXRob2Q6KERPTU5vZGUgKiloZWFkIHRhaWw6KERPTU5vZGUgKil0
YWlsOwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCmluZGV4IDhiMmJjZjAwYjFmOTY0MTNj
OTBjOTA5MDBkNTBmODhjOGVhZDZkNjIuLmVkNDAxYTQ0ZTgzMGVlMzY0Nzg5YTE2ZjZjNGQ0NTZj
YjA0ZjgzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCAiSURC
S2V5LmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbXBvcnQgIktVUkwu
aCIKKyNpbXBvcnQgIk5vZGUuaCIKICNpbXBvcnQgIk9iakNFdmVudExpc3RlbmVyLmgiCiAjaW1w
b3J0ICJTVkdEb2N1bWVudC5oIgogI2ltcG9ydCAiU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgi
CkBAIC0xMDU2LDYgKzEwNTcsMjQgQEAgLSAoRE9NYm9vbCAqKXN0cmljdEZ1bmN0aW9uOihOU1N0
cmluZyAqKXN0ciBhOihmbG9hdClhIGI6KGludCliCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
LSAodm9pZCl2YXJpYWRpY1N0cmluZ01ldGhvZDooTlNTdHJpbmcgKiloZWFkIHRhaWw6KE5TU3Ry
aW5nICopdGFpbAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBJTVBMLT52YXJpYWRpY1N0cmluZ01ldGhvZChoZWFkLCB0YWlsKTsKK30KKworLSAodm9p
ZCl2YXJpYWRpY0RvdWJsZU1ldGhvZDooZG91YmxlKWhlYWQgdGFpbDooZG91YmxlKXRhaWwKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+dmFy
aWFkaWNEb3VibGVNZXRob2QoaGVhZCwgdGFpbCk7Cit9CisKKy0gKHZvaWQpdmFyaWFkaWNOb2Rl
TWV0aG9kOihET01Ob2RlICopaGVhZCB0YWlsOihET01Ob2RlICopdGFpbAoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT52YXJpYWRpY05vZGVN
ZXRob2QoY29yZShoZWFkKSwgY29yZSh0YWlsKSk7Cit9CisKIEBlbmQKIAogV2ViQ29yZTo6VGVz
dE9iaiogY29yZShET01UZXN0T2JqICp3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IGYyZDFmZTgxMGQxYmFlZDE3NDU2
YzdiMTQwMWE5Nzg2NzFiZDNmYzMuLjhhOGZmYTZlMjY1ZmRmNGNjMTg2N2I4ZGY3ZjZlODdmMWZj
MWI4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwKQEAgLTI2Myw1ICsyNjMsOSBAQCBtb2R1bGUgdGVzdCB7CiAgICAgICAgIFtSZWZs
ZWN0PUNPTlNUX0lNUExdIGNvbnN0IHVuc2lnbmVkIHNob3J0IENPTlNUX0pBVkFTQ1JJUFQgPSAx
NTsKIAogICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlXSBsb25nIHJlcGxhY2VhYmxlQXR0
cmlidXRlOworCisgICAgICAgIHZvaWQgdmFyaWFkaWNTdHJpbmdNZXRob2QoaW4gRE9NU3RyaW5n
IGhlYWQsIGluIERPTVN0cmluZy4uLiB0YWlsKTsKKyAgICAgICAgdm9pZCB2YXJpYWRpY0RvdWJs
ZU1ldGhvZChpbiBkb3VibGUgaGVhZCwgaW4gZG91YmxlLi4uIHRhaWwpOworICAgICAgICB2b2lk
IHZhcmlhZGljTm9kZU1ldGhvZChpbiBOb2RlIGhlYWQsIGluIE5vZGUuLi4gdGFpbCk7CiAgICAg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKaW5kZXggNTAyNDI4YTcxMDBjNWY3MTY2M2NmNWM2OTE1MTY5ZDk3MjIx
NTUzNS4uN2U4ZmQ2YmNkZTliNmZiYjA2YzNkNGNkNDJiYmFmNDdmOTZjNGE1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRl
ICJWOERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhGbG9hdDMyQXJyYXkuaCIKKyNpbmNsdWRlICJW
OE5vZGUuaCIKICNpbmNsdWRlICJWOFNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhTVkdQb2lu
dC5oIgogI2luY2x1ZGUgIlY4U2NyaXB0UHJvZmlsZS5oIgpAQCAtMTkwNSw2ICsxOTA2LDQ3IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaWN0RnVuY3Rpb25DYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJp
YWRpY1N0cmluZ01ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7Cisg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai52YXJpYWRpY1N0cmluZ01ldGhvZCIpOworICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VY
Q0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBoZWFkLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soVmVj
dG9yPFN0cmluZz4sIHRhaWwsIHRvTmF0aXZlQXJndW1lbnRzPFN0cmluZz4oYXJncywgMSkpOwor
ICAgIGltcC0+dmFyaWFkaWNTdHJpbmdNZXRob2QoaGVhZCwgdGFpbCk7CisgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFyaWFkaWNE
b3VibGVNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoudmFyaWFkaWNEb3VibGVNZXRob2QiKTsKKyAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhkb3VibGUsIGhlYWQs
IHN0YXRpY19jYXN0PGRvdWJsZT4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKS0+TnVtYmVyVmFsdWUoKSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhW
ZWN0b3I8ZG91YmxlPiwgdGFpbCwgdG9OYXRpdmVBcmd1bWVudHM8ZG91YmxlPihhcmdzLCAxKSk7
CisgICAgaW1wLT52YXJpYWRpY0RvdWJsZU1ldGhvZChoZWFkLCB0YWlsKTsKKyAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJpYWRp
Y05vZGVNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoudmFyaWFkaWNOb2RlTWV0aG9kIik7CisgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soTm9kZSosIGhlYWQsIFY4
Tm9kZTo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSkpIDogMCk7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHRhaWw7CisgICAgZm9yIChpbnQg
aSA9IDE7IGkgPCBhcmdzLkxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFWOE5vZGU6Okhh
c0luc3RhbmNlKGFyZ3NbaV0pKQorICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKDAs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgdGFpbC5hcHBlbmQoVjhOb2RlOjp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbaV0pKSk7CisgICAgfQorICAgIGlt
cC0+dmFyaWFkaWNOb2RlTWV0aG9kKGhlYWQsIHRhaWwpOworICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0T2JqVjhJbnRlcm5hbAogCiBzdGF0aWMgY29u
c3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdE9iakF0dHJzW10g
PSB7CkBAIC0yMDg2LDYgKzIxMjgsOCBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9u
OjpCYXRjaGVkQ2FsbGJhY2sgVjhUZXN0T2JqQ2FsbGJhY2tzW10gPSB7CiAgICAgeyJpbW11dGFi
bGVQb2ludEZ1bmN0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50RnVuY3Rp
b25DYWxsYmFja30sCiAgICAgeyJvcmFuZ2UiLCBUZXN0T2JqVjhJbnRlcm5hbDo6b3JhbmdlQ2Fs
bGJhY2t9LAogICAgIHsic3RyaWN0RnVuY3Rpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0
RnVuY3Rpb25DYWxsYmFja30sCisgICAgeyJ2YXJpYWRpY1N0cmluZ01ldGhvZCIsIFRlc3RPYmpW
OEludGVybmFsOjp2YXJpYWRpY1N0cmluZ01ldGhvZENhbGxiYWNrfSwKKyAgICB7InZhcmlhZGlj
RG91YmxlTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljRG91YmxlTWV0aG9kQ2Fs
bGJhY2t9LAogfTsKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENv
bnN0YW50IFY4VGVzdE9iakNvbnN0c1tdID0gewpAQCAtMjIzNyw2ICsyMjgxLDEyIEBAIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2Jq
VGVtcGxhdGUodjg6OlBlcnNpCiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Y29udmVydDVBcmd2W2NvbnZlcnQ1QXJnY10gPSB7IFY4ZTo6R2V0UmF3VGVtcGxhdGUoKSB9Owog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDVTaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgY29udmVydDVBcmdjLCBjb252ZXJ0NUFyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0NSIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NUNhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCBjb252ZXJ0NVNpZ25hdHVyZSkpOworCisgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAndmFy
aWFkaWNOb2RlTWV0aG9kJworICAgIGNvbnN0IGludCB2YXJpYWRpY05vZGVNZXRob2RBcmdjID0g
MjsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2YXJpYWRpY05vZGVNZXRo
b2RBcmd2W3ZhcmlhZGljTm9kZU1ldGhvZEFyZ2NdID0geyBWOE5vZGU6OkdldFJhd1RlbXBsYXRl
KCksIFY4Tm9kZTo6R2V0UmF3VGVtcGxhdGUoKSB9OworICAgIHY4OjpIYW5kbGU8djg6OlNpZ25h
dHVyZT4gdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRl
c2MsIHZhcmlhZGljTm9kZU1ldGhvZEFyZ2MsIHZhcmlhZGljTm9kZU1ldGhvZEFyZ3YpOworICAg
IHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2YXJpYWRpY05vZGVNZXRob2QiKSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6dmFyaWFkaWNOb2Rl
TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHZhcmlhZGljTm9kZU1ldGhvZFNpZ25hdHVy
ZSkpOwogICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVz
YywgcHJvdG8sIFY4VGVzdE9iakNvbnN0cywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RPYmpDb25z
dHMpKTsKIAogICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCAwYzllZTRmNGNhMThhMGM4MGM2ZTJiMzVhMjc2NzE4
NDQ3MGYyZWJmLi41NTZmNjg2NjQyNmQyN2RlNjZjNmQ3MTg3YmFjMTMyOGUxY2EzZDUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMTgyLDI4ICsxODIsMjkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0cnVjdCBOYXRpdmVW
YWx1ZVRyYWl0czxTdHJpbmc+IHsKLSAgICAgICAgc3RhdGljIGlubGluZSBTdHJpbmcgYXJyYXlO
YXRpdmVWYWx1ZShjb25zdCB2ODo6TG9jYWw8djg6OkFycmF5PiYgYXJyYXksIHNpemVfdCBpKQor
ICAgICAgICBzdGF0aWMgaW5saW5lIFN0cmluZyBuYXRpdmVWYWx1ZShjb25zdCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4mIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdG9XZWJD
b3JlU3RyaW5nKGFycmF5LT5HZXQoaSkpOworICAgICAgICAgICAgcmV0dXJuIHRvV2ViQ29yZVN0
cmluZyh2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0
cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxmbG9hdD4gewotICAgICAgICBzdGF0aWMgaW5saW5lIGZs
b2F0IGFycmF5TmF0aXZlVmFsdWUoY29uc3Qgdjg6OkxvY2FsPHY4OjpBcnJheT4mIGFycmF5LCBz
aXplX3QgaSkKKyAgICAgICAgc3RhdGljIGlubGluZSBmbG9hdCBuYXRpdmVWYWx1ZShjb25zdCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFycmF5LT5HZXQodjhJbnRlZ2VyKGkpKS0+TnVtYmVyVmFs
dWUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlLT5OdW1i
ZXJWYWx1ZSgpKTsKICAgICAgICAgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+CiAgICAgc3Ry
dWN0IE5hdGl2ZVZhbHVlVHJhaXRzPGRvdWJsZT4gewotICAgICAgICBzdGF0aWMgaW5saW5lIGRv
dWJsZSBhcnJheU5hdGl2ZVZhbHVlKGNvbnN0IHY4OjpMb2NhbDx2ODo6QXJyYXk+JiBhcnJheSwg
c2l6ZV90IGkpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgZG91YmxlIG5hdGl2ZVZhbHVlKGNvbnN0
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGFycmF5LT5HZXQodjhJbnRlZ2VyKGkpKS0+TnVtYmVy
VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZS0+
TnVtYmVyVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9OwogCisKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVD4KICAgICBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmFsdWUpCiAgICAgewpAQCAtMjE1LDEyICsyMTYsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlKHY4OjpMb2NhbDx2ODo6VmFsdWU+
OjpOZXcodmFsdWUpKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6
TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2OFZhbHVlKTsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IGFycmF5LT5MZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChUcmFpdHNUeXBlOjphcnJheU5hdGl2
ZVZhbHVlKGFycmF5LCBpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVHJhaXRzVHlwZTo6
bmF0aXZlVmFsdWUoYXJyYXktPkdldChpKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBUPgorICAgIFZlY3RvcjxUPiB0b05hdGl2ZUFyZ3Vt
ZW50cyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBzaXplX3Qgc3RhcnRJbmRleCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChzdGFydEluZGV4IDw9IGFyZ3MuTGVuZ3RoKCkpOworICAgICAgICBW
ZWN0b3I8VD4gcmVzdWx0OworICAgICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPFQ+IFRy
YWl0c1R5cGU7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBhcmdzLkxlbmd0aCgpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShhcmdzW2ldKSk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisKICAgICAvLyBWYWxpZGF0ZXMgdGhhdCB0aGUg
cGFzc2VkIG9iamVjdCBpcyBhIHNlcXVlbmNlIHR5cGUgcGVyIFdlYklETCBzcGVjCiAgICAgLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1XZWJJREwtMjAxMjAyMDcvI2VzLXNlcXVlbmNl
CiAgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4U2VxdWVuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB1aW50MzJfdCYgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9DbGFzc0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DbGFzc0xp
c3QuY3BwCmluZGV4IGEzMjVhMTIyNmFhOWE0NWI0NTU0Y2JiOWVlZTcwMjcyODg0YWQwYzcuLjVm
ZjNiZGFmNjAyZmM0N2ZiNTMyNmJhZDkzYzc2M2E2YzJiNTVkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ2xhc3NMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Ns
YXNzTGlzdC5jcHAKQEAgLTI1LDIxICsyNSwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNsYXNzTGlzdC5oIgogCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJTcGFj
ZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KIENsYXNz
TGlzdDo6Q2xhc3NMaXN0KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVu
dCkKIHsKICAgICBpZiAobV9lbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKLSAg
ICAgICAgbV9jbGFzc05hbWVzRm9yUXVpcmtzTW9kZS5zZXQobV9lbGVtZW50LT5nZXRBdHRyaWJ1
dGUoY2xhc3NBdHRyKSwgZmFsc2UpOworICAgICAgICBtX2NsYXNzTmFtZXNGb3JRdWlya3NNb2Rl
LnNldCh2YWx1ZSgpLCBmYWxzZSk7CiB9CiAKIHZvaWQgQ2xhc3NMaXN0OjpyZWYoKQpAQCAtNjQs
NzEgKzYwLDExIEBAIGNvbnN0IEF0b21pY1N0cmluZyBDbGFzc0xpc3Q6Oml0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIGNsYXNzTmFtZXMoKVtpbmRleF07CiB9CiAKLWJvb2wg
Q2xhc3NMaXN0Ojpjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBFeGNlcHRpb25D
b2RlJiBlYykgY29uc3QKLXsKLSAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb250YWluc0ludGVybmFsKHRva2VuKTsK
LX0KLQogYm9vbCBDbGFzc0xpc3Q6OmNvbnRhaW5zSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5n
JiB0b2tlbikgY29uc3QKIHsKICAgICByZXR1cm4gbV9lbGVtZW50LT5oYXNDbGFzcygpICYmIGNs
YXNzTmFtZXMoKS5jb250YWlucyh0b2tlbik7CiB9CiAKLXZvaWQgQ2xhc3NMaXN0OjphZGQoY29u
c3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCF2
YWxpZGF0ZVRva2VuKHRva2VuLCBlYykpCi0gICAgICAgIHJldHVybjsKLSAgICBhZGRJbnRlcm5h
bCh0b2tlbik7Ci19Ci0KLXZvaWQgQ2xhc3NMaXN0OjphZGRJbnRlcm5hbChjb25zdCBBdG9taWNT
dHJpbmcmIHRva2VuKQotewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkQ2xhc3NOYW1lKG1f
ZWxlbWVudC0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikpOwotICAgIGlmIChvbGRDbGFzc05hbWUu
aXNFbXB0eSgpKQotICAgICAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIHRv
a2VuKTsKLSAgICBlbHNlIGlmICghY29udGFpbnNJbnRlcm5hbCh0b2tlbikpIHsKLSAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc05hbWUoYWRkVG9rZW4ob2xkQ2xhc3NOYW1lLCB0
b2tlbikpOwotICAgICAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIG5ld0Ns
YXNzTmFtZSk7Ci0gICAgfQotfQotCi12b2lkIENsYXNzTGlzdDo6cmVtb3ZlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghdmFsaWRhdGVU
b2tlbih0b2tlbiwgZWMpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVtb3ZlSW50ZXJuYWwodG9r
ZW4pOwotfQotCi12b2lkIENsYXNzTGlzdDo6cmVtb3ZlSW50ZXJuYWwoY29uc3QgQXRvbWljU3Ry
aW5nJiB0b2tlbikKLXsKLSAgICAvLyBDaGVjayB1c2luZyBjb250YWlucyBmaXJzdCBzaW5jZSBp
dCB1c2VzIEF0b21pY1N0cmluZyBjb21wYXJpc29ucyBpbnN0ZWFkCi0gICAgLy8gb2YgY2hhcmFj
dGVyIGJ5IGNoYXJhY3RlciB0ZXN0aW5nLgotICAgIGlmICghY29udGFpbnNJbnRlcm5hbCh0b2tl
bikpCi0gICAgICAgIHJldHVybjsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzTmFt
ZShyZW1vdmVUb2tlbihtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpLCB0b2tlbikp
OwotICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgbmV3Q2xhc3NOYW1lKTsK
LX0KLQotYm9vbCBDbGFzc0xpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBF
eGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGNvbnRhaW5zSW50ZXJuYWwodG9rZW4p
KSB7Ci0gICAgICAgIHJlbW92ZUludGVybmFsKHRva2VuKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICBhZGRJbnRlcm5hbCh0b2tlbik7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LVN0cmluZyBDbGFzc0xpc3Q6OnRvU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbGVt
ZW50LT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKTsKLX0KLQogdm9pZCBDbGFzc0xpc3Q6OnJlc2V0
KGNvbnN0IFN0cmluZyYgbmV3Q2xhc3NOYW1lKQogewogICAgIGlmIChtX2VsZW1lbnQtPmRvY3Vt
ZW50KCktPmluUXVpcmtzTW9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9D
bGFzc0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2xhc3NMaXN0LmgKaW5kZXggOTkyZmFk
NDc0YzYzZDc1ZjE4YjllZWZiNTY0ODY2MGY2YjM4MTBlZC4uNzY0ZWJmNTJlODFhYTljMGJmODVl
YWZjNGUwYzc1N2JkNmNmZTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DbGFz
c0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NsYXNzTGlzdC5oCkBAIC0yNiwxMSAr
MjYsMTcgQEAKICNkZWZpbmUgQ2xhc3NMaXN0X2gKIAogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOworCiBjbGFzcyBFbGVtZW50OwogCiB0eXBlZGVmIGludCBFeGNlcHRp
b25Db2RlOwpAQCAtNDIsMzAgKzQ4LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDbGFzc0xpc3QoZWxlbWVudCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBy
ZWYoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb250YWlu
cyhjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZChjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdmlydHVhbCBib29sIHRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCBFbGVtZW50KiBlbGVtZW50KCkgeyByZXR1cm4gbV9lbGVtZW50OyB9CisgICAgdmlydHVhbCBF
bGVtZW50KiBlbGVtZW50KCkgT1ZFUlJJREUgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAKICAgICB2
b2lkIHJlc2V0KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIENsYXNzTGlzdChFbGVt
ZW50Kik7CiAKLSAgICB2b2lkIGFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAg
IGJvb2wgY29udGFpbnNJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKLSAgICB2
b2lkIHJlbW92ZUludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZpcnR1YWwgYm9v
bCBjb250YWluc0ludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lcygpIGNvbnN0OwogCisgICAg
dmlydHVhbCBBdG9taWNTdHJpbmcgdmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Vs
ZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSBPVkVSUklERSB7IG1fZWxlbWVudC0+
c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgdmFsdWUpOyB9CisKICAgICBFbGVtZW50KiBtX2VsZW1l
bnQ7CiAgICAgU3BhY2VTcGxpdFN0cmluZyBtX2NsYXNzTmFtZXNGb3JRdWlya3NNb2RlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5jcHAKaW5kZXggM2E4
NmU5YzAwMDI0NDI5OGQyNGFkY2MzZDEwNWMxZWQ0MjQ3NDlmMC4uNGVmMGY3ZjUxYTUwMDI4NTgy
YjgwNGQ1MzdhM2FjYjllMjQ5NWVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01TZXR0YWJsZVRva2VuTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0
YWJsZVRva2VuTGlzdC5jcHAKQEAgLTQ0LDU1ICs0NCw0NiBAQCBjb25zdCBBdG9taWNTdHJpbmcg
RE9NU2V0dGFibGVUb2tlbkxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdG9rZW5zW2luZGV4XTsKIH0KIAotYm9vbCBET01TZXR0YWJsZVRva2VuTGlzdDo6Y29u
dGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
Citib29sIERPTVNldHRhYmxlVG9rZW5MaXN0Ojpjb250YWluc0ludGVybmFsKGNvbnN0IEF0b21p
Y1N0cmluZyYgdG9rZW4pIGNvbnN0CiB7Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBl
YykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gbV90b2tlbnMuY29udGFpbnMo
dG9rZW4pOwogfQogCi12b2lkIERPTVNldHRhYmxlVG9rZW5MaXN0OjphZGQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERPTVNldHRhYmxlVG9rZW5M
aXN0OjphZGQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHRva2VucywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBlYykgfHwgbV90b2tlbnMuY29udGFp
bnModG9rZW4pKQotICAgICAgICByZXR1cm47Ci0gICAgYWRkSW50ZXJuYWwodG9rZW4pOworICAg
IERPTVRva2VuTGlzdDo6YWRkKHRva2VucywgZWMpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fdG9rZW5zLmlzTnVsbCgp
KQorICAgICAgICAgICAgbV90b2tlbnMuc2V0KHRva2Vuc1tpXSwgZmFsc2UpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX3Rva2Vucy5hZGQodG9rZW5zW2ldKTsKKyAgICB9CiB9CiAKIHZv
aWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYg
dG9rZW4pCiB7Ci0gICAgbV92YWx1ZSA9IGFkZFRva2VuKG1fdmFsdWUsIHRva2VuKTsKKyAgICBE
T01Ub2tlbkxpc3Q6OmFkZEludGVybmFsKHRva2VuKTsKICAgICBpZiAobV90b2tlbnMuaXNOdWxs
KCkpCiAgICAgICAgIG1fdG9rZW5zLnNldCh0b2tlbiwgZmFsc2UpOwogICAgIGVsc2UKICAgICAg
ICAgbV90b2tlbnMuYWRkKHRva2VuKTsKIH0KIAotdm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6
cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBET01TZXR0YWJsZVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tl
bnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbiwg
ZWMpIHx8ICFtX3Rva2Vucy5jb250YWlucyh0b2tlbikpCi0gICAgICAgIHJldHVybjsKLSAgICBy
ZW1vdmVJbnRlcm5hbCh0b2tlbik7CisgICAgRE9NVG9rZW5MaXN0OjpyZW1vdmUodG9rZW5zLCBl
Yyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIG1fdG9rZW5zLnJlbW92ZSh0b2tlbnNbaV0pOwogfQogCiB2b2lkIERPTVNldHRhYmxlVG9r
ZW5MaXN0OjpyZW1vdmVJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQogewotICAg
IG1fdmFsdWUgPSByZW1vdmVUb2tlbihtX3ZhbHVlLCB0b2tlbik7CisgICAgRE9NVG9rZW5MaXN0
OjpyZW1vdmVJbnRlcm5hbCh0b2tlbik7CiAgICAgbV90b2tlbnMucmVtb3ZlKHRva2VuKTsKIH0K
IAotYm9vbCBET01TZXR0YWJsZVRva2VuTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYg
dG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tl
biwgZWMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fdG9rZW5zLmNvbnRhaW5z
KHRva2VuKSkgewotICAgICAgICByZW1vdmVJbnRlcm5hbCh0b2tlbik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgYWRkSW50ZXJuYWwodG9rZW4pOwotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkIERPTVNldHRhYmxlVG9rZW5MaXN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcm
IHZhbHVlKQordm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6c2V0VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBtX3ZhbHVlID0gdmFsdWU7CiAgICAgbV90b2tlbnMuc2V0
KHZhbHVlLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRh
YmxlVG9rZW5MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0
LmgKaW5kZXggMGIyM2M2YWIyMjlmYTY1NWNlMzg4ODE5NGQ4OWUzN2NiY2U5OTNlMS4uZjMzOGRj
MzJiZjY5YmMxNzQ3MTQ4ZGU0NjUyNDVhYTE0MWUxYjE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaApAQCAtNDQsMjggKzQ0LDI4IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgdmlydHVhbCB+RE9NU2V0dGFibGVUb2tlbkxpc3QoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCByZWYoKSB7IFJlZkNvdW50ZWQ8RE9NU2V0dGFibGVUb2tlbkxpc3Q+OjpyZWYoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIHsgUmVmQ291bnRlZDxET01TZXR0YWJsZVRva2VuTGlz
dD46OmRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgT1ZFUlJJREUgeyBSZWZDb3Vu
dGVkPERPTVNldHRhYmxlVG9rZW5MaXN0Pjo6cmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWYoKSBPVkVSUklERSB7IFJlZkNvdW50ZWQ8RE9NU2V0dGFibGVUb2tlbkxpc3Q+OjpkZXJlZigp
OyB9CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9r
ZW5zLnNpemUoKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nIGl0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBBdG9taWNT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkZChjb25z
dCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCBib29s
IHRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVh
bCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9CisgICAgdmlydHVh
bCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Rva2Vucy5zaXpl
KCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBhZGQoY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92
ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKworICAg
IHZpcnR1YWwgQXRvbWljU3RyaW5nIHZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92
YWx1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKSBP
VkVSUklERTsKIAotICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
ICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiB0b2tlbnMoKSBjb25zdCB7IHJldHVybiBtX3Rv
a2VuczsgfQotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CiAg
ICAgRE9NU2V0dGFibGVUb2tlbkxpc3QoKTsKIAotICAgIHZvaWQgcmVtb3ZlSW50ZXJuYWwoY29u
c3QgQXRvbWljU3RyaW5nJik7Ci0gICAgdm9pZCBhZGRJbnRlcm5hbChjb25zdCBBdG9taWNTdHJp
bmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zSW50ZXJuYWwoY29uc3QgQXRvbWlj
U3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUludGVybmFs
KGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogCi0gICAgU3RyaW5nIG1fdmFsdWU7Cisg
ICAgQXRvbWljU3RyaW5nIG1fdmFsdWU7CiAgICAgU3BhY2VTcGxpdFN0cmluZyBtX3Rva2VuczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAppbmRleCA3MTMyYjExNjlkZDkz
MWYyZmZkMGExZDg0MzMzZWNlMmZiZWExNDI0Li44NjE3ZjlkZjkzZDJiZGQ2Mjk5MmRlNTM4Mzc2
ZjBlMjIzMDRmOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCkBAIC00OSwy
MyArNDksMTM4IEBAIGJvb2wgRE9NVG9rZW5MaXN0Ojp2YWxpZGF0ZVRva2VuKGNvbnN0IEF0b21p
Y1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiB0cnVlOwogfQog
Citib29sIERPTVRva2VuTGlzdDo6dmFsaWRhdGVUb2tlbnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHRva2VucywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB0b2tlbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2Vu
c1tpXSwgZWMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIERPTVRva2VuTGlzdDo6Y29udGFpbnMoY29uc3QgQXRvbWljU3Ry
aW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCF2YWxpZGF0
ZVRva2VuKHRva2VuLCBlYykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY29u
dGFpbnNJbnRlcm5hbCh0b2tlbik7Cit9CisKK3ZvaWQgRE9NVG9rZW5MaXN0OjphZGQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgVmVjdG9yPFN0
cmluZz4gdG9rZW5zOworICAgIHRva2Vucy5hcHBlbmQodG9rZW4pOworICAgIGFkZCh0b2tlbnMs
IGVjKTsKK30KKwordm9pZCBET01Ub2tlbkxpc3Q6OmFkZChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dG9rZW5zLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBmaWx0ZXJl
ZFRva2VuczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2Vucy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW5zW2ldLCBlYykpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmICghY29udGFpbnNJbnRlcm5hbCh0b2tlbnNbaV0pKQorICAg
ICAgICAgICAgZmlsdGVyZWRUb2tlbnMuYXBwZW5kKHRva2Vuc1tpXSk7CisgICAgfQorCisgICAg
aWYgKGZpbHRlcmVkVG9rZW5zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0
VmFsdWUoYWRkVG9rZW5zKHZhbHVlKCksIGZpbHRlcmVkVG9rZW5zKSk7Cit9CisKK3ZvaWQgRE9N
VG9rZW5MaXN0OjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zOworICAgIHRva2Vucy5hcHBlbmQo
dG9rZW4pOworICAgIHJlbW92ZSh0b2tlbnMsIGVjKTsKK30KKwordm9pZCBET01Ub2tlbkxpc3Q6
OnJlbW92ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBpZiAoIXZhbGlkYXRlVG9rZW5zKHRva2VucywgZWMpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBDaGVjayB1c2luZyBjb250YWluc0ludGVybmFsIGZpcnN0IHNpbmNlIGl0IGlz
IGEgbG90IGZhc3RlciB0aGFuIGdvaW5nCisgICAgLy8gdGhyb3VnaCB0aGUgc3RyaW5nIGNoYXJh
Y3RlciBieSBjaGFyYWN0ZXIuCisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdG9rZW5zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChjb250YWlu
c0ludGVybmFsKHRva2Vuc1tpXSkpIHsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGZvdW5kKQorICAgICAg
ICBzZXRWYWx1ZShyZW1vdmVUb2tlbnModmFsdWUoKSwgdG9rZW5zKSk7Cit9CisKK2Jvb2wgRE9N
VG9rZW5MaXN0Ojp0b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBlYykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChjb250YWluc0ludGVybmFsKHRva2VuKSkgeworICAgICAg
ICByZW1vdmVJbnRlcm5hbCh0b2tlbik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgYWRkSW50ZXJuYWwodG9rZW4pOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERPTVRv
a2VuTGlzdDo6YWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKK3sKKyAgICBp
ZiAoIWNvbnRhaW5zSW50ZXJuYWwodG9rZW4pKQorICAgICAgICBzZXRWYWx1ZShhZGRUb2tlbih2
YWx1ZSgpLCB0b2tlbikpOworfQorCit2b2lkIERPTVRva2VuTGlzdDo6cmVtb3ZlSW50ZXJuYWwo
Y29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKK3sKKyAgICAvLyBDaGVjayB1c2luZyBjb250YWlu
cyBmaXJzdCBzaW5jZSBpdCB1c2VzIEF0b21pY1N0cmluZyBjb21wYXJpc29ucyBpbnN0ZWFkCisg
ICAgLy8gb2YgY2hhcmFjdGVyIGJ5IGNoYXJhY3RlciB0ZXN0aW5nLgorICAgIGlmICghY29udGFp
bnNJbnRlcm5hbCh0b2tlbikpCisgICAgICAgIHJldHVybjsKKyAgICBzZXRWYWx1ZShyZW1vdmVU
b2tlbih2YWx1ZSgpLCB0b2tlbikpOworfQorCiBTdHJpbmcgRE9NVG9rZW5MaXN0OjphZGRUb2tl
bihjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0LCBjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQog
ewotICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0b2tlbjsKKyAgICBW
ZWN0b3I8U3RyaW5nPiB0b2tlbnM7CisgICAgdG9rZW5zLmFwcGVuZCh0b2tlbik7CisgICAgcmV0
dXJuIGFkZFRva2VucyhpbnB1dCwgdG9rZW5zKTsKK30KKworU3RyaW5nIERPTVRva2VuTGlzdDo6
YWRkVG9rZW5zKGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0b2tlbnMpCit7CisgICAgYm9vbCBuZWVkc1NwYWNlID0gZmFsc2U7CiAKICAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoaW5wdXQpOwotICAgIGlmICghaXNI
VE1MU3BhY2UoaW5wdXRbaW5wdXQubGVuZ3RoKCkgLSAxXSkpCi0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcgJyk7CisgICAgaWYgKCFpbnB1dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoaW5wdXQpOworICAgICAgICBuZWVkc1NwYWNlID0gIWlzSFRNTFNwYWNlKGlucHV0W2lu
cHV0Lmxlbmd0aCgpIC0gMV0pOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dG9rZW5zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChuZWVkc1NwYWNlKQorICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodG9rZW5zW2ld
KTsKKyAgICAgICAgbmVlZHNTcGFjZSA9IHRydWU7CisgICAgfQogCi0gICAgYnVpbGRlci5hcHBl
bmQodG9rZW4pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBE
T01Ub2tlbkxpc3Q6OnJlbW92ZVRva2VuKGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXQsIGNvbnN0
IEF0b21pY1N0cmluZyYgdG9rZW4pCiB7CisgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zOworICAg
IHRva2Vucy5hcHBlbmQodG9rZW4pOworICAgIHJldHVybiByZW1vdmVUb2tlbnMoaW5wdXQsIHRv
a2Vucyk7Cit9CisKK1N0cmluZyBET01Ub2tlbkxpc3Q6OnJlbW92ZVRva2Vucyhjb25zdCBBdG9t
aWNTdHJpbmcmIGlucHV0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zKQorewogICAgIC8v
IEFsZ29yaXRobSBkZWZpbmVkIGF0IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBw
cy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1vbi1taWNyb3N5bnRheGVzLmh0bWwjcmVtb3Zl
LWEtdG9rZW4tZnJvbS1hLXN0cmluZworICAgIC8vIE5ldyBzcGVjIGlzIGF0IGh0dHA6Ly9kb20u
c3BlYy53aGF0d2cub3JnLyNyZW1vdmUtYS10b2tlbi1mcm9tLWEtc3RyaW5nCiAKICAgICB1bnNp
Z25lZCBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwogICAgIFN0cmluZ0J1aWxkZXIgb3V0
cHV0OyAvLyAzCkBAIC04NSw3ICsyMDAsNyBAQCBTdHJpbmcgRE9NVG9rZW5MaXN0OjpyZW1vdmVU
b2tlbihjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0LCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAg
ICAgICAgICBzLmFwcGVuZChpbnB1dFtwb3NpdGlvbisrXSk7CiAKICAgICAgICAgLy8gU3RlcCA4
Ci0gICAgICAgIGlmIChzLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpID09IHRva2VuKSB7Cisg
ICAgICAgIGlmICh0b2tlbnMuY29udGFpbnMocy50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSkp
IHsKICAgICAgICAgICAgIC8vIFN0ZXAgOC4xCiAgICAgICAgICAgICB3aGlsZSAocG9zaXRpb24g
PCBpbnB1dExlbmd0aCAmJiBpc0hUTUxTcGFjZShpbnB1dFtwb3NpdGlvbl0pKQogICAgICAgICAg
ICAgICAgICsrcG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRv
a2VuTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAppbmRleCBmZDEx
MGI3ZmZkMDRmNjA5YzIwMzNlZDMyYTNiMjE2OTg4YWRkMzMxLi40YjI1ZGNlNWUzYzg5NzI0ZmE1
NTNiMGI3MTQ2N2U1MWE1NjMyYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVRva2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKQEAg
LTQ1LDE4ICs0NSwzMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyBpdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IEF0b21p
Y1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFk
ZChjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgdG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCA9IDA7CisKKyAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBib29sIHRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7CisKKyAgICBBdG9taWNTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgp
OyB9CiAKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1lbnQoKSB7IHJldHVybiAwOyB9CiAKIHBy
b3RlY3RlZDoKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyB2YWx1ZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJikgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIGFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZpcnR1
YWwgYm9vbCBjb250YWluc0ludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJik7CisK
ICAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZVRva2VuKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZVRva2Vucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBzdGF0aWMgU3RyaW5nIGFkZFRva2VuKGNv
bnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHN0YXRpYyBTdHJp
bmcgYWRkVG9rZW5zKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7
CiAgICAgc3RhdGljIFN0cmluZyByZW1vdmVUb2tlbihjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBBdG9taWNTdHJpbmcmKTsKKyAgICBzdGF0aWMgU3RyaW5nIHJlbW92ZVRva2Vucyhjb25zdCBB
dG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3Qu
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsCmluZGV4IGNmNTdlMWFl
ZWY5NmUyOTY3NTAwZWUxN2U1MGY0MmZkMDg5YzY3MmIuLjg1ZWYxMDkyYzcxYTExOTMyYWQwZTdh
NTZjYTQzYTU1NWFiZDA4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9r
ZW5MaXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwKQEAg
LTMxLDggKzMxLDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0Fz
PU51bGxdIERPTVN0cmluZyBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgICAgICBi
b29sZWFuIGNvbnRhaW5zKGluIERPTVN0cmluZyB0b2tlbikgcmFpc2VzKERPTUV4Y2VwdGlvbik7
Ci0gICAgICAgIHZvaWQgYWRkKGluIERPTVN0cmluZyB0b2tlbikgcmFpc2VzKERPTUV4Y2VwdGlv
bik7Ci0gICAgICAgIHZvaWQgcmVtb3ZlKGluIERPTVN0cmluZyB0b2tlbikgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIHZvaWQgYWRkKGluIERPTVN0cmluZy4uLiB0b2tlbnMpIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHJlbW92ZShpbiBET01TdHJpbmcuLi4gdG9r
ZW5zKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgYm9vbGVhbiB0b2dnbGUoaW4gRE9N
U3RyaW5nIHRva2VuKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogI2lmIGRlZmluZWQoTEFOR1VB
R0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk1NTA3ZTFjMzI5
MmQyOWMyNDI2MWY3NmZlNjk3MDhhNTlkMWJlYTUuLmNiMmNiODVlZDk0NDI2N2IzMTgzMDM3Yjhj
YjY3NTYwNDJjOGZjMjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0wOS0yNiAgRXJpayBB
cnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERPTTQ6IEFkZCBzdXBwb3J0
IGZvciByZXN0IHBhcmFtZXRlcnMgdG8gRE9NVG9rZW5MaXN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzMzNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciByZXN0IHBh
cmFtYXRlcnMgdG8gRE9NVG9rZW5MaXN0IGFkZCBhbmQgcmVtb3ZlLgorICAgICAgICBodHRwOi8v
ZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tdG9rZW5saXN0CisKKyAgICAgICAgVGhlIGNvZGUgZ2Vu
ZXJhdG9yIGhhcyBiZWVuIHVwZGF0ZWQgdG8gdW5kZXJzdGFuZCB2YXJpYWRpYyBtZXRob2RzLgor
ICAgICAgICBXaGVuIGEgbWV0aG9kIGhhcyBhIHJlc3QgcGFyYW1ldGVyIHRoZSByZW1haW5pbmcg
YXJndW1lbnRzIGFyZSBjb2xsZWN0ZWQKKyAgICAgICAgaW50byBhIFdURjo6VmVjdG9yLgorCisg
ICAgICAgIERPTVRva2VuTGlzdCwgRE9NU2V0dGFibGVUb2tlbkxpc3QgYW5kIENsYXNzTGlzdCB3
ZXJlIHJlc3RydWN0dXJlZCBhIGJpdCB0bworICAgICAgICBhbGxvdyBjb2RlIHRvIGJlIHNoYXJl
ZCBiZXR0ZXIuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LXF1
aXJrcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvc2NyaXB0
LXRlc3RzL2NsYXNzLWxpc3QuanM6CisgICAgICAgIChlbGVtZW50LmNsYXNzTGlzdC5hZGQpOgor
ICAgICAgICAoY3JlYXRlRWxlbWVudCk6CisgICAgICAgIChzaG91bGRCZUVxdWFsVG9TdHJpbmcp
OgorICAgICAgICAoZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKToKKwogMjAxMi0wOS0yNCAgUm9n
ZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJl
bW92aW5nIFdpbmRvd3Mgc3BlY2lmaWMgcmVzdWx0cyBmb3IgZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvZmxvYXQtYXMtb25seS1jaGlsZC1vZi1pc29sYXRlLWNyYXNoIHRoYXQgd2VyZSBhZGRlZCBp
biBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc5OTguCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtZXhwZWN0
ZWQudHh0CmluZGV4IDcxNjRkNGJmOGJiMjI3OTQ2MjQ4MzkxMzkwMjNjMTYyOWMwYzhjYjcuLjkz
Y2RjODA3MTRkODM5MjExZmY5OWY2ZTY1ZWFjMmRhNjllYjBjYmQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtZXhwZWN0ZWQudHh0
CkBAIC0zMSwxMCArMzEsOCBAQCBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCcnKSB0
aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEyCiBQQVNTIGVsZW1lbnQuY2xh
c3NMaXN0LmNvbnRhaW5zKCd4IHknKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBj
b2RlIDUKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCcnKSB0aHJldyBleHBlY3RlZCBET01F
eGNlcHRpb24gd2l0aCBjb2RlIDEyCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgneCB5Jykg
dGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1Ci1QQVNTIGVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzLgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJycpIHRocmV3IGV4cGVjdGVkIERP
TUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd4
IHknKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDUKLVBBU1MgZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMuCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgnJykgdGhyZXcgZXhw
ZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC50
b2dnbGUoJ3ggeScpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQogUEFT
UyBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBO
b3QgZW5vdWdoIGFyZ3VtZW50cy4KQEAgLTc0LDYgKzcyLDI0IEBAIFBBU1MgZWxlbWVudC5jbGFz
c0xpc3QuY29uc3RydWN0b3IgaXMgRE9NVG9rZW5MaXN0CiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0
ID09PSBlbGVtZW50LmNsYXNzTGlzdCBpcyB0cnVlCiBQQVNTIGRvY3VtZW50LmJvZHkuY2xhc3NM
aXN0LmNvbnRhaW5zKCJGQUlMIikgaXMgdHJ1ZQogUEFTUyBkb2N1bWVudC5ib2R5LmNsYXNzTmFt
ZSBpcyAiIgorVmFyaWFkaWMgY2FsbHMKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiIK
K1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiBjIgorUEFTUyBlbGVtZW50LmNsYXNzTmFt
ZSBpcyAiYSBiIGMgbnVsbCBkIHVuZGVmaW5lZCAwIGZhbHNlIgorUEFTUyBlbGVtZW50LmNsYXNz
TmFtZSBpcyAiYSBiIGEiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYScsICdiJywgJycp
IHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKK1BBU1MgZWxlbWVudC5j
bGFzc05hbWUgaXMgIiIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhJywgJ2InLCAnYyBk
JykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1CitQQVNTIGVsZW1lbnQu
Y2xhc3NOYW1lIGlzICIiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgpIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYiBkICAiCitQQVNTIGVs
ZW1lbnQuY2xhc3NOYW1lIGlzICJkICAiCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIg
YyIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhJywgJ2InLCAnJykgdGhyZXcgZXhw
ZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBp
cyAiYSBiIgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2EnLCAnYicsICdjIGQnKSB0
aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDUKK1BBU1MgZWxlbWVudC5jbGFz
c05hbWUgaXMgImEgYiIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCkgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2Ns
YXNzLWxpc3QtcXVpcmtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxF
bGVtZW50L2NsYXNzLWxpc3QtcXVpcmtzLWV4cGVjdGVkLnR4dAppbmRleCA3MTY0ZDRiZjhiYjIy
Nzk0NjI0ODM5MTM5MDIzYzE2MjljMGM4Y2I3Li45M2NkYzgwNzE0ZDgzOTIxMWZmOTlmNmU2NWVh
YzJkYTY5ZWIwY2JkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVu
dC9jbGFzcy1saXN0LXF1aXJrcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEVsZW1lbnQvY2xhc3MtbGlzdC1xdWlya3MtZXhwZWN0ZWQudHh0CkBAIC0zMSwxMCAr
MzEsOCBAQCBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCcnKSB0aHJldyBleHBlY3Rl
ZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEyCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRh
aW5zKCd4IHknKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDUKIFBBU1Mg
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCcnKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0
aCBjb2RlIDEyCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgneCB5JykgdGhyZXcgZXhwZWN0
ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1Ci1QQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyBl
bGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJycpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3
aXRoIGNvZGUgMTIKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd4IHknKSB0aHJldyBl
eHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDUKLVBBU1MgZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMu
CiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgnJykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhj
ZXB0aW9uIHdpdGggY29kZSAxMgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoJ3ggeScp
IHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQogUEFTUyBlbGVtZW50LmNs
YXNzTGlzdC50b2dnbGUoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFy
Z3VtZW50cy4KQEAgLTc0LDYgKzcyLDI0IEBAIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QuY29uc3Ry
dWN0b3IgaXMgRE9NVG9rZW5MaXN0CiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0ID09PSBlbGVtZW50
LmNsYXNzTGlzdCBpcyB0cnVlCiBQQVNTIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5z
KCJGQUlMIikgaXMgdHJ1ZQogUEFTUyBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSBpcyAiIgorVmFy
aWFkaWMgY2FsbHMKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiIKK1BBU1MgZWxlbWVu
dC5jbGFzc05hbWUgaXMgImEgYiBjIgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBiIGMg
bnVsbCBkIHVuZGVmaW5lZCAwIGZhbHNlIgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBi
IGEiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYScsICdiJywgJycpIHRocmV3IGV4cGVj
dGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMg
IiIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhJywgJ2InLCAnYyBkJykgdGhyZXcgZXhw
ZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1CitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlz
ICIiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYiBkICAiCitQQVNTIGVsZW1lbnQuY2xhc3NO
YW1lIGlzICJkICAiCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIgYyIKK1BBU1MgZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhJywgJ2InLCAnJykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhj
ZXB0aW9uIHdpdGggY29kZSAxMgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBiIgorUEFT
UyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2EnLCAnYicsICdjIGQnKSB0aHJldyBleHBlY3Rl
ZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDUKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEg
YiIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L3NjcmlwdC10ZXN0cy9j
bGFzcy1saXN0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvc2NyaXB0LXRl
c3RzL2NsYXNzLWxpc3QuanMKaW5kZXggMzIxOTBiYjdhNTI3M2U5ODZiNmRjNzc4YTc2MjE1NGMy
OWFlNzdjYS4uODVjMjU4M2M5ZGM1MGVmNzNiMThlZDEzODBiZGQxOWI3ODRmZjY2MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvc2NyaXB0LXRlc3RzL2NsYXNz
LWxpc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvc2NyaXB0LXRl
c3RzL2NsYXNzLWxpc3QuanMKQEAgLTE1NCw5ICsxNTQsNiBAQCBzaG91bGRUaHJvd0RPTUV4Y2Vw
dGlvbihmdW5jdGlvbigpIHsKIH0sIERPTUV4Y2VwdGlvbi5JTlZBTElEX0NIQVJBQ1RFUl9FUlIp
OwogCiBjcmVhdGVFbGVtZW50KCcnKTsKLXNob3VsZFRocm93KCJlbGVtZW50LmNsYXNzTGlzdC5h
ZGQoKSIpOwotCi1jcmVhdGVFbGVtZW50KCcnKTsKIHNob3VsZFRocm93RE9NRXhjZXB0aW9uKGZ1
bmN0aW9uKCkgewogICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnJyk7CiB9LCBET01FeGNl
cHRpb24uU1lOVEFYX0VSUik7CkBAIC0xNjYsOCArMTYzLDcgQEAgc2hvdWxkVGhyb3dET01FeGNl
cHRpb24oZnVuY3Rpb24oKSB7CiAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd4IHknKTsK
IH0sIERPTUV4Y2VwdGlvbi5JTlZBTElEX0NIQVJBQ1RFUl9FUlIpOwogCi1jcmVhdGVFbGVtZW50
KCcnKTsKLXNob3VsZFRocm93KCJlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoKSIpOworCiAKIGNy
ZWF0ZUVsZW1lbnQoJycpOwogc2hvdWxkVGhyb3dET01FeGNlcHRpb24oZnVuY3Rpb24oKSB7CkBA
IC0yNjUsMyArMjYxLDYwIEBAIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnRkFJTCcpOwog
c2hvdWxkQmVUcnVlKCdkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygiRkFJTCIpJyk7
CiBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ0ZBSUwnKTsKIHNob3VsZEJlRXF1YWxU
b1N0cmluZygnZG9jdW1lbnQuYm9keS5jbGFzc05hbWUnLCAnJyk7CisKKy8vIFZhcmlhZGljCisK
K2RlYnVnKCdWYXJpYWRpYyBjYWxscycpOworCitjcmVhdGVFbGVtZW50KCcnKTsKK2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgnYScsICdiJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VsZW1lbnQu
Y2xhc3NOYW1lJywgJ2EgYicpOworCitlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2EnLCAnYicsICdj
Jyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VsZW1lbnQuY2xhc3NOYW1lJywgJ2EgYiBjJyk7
CisKK2VsZW1lbnQuY2xhc3NMaXN0LmFkZChudWxsLCB7dG9TdHJpbmc6IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gJ2QnIH19LCB1bmRlZmluZWQsIDAsIGZhbHNlKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZWxlbWVudC5jbGFzc05hbWUnLCAnYSBiIGMgbnVsbCBkIHVuZGVmaW5lZCAwIGZhbHNlJyk7
CisKK2NyZWF0ZUVsZW1lbnQoJycpOworZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhJywgJ2InLCAn
YScpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNzTmFtZScsICdhIGIgYScp
OworCitjcmVhdGVFbGVtZW50KCcnKTsKK3Nob3VsZFRocm93RE9NRXhjZXB0aW9uKGZ1bmN0aW9u
KCkgeworICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYScsICdiJywgJycpOworfSwgRE9NRXhj
ZXB0aW9uLlNZTlRBWF9FUlIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNz
TmFtZScsICcnKTsKKworc2hvdWxkVGhyb3dET01FeGNlcHRpb24oZnVuY3Rpb24oKSB7CisgICAg
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhJywgJ2InLCAnYyBkJyk7Cit9LCBET01FeGNlcHRpb24u
SU5WQUxJRF9DSEFSQUNURVJfRVJSKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZWxlbWVudC5j
bGFzc05hbWUnLCAnJyk7CisKK2NyZWF0ZUVsZW1lbnQoJycpOworc2hvdWxkTm90VGhyb3coJ2Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgpJyk7CisKKworY3JlYXRlRWxlbWVudCgnYSBiIGMgZCAgJyk7
CitlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2EnLCAnYycpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdlbGVtZW50LmNsYXNzTmFtZScsICdiIGQgICcpOworCitlbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoJ2InLCAnYicpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNzTmFt
ZScsICdkICAnKTsKKworY3JlYXRlRWxlbWVudCgnYSBiIGMgbnVsbCBkIHVuZGVmaW5lZCAwIGZh
bHNlJyk7CitlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUobnVsbCwge3RvU3RyaW5nOiBmdW5jdGlv
bigpIHsgcmV0dXJuICdkJyB9fSwgdW5kZWZpbmVkLCAwLCBmYWxzZSk7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2VsZW1lbnQuY2xhc3NOYW1lJywgJ2EgYiBjJyk7CisKK2NyZWF0ZUVsZW1lbnQo
J2EgYicpOworc2hvdWxkVGhyb3dET01FeGNlcHRpb24oZnVuY3Rpb24oKSB7CisgICAgZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCdhJywgJ2InLCAnJyk7Cit9LCBET01FeGNlcHRpb24uU1lOVEFY
X0VSUik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VsZW1lbnQuY2xhc3NOYW1lJywgJ2EgYicp
OworCitzaG91bGRUaHJvd0RPTUV4Y2VwdGlvbihmdW5jdGlvbigpIHsKKyAgICBlbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoJ2EnLCAnYicsICdjIGQnKTsKK30sIERPTUV4Y2VwdGlvbi5JTlZBTElE
X0NIQVJBQ1RFUl9FUlIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNzTmFt
ZScsICdhIGInKTsKKworc2hvdWxkTm90VGhyb3coJ2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgp
Jyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165868</attachid>
            <date>2012-09-26 13:40:36 -0700</date>
            <delta_ts>2012-09-26 14:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97335-20120926163954.patch</filename>
            <type>text/plain</type>
            <size>67571</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Mzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRkNGFlZmM1NGQxNjM3
ODY4ZGM0ZWEyMzVkOTM3MjIzYTVjODQ0Yy4uOTEyNzE2ZjM1ZTUzMDdhZDk5Y2I3MjQyYjkwOTgw
MGNmMDBiNjk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wOS0yNiAgRXJp
ayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERPTTQ6IEFkZCBzdXBw
b3J0IGZvciByZXN0IHBhcmFtZXRlcnMgdG8gRE9NVG9rZW5MaXN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzMzNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciByZXN0
IHBhcmFtYXRlcnMgdG8gRE9NVG9rZW5MaXN0IGFkZCBhbmQgcmVtb3ZlLgorICAgICAgICBodHRw
Oi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tdG9rZW5saXN0CisKKyAgICAgICAgVGhlIGNvZGUg
Z2VuZXJhdG9yIGhhcyBiZWVuIHVwZGF0ZWQgdG8gdW5kZXJzdGFuZCB2YXJpYWRpYyBtZXRob2Rz
LgorICAgICAgICBXaGVuIGEgbWV0aG9kIGhhcyBhIHJlc3QgcGFyYW1ldGVyIHRoZSByZW1haW5p
bmcgYXJndW1lbnRzIGFyZSBjb2xsZWN0ZWQKKyAgICAgICAgaW50byBhIFdURjo6VmVjdG9yLgor
CisgICAgICAgIERPTVRva2VuTGlzdCwgRE9NU2V0dGFibGVUb2tlbkxpc3QgYW5kIENsYXNzTGlz
dCB3ZXJlIHJlc3RydWN0dXJlZCBhIGJpdCB0bworICAgICAgICBhbGxvdyBjb2RlIHRvIGJlIHNo
YXJlZCBiZXR0ZXIuCisKKyAgICAgICAgVXBkYXRlZCBleGlzdGluZyB0ZXN0cyBhbmQgaW5jbHVk
ZXMgbmV3IGJpbmRpbmcgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZlQXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b05hdGl2ZUFyZ3VtZW50cyk6IFNpbWlsYXIgdG8gdG9O
YXRpdmVBcnJheSBidXQgZXh0cmFjdHMgdGhlIGFyZ3VtZW50cyBpbnN0ZWFkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVB
cmd1bWVudHNDb3VudENoZWNrKTogVXBkYXRlZCB0byB0cmVhdCByZXN0IHBhcmFtYXRlcnMgYXMg
b3B0aW9uYWwuCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6IEdlbmVyYXRlIGNv
ZGUgZm9yIHJlc3QgcGFyYW1zLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvblBhcmFtZXRlcnNDaGVjayk6IFVw
ZGF0ZWQgdG8gdHJlYXQgcmVzdCBwYXJhbWF0ZXJzIGFzIG9wdGlvbmFsLgorICAgICAgICAoR2Vu
ZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjayk6ICBHZW5lcmF0ZSBjb2RlIGZvciByZXN0IHBhcmFtcy4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKHBhcnNlUGFyYW1ldGVycyk6
IFdoZW4gYSBwYXJhbWV0ZXIgaXMgZGVmaW5lZCBhcyBULi4uIHdlIHNldCBpc1ZhcmlhZGljIHRv
IHRydWUuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG06CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkRPTVRlc3RPYmo6OnZhcmlhZGljU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkRP
TVRlc3RPYmo6OnZhcmlhZGljRG91YmxlTWV0aG9kKToKKyAgICAgICAgKFdlYkRPTVRlc3RPYmo6
OnZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3Zh
cmlhZGljX3N0cmluZ19tZXRob2QpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial92YXJp
YWRpY19kb3VibGVfbWV0aG9kKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFk
aWNfbm9kZV9tZXRob2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2Rl
TWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE9iai5tbToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiB2YXJpYWRpY1N0cmluZ01ldGhvZDp0
YWlsOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHZhcmlhZGljRG91YmxlTWV0aG9kOnRhaWw6
XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogdmFyaWFkaWNOb2RlTWV0aG9kOnRhaWw6XSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljU3RyaW5nTWV0aG9kQ2FsbGJhY2spOgorICAgICAg
ICAoVGVzdE9ialY4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnZhcmlhZGljRG91YmxlTWV0aG9kQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OnZhcmlhZGljTm9kZU1ldGhvZENhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6dG9O
YXRpdmVBcnJheSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0
aXZlQXJndW1lbnRzKTogU2ltaWxhciB0byB0b05hdGl2ZUFycmF5IGJ1dCBleHRyYWN0cyB0aGUg
YXJndW1lbnRzIGluc3RlYWQuCisgICAgICAgICogaHRtbC9DbGFzc0xpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xhc3NMaXN0OjpDbGFzc0xpc3QpOgorICAgICAgICAqIGh0bWwvQ2xhc3NM
aXN0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENsYXNzTGlzdCk6CisgICAgICAg
ICogaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01T
ZXR0YWJsZVRva2VuTGlzdDo6Y29udGFpbnNJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01TZXR0YWJsZVRva2VuTGlzdDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNldHRhYmxl
VG9rZW5MaXN0OjphZGRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZXR0YWJsZVRv
a2VuTGlzdDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNldHRhYmxlVG9rZW5MaXN0
OjpyZW1vdmVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZXR0YWJsZVRva2VuTGlz
dDo6c2V0VmFsdWUpOgorICAgICAgICAqIGh0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaDoKKyAg
ICAgICAgKERPTVNldHRhYmxlVG9rZW5MaXN0KToKKyAgICAgICAgKiBodG1sL0RPTVRva2VuTGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnZhbGlkYXRlVG9rZW5zKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojpjb250
YWlucyk6IE1vdmVkIGltcGxlbWVudGF0aW9uIHRvIGJhc2UgY2xhc3MgdG8gYWxsb3cgY29kZSBz
aGFyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjphZGQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6cmVtb3ZlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnRvZ2dsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RE9NVG9rZW5MaXN0OjphZGRJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9N
VG9rZW5MaXN0OjpyZW1vdmVJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9N
VG9rZW5MaXN0OjphZGRUb2tlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5M
aXN0OjphZGRUb2tlbnMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjpyZW1vdmVU
b2tlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjpyZW1vdmVUb2tl
bnMpOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0Lmg6CisgICAgICAgIChET01Ub2tlbkxp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojp0b1N0cmluZyk6CisgICAgICAg
ICogaHRtbC9ET01Ub2tlbkxpc3QuaWRsOgorCiAyMDEyLTA5LTI0ICBUb21teSBXaWRlbmZseWNo
dCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogRml4IHRo
ZSBpbmNvcnJlY3RseSBzcGVsbGVkIFJUQ1BlZXJDb25uZWN0aW9uOjpvbm5lZ290aWF0aW9ubmVl
ZGVkIGNhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmlu
ZGV4IDc1MzJiNzkzZTcyOGQwZDhiYzFhZTJkNWMzZTJhMTJlOTA5NzEzOTAuLjFlZmE0YjMwNGY2
MmI3MDE1ZWExZTVkZTcxYzJlYzhkZTRiYzU4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCkBAIC0zNTMsNyArMzUzLDcgQEAgZW51bSBQYXJhbWV0ZXJEZWZh
dWx0UG9saWN5IHsKIAogICAgIHRlbXBsYXRlPD4KICAgICBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFp
dHM8U3RyaW5nPiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhcnJheU5hdGl2ZVZhbHVl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgU3RyaW5nJiBpbmRl
eGVkVmFsdWUpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIFN0cmluZyYgaW5kZXhlZFZhbHVl
KQogICAgICAgICB7CiAgICAgICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzYyLDcg
KzM2Miw3IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAKICAgICB0ZW1wbGF0ZTw+
CiAgICAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPHVuc2lnbmVkIGxvbmc+IHsKLSAgICAgICAg
c3RhdGljIGlubGluZSBib29sIGFycmF5TmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCB1bnNpZ25lZCBsb25nJiBpbmRleGVkVmFsdWUpCisgICAg
ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU1ZhbHVlIGpzVmFsdWUsIHVuc2lnbmVkIGxvbmcmIGluZGV4ZWRWYWx1ZSkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFqc1ZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVs
dFBvbGljeSB7CiAKICAgICB0ZW1wbGF0ZTw+CiAgICAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRz
PGZsb2F0PiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhcnJheU5hdGl2ZVZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgZmxvYXQmIGluZGV4ZWRW
YWx1ZSkKKyAgICAgICAgc3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgZmxvYXQmIGluZGV4ZWRWYWx1ZSkKICAg
ICAgICAgewogICAgICAgICAgICAgaW5kZXhlZFZhbHVlID0ganNWYWx1ZS50b0Zsb2F0KGV4ZWMp
OwogICAgICAgICAgICAgcmV0dXJuICFleGVjLT5oYWRFeGNlcHRpb24oKTsKQEAgLTQwMCw3ICs0
MDAsMjUgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKIAogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIFQgaW5kZXhWYWx1
ZTsKLSAgICAgICAgICAgIGlmICghVHJhaXRzVHlwZTo6YXJyYXlOYXRpdmVWYWx1ZShleGVjLCBv
YmplY3QtPmdldChleGVjLCBpKSwgaW5kZXhWYWx1ZSkpCisgICAgICAgICAgICBpZiAoIVRyYWl0
c1R5cGU6Om5hdGl2ZVZhbHVlKGV4ZWMsIG9iamVjdC0+Z2V0KGV4ZWMsIGkpLCBpbmRleFZhbHVl
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7CisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGluZGV4VmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgVmVjdG9yPFQ+IHRvTmF0aXZl
QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3Qgc3RhcnRJbmRleCA9IDApCisg
ICAgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAg
ICAgICBBU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOworCisgICAgICAgIFZlY3RvcjxUPiBy
ZXN1bHQ7CisgICAgICAgIHR5cGVkZWYgTmF0aXZlVmFsdWVUcmFpdHM8VD4gVHJhaXRzVHlwZTsK
KworICAgICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICBUIGluZGV4VmFsdWU7CisgICAgICAgICAgICBpZiAoIVRyYWl0c1R5cGU6
Om5hdGl2ZVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KGkpLCBpbmRleFZhbHVlKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KGluZGV4VmFsdWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGUzNzY2ZDNiYTc2NDRmYzIyMDFmMDQ2
MWY4Mjc4NGI1Njc1OWIxNmUuLmQ5YzI2ZDE0ZDc1YWUzZDA0NjFiZjk0MmQ1ZTAyOWZjM2RmMzE3
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC0yNjA0LDcgKzI2MDQsNyBAQCBzdWIgR2VuZXJhdGVBcmd1bWVudHNDb3Vu
dENoZWNrCiAKICAgICBteSAkbnVtTWFuZGF0b3J5UGFyYW1zID0gQHskZnVuY3Rpb24tPnBhcmFt
ZXRlcnN9OwogICAgIGZvcmVhY2ggbXkgJHBhcmFtIChyZXZlcnNlKEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfSkpIHsKLSAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9w
dGlvbmFsIn0pIHsKKyAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9w
dGlvbmFsIn0gb3IgJHBhcmFtLT5pc1ZhcmlhZGljKSB7CiAgICAgICAgICAgICAkbnVtTWFuZGF0
b3J5UGFyYW1zLS07CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsYXN0OwpAQCAtMjcw
NywxMyArMjcwNywzOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRhcmdUeXBlPiAkbmFtZSA9ICR7
Y2FsbGJhY2tDbGFzc05hbWV9OjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoJGFyZ3NJ
bmRleCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7XG4iKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNsYW1w
In0pIHsKLSAgICAgICAgICAgICAgICBteSAkbmF0aXZlVmFsdWUgPSAiJHtuYW1lfU5hdGl2ZVZh
bHVlIjsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJGFyZ1R5cGUg
JG5hbWUgPSAwO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGRvdWJsZSAkbmF0aXZlVmFsdWUgPSBleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS50b051bWJl
cihleGVjKTtcbiIpOworICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVlID0gIiR7bmFtZX1OYXRp
dmVWYWx1ZSI7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJGFyZ1R5cGUg
JG5hbWUgPSAwO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZG91
YmxlICRuYXRpdmVWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpLnRvTnVtYmVyKGV4
ZWMpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG5cbiIpOworICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghaXNuYW4oJG5hdGl2ZVZhbHVl
KSlcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZSA9
IGNsYW1wVG88JGFyZ1R5cGU+KCRuYXRpdmVWYWx1ZSk7XG5cbiIpOworICAgICAgICB9IGVsc2lm
ICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7CisgICAgICAgICAgICBteSAkbmF0aXZlRWxlbWVu
dFR5cGU7CisgICAgICAgICAgICBpZiAoJGFyZ1R5cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAg
ICAgICAgICAgICAkbmF0aXZlRWxlbWVudFR5cGUgPSAiU3RyaW5nIjsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgJG5hdGl2ZUVsZW1lbnRUeXBlID0gR2V0TmF0aXZlVHlw
ZSgkYXJnVHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKCRuYXRpdmVFbGVtZW50VHlwZSA9fiAv
PiQvKSB7CisgICAgICAgICAgICAgICAgICAgICRuYXRpdmVFbGVtZW50VHlwZSA9ICRuYXRpdmVF
bGVtZW50VHlwZSAuICIgIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghSXNOYXRpdmVUeXBlKCRhcmdUeXBlKSkgeworICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWZWN0b3I8JG5hdGl2ZUVsZW1lbnRUeXBlPiAkbmFt
ZTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBmb3IgKHVu
c2lnbmVkIGkgPSAkYXJnc0luZGV4OyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFl
eGVjLT5hcmd1bWVudChpKS5pbmhlcml0cygmSlMke2FyZ1R5cGV9OjpzX2luZm8pKVxuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgICRuYW1lLmFwcGVuZCh0byRhcmdUeXBlKGV4ZWMtPmFyZ3VtZW50KGkp
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIikK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRuYW1lID0gdG9OYXRpdmVBcmd1bWVu
dHM8JG5hdGl2ZUVsZW1lbnRUeXBlPihleGVjLCAkYXJnc0luZGV4KTtcbiIpOworICAgICAgICAg
ICAgICAgICMgQ2hlY2sgaWYgdGhlIHR5cGUgY29udmVyc2lvbiBzdWNjZWVkZWQuCiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcblxuIik7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghaXNuYW4oJG5hdGl2ZVZhbHVlKSlcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUgPSBj
bGFtcFRvPCRhcmdUeXBlPigkbmF0aXZlVmFsdWUpO1xuXG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7XG4iKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlz
IHByZXNlbnQsIGFuZCB0aGUgYXJndW1lbnQncyB0eXBlIGlzIGFuCiAgICAgICAgICAgICAjIGlu
dGVyZmFjZSB0eXBlLCB0aGVuIGlmIHRoZSBpbmNvbWluZyB2YWx1ZSBkb2VzIG5vdCBpbXBsZW1l
bnQgdGhhdCBpbnRlcmZhY2UsIGEgVHlwZUVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDA2ODEwNTYwMDYzMjFjYmEy
MTcwMDI0NTM4YWJkMDE3NWZkMmEwZTIuLjQxMWMwZDkxZDIxM2ZhM2FmZTJjNzYzNWQ2YTYyYmU2
MDQ0ZjBhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCkBAIC0xNDA1LDE1ICsxNDA1LDIyIEBAIHN1YiBHZW5lcmF0ZUZ1bmN0
aW9uUGFyYW1ldGVyc0NoZWNrCiAKICAgICBteSBAb3JFeHByZXNzaW9uID0gKCk7CiAgICAgbXkg
JG51bVBhcmFtZXRlcnMgPSAwOworICAgIG15ICRoYXNWYXJpYWRpYyA9IDA7CiAgICAgbXkgJG51
bU1hbmRhdG9yeVBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKICAgICBmb3JlYWNo
IG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewogICAgICAgICBpZiAo
JHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKICAgICAgICAg
ICAgIHB1c2goQG9yRXhwcmVzc2lvbiwgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9u
KCRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb24pKTsKICAgICAgICAgICAgICRudW1NYW5kYXRvcnlQ
YXJhbXMtLTsKICAgICAgICAgfQorICAgICAgICBpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykg
eworICAgICAgICAgICAgJGhhc1ZhcmlhZGljID0gMTsKKyAgICAgICAgICAgIGxhc3Q7CisgICAg
ICAgIH0KICAgICAgICAgJG51bVBhcmFtZXRlcnMrKzsKICAgICB9Ci0gICAgcHVzaChAb3JFeHBy
ZXNzaW9uLCBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24oJG51bVBhcmFtZXRlcnMs
ICRmdW5jdGlvbikpOworICAgIGlmICghJGhhc1ZhcmlhZGljKSB7CisgICAgICAgIHB1c2goQG9y
RXhwcmVzc2lvbiwgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uKCRudW1QYXJhbWV0
ZXJzLCAkZnVuY3Rpb24pKTsKKyAgICB9CiAgICAgcmV0dXJuICgkbnVtTWFuZGF0b3J5UGFyYW1z
LCBqb2luKCIgfHwgIiwgQG9yRXhwcmVzc2lvbikpOwogfQogCkBAIC0xNjI0LDEyICsxNjMxLDEy
IEBAIHN1YiBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sKICAgICBteSAkZGF0YU5vZGUgPSBz
aGlmdDsKIAogICAgIG15ICRudW1NYW5kYXRvcnlQYXJhbXMgPSAwOwotICAgIG15ICRvcHRpb25h
bFNlZW4gPSAwOworICAgIG15ICRhbGxvd05vbk9wdGlvbmFsID0gMTsKICAgICBmb3JlYWNoIG15
ICRwYXJhbSAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAgIGlmICgkcGFyYW0t
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAgICAgICAgICAkb3B0aW9u
YWxTZWVuID0gMTsKKyAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9w
dGlvbmFsIn0gb3IgJHBhcmFtLT5pc1ZhcmlhZGljKSB7CisgICAgICAgICAgICAkYWxsb3dOb25P
cHRpb25hbCA9IDA7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkaWUgIkFuIGFyZ3Vt
ZW50IG11c3Qgbm90IGJlIGRlY2xhcmVkIHRvIGJlIG9wdGlvbmFsIHVubGVzcyBhbGwgc3Vic2Vx
dWVudCBhcmd1bWVudHMgdG8gdGhlIG9wZXJhdGlvbiBhcmUgYWxzbyBvcHRpb25hbC4iIGlmICRv
cHRpb25hbFNlZW47CisgICAgICAgICAgICBkaWUgIkFuIGFyZ3VtZW50IG11c3Qgbm90IGJlIGRl
Y2xhcmVkIHRvIGJlIG9wdGlvbmFsIHVubGVzcyBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgdG8g
dGhlIG9wZXJhdGlvbiBhcmUgYWxzbyBvcHRpb25hbC4iIGlmICEkYWxsb3dOb25PcHRpb25hbDsK
ICAgICAgICAgICAgICRudW1NYW5kYXRvcnlQYXJhbXMrKzsKICAgICAgICAgfQogICAgIH0KQEAg
LTE3NjAsNiArMTc2NywyMyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAg
ICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hf
RVJSO1xuIjsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBn
b3RvIGZhaWw7XG4iOwogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAg
fVxuIjsKKyAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykgeworICAgICAg
ICAgICAgbXkgJG5hdGl2ZUVsZW1lbnRUeXBlID0gR2V0TmF0aXZlVHlwZSgkcGFyYW1ldGVyLT50
eXBlKTsKKyAgICAgICAgICAgIGlmICgkbmF0aXZlRWxlbWVudFR5cGUgPX4gLz4kLykgeworICAg
ICAgICAgICAgICAgICRuYXRpdmVFbGVtZW50VHlwZSA9ICRuYXRpdmVFbGVtZW50VHlwZSAuICIg
IjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbXkgJGFyZ1R5cGUgPSBHZXRUeXBlRnJv
bVNpZ25hdHVyZSgkcGFyYW1ldGVyKTsKKyAgICAgICAgICAgIGlmIChJc1dyYXBwZXJUeXBlKCRh
cmdUeXBlKSkgeworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
IFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRwYXJhbWV0ZXJOYW1lO1xuIjsKKyAgICAgICAg
ICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBmb3IgKGludCBpID0gJHBhcmFt
SW5kZXg7IGkgPCBhcmdzLkxlbmd0aCgpOyArK2kpIHtcbiI7CisgICAgICAgICAgICAgICAgJHBh
cmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGlmICghVjgke2FyZ1R5cGV9OjpIYXNJbnN0
YW5jZShhcmdzW2ldKSlcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRl
KCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAg
ICAgJHBhcmFtZXRlck5hbWUuYXBwZW5kKFY4JHthcmdUeXBlfTo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzW2ldKSkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFy
YW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBFWENFUFRJT05fQkxP
Q0soVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4sICRwYXJhbWV0ZXJOYW1lLCB0b05hdGl2ZUFy
Z3VtZW50czwkbmF0aXZlRWxlbWVudFR5cGU+KGFyZ3MsICRwYXJhbUluZGV4KSk7XG4iOworICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2lmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVy
LykgewogICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIs
ICJNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAkcGFyYW1JbmRleCwgJHBhcmFtZXRlckRl
ZmF1bHRQb2xpY3kpIiwgImFyZ3MuR2V0SXNvbGF0ZSgpIik7CiAgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJHBhcmFtZXRl
ciwgJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4gIlxuIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMDU3YzAzZDZjNmEy
YjkxZjkzYmRlYTVjMDJiNzQ5NjFiZmI4OWQ0MS4uYWJhMzIzNGNhODhkN2E3NThiNDI2ODY0Njlm
NDFkMDlmMjFmYTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQ
YXJzZXIucG0KQEAgLTI0OCw2ICsyNDgsNyBAQCBzdWIgcGFyc2VQYXJhbWV0ZXJzCiAgICAgICAg
IG15ICRwYXJhbU5hbWUgPSAoZGVmaW5lZCgkNSkgPyAkNSA6IGRpZSgiUGFyc2luZyBlcnJvciFc
blNvdXJjZTpcbiRsaW5lXG4pIikpOwogCiAgICAgICAgIG15ICRpc051bGxhYmxlID0gJHBhcmFt
VHlwZVN1ZmZpeCBlcSAiPyI7CisgICAgICAgIG15ICRpc1ZhcmlhZGljID0gJHBhcmFtVHlwZVN1
ZmZpeCBlcSAiLi4uIjsKIAogICAgICAgICBteSAkcGFyYW1EYXRhTm9kZSA9IG5ldyBkb21TaWdu
YXR1cmUoKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmRpcmVjdGlvbigkcGFyYW1EaXJlY3Rp
b24pOwpAQCAtMjU1LDYgKzI1Niw3IEBAIHN1YiBwYXJzZVBhcmFtZXRlcnMKICAgICAgICAgJHBh
cmFtRGF0YU5vZGUtPnR5cGUoJHBhcmFtVHlwZSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJHBhcmFtRXh0ZW5kZWRB
dHRyaWJ1dGVzKSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc051bGxhYmxlKCRpc051bGxh
YmxlKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzVmFyaWFkaWMoJGlzVmFyaWFkaWMpOwog
CiAgICAgICAgIG15ICRhcnJheVJlZiA9ICRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyczsKICAgICAg
ICAgcHVzaChAJGFycmF5UmVmLCAkcGFyYW1EYXRhTm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtCmluZGV4IDJlM2ZiNmM4MDZlNTRhYzYz
YTk1MDdhOWQ4Y2ZjZWNhZTYzMTM2OWUuLmUwMDUwMzQ0Njg2YmI0ZTY4ZDgzZmRlOTQzYmYzMGM2
NzljYjYzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
U3RydWN0dXJlLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3Ry
dWN0dXJlLnBtCkBAIC02Nyw3ICs2Nyw4IEBAIHN0cnVjdCggZG9tU2lnbmF0dXJlID0+IHsKICAg
ICBuYW1lID0+ICckJywgICAgICAjIFZhcmlhYmxlIG5hbWUKICAgICB0eXBlID0+ICckJywgICAg
ICAjIFZhcmlhYmxlIHR5cGUKICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVu
ZGVkIGF0dHJpYnV0ZXMKLSAgICBpc051bGxhYmxlID0+ICckJyAjIElzIHZhcmlhYmxlIHR5cGUg
TnVsbGFibGUgKFQ/KQorICAgIGlzTnVsbGFibGUgPT4gJyQnLCAjIElzIHZhcmlhYmxlIHR5cGUg
TnVsbGFibGUgKFQ/KQorICAgIGlzVmFyaWFkaWMgPT4gJyQnICMgSXMgdmFyaWFibGUgdmFyaWFk
aWMgKGxvbmcuLi4gbnVtYmVycykKIH0pOwogCiAjIFVzZWQgdG8gcmVwcmVzZW50IHN0cmluZyBj
b25zdGFudHMKQEAgLTkyLDcgKzkzLDcgQEAgb3VyICRpZGxEYXRhVHlwZSA9ICdbYS16QS1aMC05
XCBdJzsgICAjIEdlbmVyaWMgZGF0YSB0eXBlIGlkZW50aWZpZXIKIAogIyBNYWdpYyBJREwgcGFy
c2luZyByZWd1bGFyIGV4cHJlc3Npb25zCiBteSAkc3VwcG9ydGVkVHlwZXMgPSAiKCg/Oig/OnVu
c2lnbmVkICk/KD86aW50fHNob3J0fCg/OmxvbmcgKT9sb25nKXwoPzokaWRsSWROcyopKSg/Olxc
W1xcXXw8KD86JGlkbElkTnNMaXN0Kik+KT8pIjsKLW15ICRzdXBwb3J0ZWRUeXBlU3VmZml4ID0g
IihcXD8pPyI7CitteSAkc3VwcG9ydGVkVHlwZVN1ZmZpeCA9ICIoXFw/fFxcLlxcLlxcLik/IjsK
IAogIyBTcGVjaWFsIElETCBub3RhdGlvbnMuIFRoaXMgcmVndWxhciBleHByZXNzaW9uIGV4dHJh
Y3RzIHRoZSBzdHJpbmcgYmV0d2VlbiB0aGUgZmlyc3QgWyBhbmQgaXRzIGNvcnJlc3BvbmRpbmcg
XS4KIG91ciAkZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXggPSBxci9cW1teXFtcXV0qKD86KD8/eyRJ
RExTdHJ1Y3R1cmU6OmV4dGVuZGVkQXR0cmlidXRlU3ludGF4fSlbXlxbXF1dKikqXF0veDsgIyBV
c2VkIGZvciBleHRlbmRlZCBhdHRyaWJ1dGVzCkBAIC0xMDcsOCArMTA4LDggQEAgb3VyICRzZXR0
ZXJSYWlzZXNTZWxlY3RvciA9ICdcYnNldHRlclxzK3JhaXNlc1xzKlwoKCcgLiAkaWRsSWROc0xp
c3QgLiAnKilccypcKScKIAogb3VyICR0eXBlTmFtZXNwYWNlU2VsZWN0b3IgPSAnKCg/OicgLiAk
aWRsSWQgLiAnKjo6KSopXHMqKCcgLiAkaWRsRGF0YVR5cGUgLiAnKiknOwogCi1vdXIgJGludGVy
ZmFjZVNlbGVjdG9yID0gJyhpbnRlcmZhY2V8ZXhjZXB0aW9uKVxzKigoPzonIC4gJGV4dGVuZGVk
QXR0cmlidXRlU3ludGF4IC4gJyApPykoJyAuICRpZGxJZE5zIC4gJyopXHMqKD86OihccypbXntd
KikpP3soWy1hLXpBLVowLTlfIj1ccygpLDs6XFtcXTw+Jlx8P10qKSc7Ci1vdXIgJGludGVyZmFj
ZU1ldGhvZFNlbGVjdG9yID0gJ1xzKigoPzonIC4gJGV4dGVuZGVkQXR0cmlidXRlU3ludGF4IC4g
JyApPykoc3RhdGljXHMrKT8nIC4gJHN1cHBvcnRlZFR5cGVzIC4gJ1xzKignIC4gJGlkbElkTnMg
LiAnKilccypcKFxzKihbYS16QS1aMC05OlxzLD1cW1xdPD4/XSopJzsKK291ciAkaW50ZXJmYWNl
U2VsZWN0b3IgPSAnKGludGVyZmFjZXxleGNlcHRpb24pXHMqKCg/OicgLiAkZXh0ZW5kZWRBdHRy
aWJ1dGVTeW50YXggLiAnICk/KSgnIC4gJGlkbElkTnMgLiAnKilccyooPzo6KFxzKltee10qKSk/
eyhbLWEtekEtWjAtOV8iPVxzKCksOzpcW1xdPD4mXHw/Ll0qKSc7CitvdXIgJGludGVyZmFjZU1l
dGhvZFNlbGVjdG9yID0gJ1xzKigoPzonIC4gJGV4dGVuZGVkQXR0cmlidXRlU3ludGF4IC4gJyAp
Pykoc3RhdGljXHMrKT8nIC4gJHN1cHBvcnRlZFR5cGVzIC4gJ1xzKignIC4gJGlkbElkTnMgLiAn
KilccypcKFxzKihbYS16QS1aMC05OlxzLD1cW1xdPD4/Ll0qKSc7CiBvdXIgJGludGVyZmFjZVBh
cmFtZXRlclNlbGVjdG9yID0gJyhpbnxvdXQpXHMqKCg/OicgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVT
eW50YXggLiAnICk/KScgLiAkc3VwcG9ydGVkVHlwZXMgLiAkc3VwcG9ydGVkVHlwZVN1ZmZpeCAu
ICdccyooJyAuICRpZGxJZE5zIC4gJyopJzsKIAogb3VyICRpbnRlcmZhY2VBdHRyaWJ1dGVTZWxl
Y3RvciA9ICdccyooc3RhdGljXHMrKT8ocmVhZG9ubHkgYXR0cmlidXRlfGF0dHJpYnV0ZSlccyoo
JyAuICRleHRlbmRlZEF0dHJpYnV0ZVN5bnRheCAuICcgKT8nIC4gJHN1cHBvcnRlZFR5cGVzIC4g
J1xzKignIC4gJGlkbFR5cGUgLiAnKiknOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggMGNmNjc2
NTk5YzYzYmYxMjVjMWQ0OWJjYWEwYzgzM2M4NTMxODEzYy4uZDUzNmY5NDdhYzI1YTk3ZTc1MWEx
ZjQyMDMyODk3YWY0ZDM4YjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC0yNiwxMiArMjYs
MTQgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCiAj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGVzdE9iai5oIgog
I2luY2x1ZGUgIldlYkRPTURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXZWJET01Eb2N1bWVudC5o
IgogI2luY2x1ZGUgIldlYkRPTUlEQktleS5oIgorI2luY2x1ZGUgIldlYkRPTU5vZGUuaCIKICNp
bmNsdWRlICJXZWJET01TVkdQb2ludC5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZy5oIgogI2lu
Y2x1ZGUgIldlYkRPTWEuaCIKQEAgLTk2OSw2ICs5NzEsMzAgQEAgV2ViRE9NYm9vbCBXZWJET01U
ZXN0T2JqOjpzdHJpY3RGdW5jdGlvbihjb25zdCBXZWJET01TdHJpbmcmIHN0ciwgZmxvYXQgYSwg
aW50IGIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFdlYkRPTVRlc3RPYmo6OnZhcmlh
ZGljU3RyaW5nTWV0aG9kKGNvbnN0IFdlYkRPTVN0cmluZyYgaGVhZCwgY29uc3QgV2ViRE9NU3Ry
aW5nJiB0YWlsKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
bXBsKCktPnZhcmlhZGljU3RyaW5nTWV0aG9kKGhlYWQsIHRhaWwpOworfQorCit2b2lkIFdlYkRP
TVRlc3RPYmo6OnZhcmlhZGljRG91YmxlTWV0aG9kKGRvdWJsZSBoZWFkLCBkb3VibGUgdGFpbCkK
K3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT52YXJp
YWRpY0RvdWJsZU1ldGhvZChoZWFkLCB0YWlsKTsKK30KKwordm9pZCBXZWJET01UZXN0T2JqOjp2
YXJpYWRpY05vZGVNZXRob2QoY29uc3QgV2ViRE9NTm9kZSYgaGVhZCwgY29uc3QgV2ViRE9NTm9k
ZSYgdGFpbCkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1w
bCgpLT52YXJpYWRpY05vZGVNZXRob2QodG9XZWJDb3JlKGhlYWQpLCB0b1dlYkNvcmUodGFpbCkp
OworfQorCiBXZWJDb3JlOjpUZXN0T2JqKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdE9iaiYg
d3JhcHBlcikKIHsKICAgICByZXR1cm4gd3JhcHBlci5pbXBsKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCmlu
ZGV4IGQ1NWZmNzg2NTUxZWJkM2M3NGFkMWE5Njg4MzJkMjAyOWJjYWM1MjcuLjdiMTBmZDAyYmZj
ZTJkYzE3YmY0ZDg0YmIyOTdjMGU3MTllMjViZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCkBAIC0zNCw2
ICszNCw3IEBAIGNsYXNzIFdlYkRPTURpY3Rpb25hcnk7CiBjbGFzcyBXZWJET01Eb2N1bWVudDsK
IGNsYXNzIFdlYkRPTUV2ZW50TGlzdGVuZXI7CiBjbGFzcyBXZWJET01JREJLZXk7CitjbGFzcyBX
ZWJET01Ob2RlOwogY2xhc3MgV2ViRE9NU1ZHUG9pbnQ7CiBjbGFzcyBXZWJET01TdHJpbmc7CiBj
bGFzcyBXZWJET01UZXN0T2JqOwpAQCAtMTkwLDYgKzE5MSw5IEBAIHB1YmxpYzoKICAgICBXZWJE
T01TVkdQb2ludCBpbW11dGFibGVQb2ludEZ1bmN0aW9uKCk7CiAgICAgdm9pZCBiYW5hbmEoKTsK
ICAgICBXZWJET01ib29sIHN0cmljdEZ1bmN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyLCBm
bG9hdCBhLCBpbnQgYik7CisgICAgdm9pZCB2YXJpYWRpY1N0cmluZ01ldGhvZChjb25zdCBXZWJE
T01TdHJpbmcmIGhlYWQsIGNvbnN0IFdlYkRPTVN0cmluZyYgdGFpbCk7CisgICAgdm9pZCB2YXJp
YWRpY0RvdWJsZU1ldGhvZChkb3VibGUgaGVhZCwgZG91YmxlIHRhaWwpOworICAgIHZvaWQgdmFy
aWFkaWNOb2RlTWV0aG9kKGNvbnN0IFdlYkRPTU5vZGUmIGhlYWQsIGNvbnN0IFdlYkRPTU5vZGUm
IHRhaWwpOwogCiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaW1wbCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDEyMDRkZmI1MGRiZDNkYzlhNDIzY2ExZDVh
YWI1NzMxODM1ZWI5MzguLmE5MjQzNTIxZDY5NTNiNWVjY2E1NTgzODhkOTBjMjZmYjA2ZjUxMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC0zOCw2ICszOCw4IEBACiAj
aW5jbHVkZSAid2Via2l0L1dlYktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIndl
YmtpdC9XZWJLaXRET01JREJLZXkuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSURCS2V5
UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01Ob2RlLmgiCisjaW5jbHVkZSAi
d2Via2l0L1dlYktpdERPTU5vZGVQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERP
TVNWR1BvaW50LmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVNWR1BvaW50UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKQEAg
LTE0NTIsNiArMTQ1NCw0OSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3N0cmljdF9mdW5jdGlvbihX
ZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3RyLCBnZgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfc3RyaW5nX21l
dGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogaGVhZCwgY29uc3QgZ2No
YXIqIHRhaWwpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGhlYWQpOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwodGFpbCk7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkSGVhZCA9IFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOChoZWFkKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRUYWls
ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHRhaWwpOworICAgIGl0ZW0tPnZhcmlhZGljU3RyaW5n
TWV0aG9kKGNvbnZlcnRlZEhlYWQsIGNvbnZlcnRlZFRhaWwpOworfQorCit2b2lkCit3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX2RvdWJsZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgZ2RvdWJsZSBoZWFkLCBnZG91YmxlIHRhaWwpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChz
ZWxmKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2Vi
Q29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT52YXJp
YWRpY0RvdWJsZU1ldGhvZChoZWFkLCB0YWlsKTsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0
X29ial92YXJpYWRpY19ub2RlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRE
T01Ob2RlKiBoZWFkLCBXZWJLaXRET01Ob2RlKiB0YWlsKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoc2VsZik7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19yZXR1
cm5faWZfZmFpbChoZWFkKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHRhaWwpOworICAgIFdlYkNv
cmU6Ok5vZGUqIGNvbnZlcnRlZEhlYWQgPSAwOworICAgIGlmIChoZWFkKSB7CisgICAgICAgIGNv
bnZlcnRlZEhlYWQgPSBXZWJLaXQ6OmNvcmUoaGVhZCk7CisgICAgICAgIGdfcmV0dXJuX2lmX2Zh
aWwoY29udmVydGVkSGVhZCk7CisgICAgfQorICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZFRh
aWwgPSAwOworICAgIGlmICh0YWlsKSB7CisgICAgICAgIGNvbnZlcnRlZFRhaWwgPSBXZWJLaXQ6
OmNvcmUodGFpbCk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkVGFpbCk7Cisg
ICAgfQorICAgIGl0ZW0tPnZhcmlhZGljTm9kZU1ldGhvZChjb252ZXJ0ZWRIZWFkLCBjb252ZXJ0
ZWRUYWlsKTsKK30KKwogZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9s
b25nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RPYmouaAppbmRleCAzOTVmYTc3YTY5MTQ0ZDIwODZkZWI1NDMyYWM2MDliMmU0Y2NkOTY2Li4w
YWYyOTc1ZDU1MjI3MTJlOGViMDdkMTQ2ZGMwNjAyNTYyOTFkMDhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9iai5oCkBAIC00ODYsNiArNDg2LDQyIEBAIFdFQktJVF9BUEkgV2ViS2l0RE9N
Ym9vbCoKIHdlYmtpdF9kb21fdGVzdF9vYmpfc3RyaWN0X2Z1bmN0aW9uKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBzdHIsIGdmbG9hdCBhLCBnbG9uZyBiLCBHRXJyb3IqKiBl
cnJvcik7CiAKIC8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19zdHJpbmdfbWV0
aG9kOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBoZWFkOiBBICNnY2hhcgor
ICogQHRhaWw6IEEgI2djaGFyCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19zdHJpbmdfbWV0aG9kKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBoZWFkLCBjb25zdCBnY2hhciogdGFpbCk7CisK
Ky8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19kb3VibGVfbWV0aG9kOgorICog
QHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBoZWFkOiBBICNnZG91YmxlCisgKiBAdGFp
bDogQSAjZ2RvdWJsZQorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZChXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBnZG91YmxlIGhlYWQsIGdkb3VibGUgdGFpbCk7CisKKy8qKgorICogd2Via2l0
X2RvbV90ZXN0X29ial92YXJpYWRpY19ub2RlX21ldGhvZDoKKyAqIEBzZWxmOiBBICNXZWJLaXRE
T01UZXN0T2JqCisgKiBAaGVhZDogQSAjV2ViS2l0RE9NTm9kZQorICogQHRhaWw6IEEgI1dlYktp
dERPTU5vZGUKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX25vZGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYsIFdlYktpdERPTU5vZGUqIGhlYWQsIFdlYktpdERPTU5vZGUqIHRhaWwpOworCisvKioKICAq
IHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9sb25nX2F0dHI6CiAgKiBAc2VsZjog
QSAjV2ViS2l0RE9NVGVzdE9iagogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZjQ4YTljODMzNzBmNTM0Y2Y1
MDhhYTNjZmVjYWUyNTk3NjY3ZWM2Ny4uZTI0MjEyZmI1ZTdhYjQxMGQ0OGEzYTBiZmRlNGNmM2Zl
YjZjYThjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0RvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNGbG9hdDMy
QXJyYXkuaCIKKyNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU1NWR0RvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiSlNTVkdQb2ludC5oIgogI2luY2x1ZGUgIkpTU2NyaXB0UHJvZmlsZS5oIgpA
QCAtMzIxLDYgKzMyMiw5IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQ
cm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIiwg
RG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9u
KSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAib3JhbmdlIiwgRG9udERlbGV0
ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5z
aWMgfSwKICAgICB7ICJzdHJpY3RGdW5jdGlvbiIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9u
LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24pLCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKKyAg
ICB7ICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMgfSwK
KyAgICB7ICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9u
LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMg
fSwKKyAgICB7ICJ2YXJpYWRpY05vZGVNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlv
biwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCksIChpbnRwdHJfdCkyLCBOb0ludHJpbnNpYyB9
LAogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIApAQCAtMjYwNyw2ICsyNjEx
LDY5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TdHJpY3RGdW5jdGlvbihFeGVjU3RhdGUqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9iaiog
aW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBjb25zdCBT
dHJpbmcmIGhlYWQoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gdGFpbCA9IHRvTmF0aXZl
QXJndW1lbnRzPFN0cmluZz4oZXhlYywgMSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlt
cGwtPnZhcmlhZGljU3RyaW5nTWV0aG9kKGhlYWQsIHRhaWwpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVl
KCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsK
KyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OworICAgIGRvdWJsZSBoZWFkKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkudG9OdW1iZXIoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBWZWN0b3I8ZG91YmxlPiB0YWlsID0gdG9OYXRpdmVBcmd1bWVudHM8ZG91YmxlPihleGVjLCAx
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaW1wbC0+dmFyaWFkaWNEb3VibGVNZXRob2Qo
aGVhZCwgdGFpbCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZhcmlhZGljTm9kZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5o
ZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+
KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGlj
X2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIE5vZGUqIGhlYWQodG9Ob2RlKE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgVmVjdG9yPE5vZGUqPiB0YWlsOworICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50KGkpLmluaGVyaXRzKCZKU05vZGU6OnNfaW5mbykpCisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGFpbC5hcHBlbmQo
dG9Ob2RlKGV4ZWMtPmFyZ3VtZW50KGkpKSk7CisgICAgfQorICAgIGltcGwtPnZhcmlhZGljTm9k
ZU1ldGhvZChoZWFkLCB0YWlsKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworfQorCiB2b2lkIEpTVGVzdE9iajo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTVGVzdE9iaiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCAxMjMyNzI0MDUyYWRmMjBlYjhhNjkw
NmEwMjExOTUzNTNkMWExMWNmLi41MjAyMTE1MDdiMWY4MGJiMGNiZTY4OTlmOTU1NmUzNWViZjkx
ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5oCkBAIC0yMTUsNiArMjE1LDkgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24K
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZShK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljU3RyaW5nTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJs
ZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEpTQzo6RXhl
Y1N0YXRlKik7CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25s
eUxvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmgKaW5kZXggNmE5MDk5MTFjYzhiYjBhYzAzMWM3MDEyOWE0MTkxNjJkNjVl
ZWNhZS4uZWRjNDk0MDkyZWFkMmRkM2QyZWZjMWI5MWI3ZTcwMzY1YTFmODhiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmouaApAQCAtMzEsNiArMzEsNyBAQAogQGNsYXNzIERPTURpY3Rpb25hcnk7CiBAY2xhc3MgRE9N
RG9jdW1lbnQ7CiBAY2xhc3MgRE9NSURCS2V5OworQGNsYXNzIERPTU5vZGU7CiBAY2xhc3MgRE9N
U1ZHRG9jdW1lbnQ7CiBAY2xhc3MgRE9NU1ZHUG9pbnQ7CiBAY2xhc3MgRE9NVGVzdE9iajsKQEAg
LTE3Myw2ICsxNzQsOSBAQCBlbnVtIHsKIC0gKERPTVNWR1BvaW50ICopaW1tdXRhYmxlUG9pbnRG
dW5jdGlvbjsKIC0gKHZvaWQpb3JhbmdlOwogLSAoRE9NYm9vbCAqKXN0cmljdEZ1bmN0aW9uOihO
U1N0cmluZyAqKXN0ciBhOihmbG9hdClhIGI6KGludCliOworLSAodm9pZCl2YXJpYWRpY1N0cmlu
Z01ldGhvZDooTlNTdHJpbmcgKiloZWFkIHRhaWw6KE5TU3RyaW5nICopdGFpbDsKKy0gKHZvaWQp
dmFyaWFkaWNEb3VibGVNZXRob2Q6KGRvdWJsZSloZWFkIHRhaWw6KGRvdWJsZSl0YWlsOworLSAo
dm9pZCl2YXJpYWRpY05vZGVNZXRob2Q6KERPTU5vZGUgKiloZWFkIHRhaWw6KERPTU5vZGUgKil0
YWlsOwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCmluZGV4IDhiMmJjZjAwYjFmOTY0MTNj
OTBjOTA5MDBkNTBmODhjOGVhZDZkNjIuLmVkNDAxYTQ0ZTgzMGVlMzY0Nzg5YTE2ZjZjNGQ0NTZj
YjA0ZjgzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCAiSURC
S2V5LmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbXBvcnQgIktVUkwu
aCIKKyNpbXBvcnQgIk5vZGUuaCIKICNpbXBvcnQgIk9iakNFdmVudExpc3RlbmVyLmgiCiAjaW1w
b3J0ICJTVkdEb2N1bWVudC5oIgogI2ltcG9ydCAiU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgi
CkBAIC0xMDU2LDYgKzEwNTcsMjQgQEAgLSAoRE9NYm9vbCAqKXN0cmljdEZ1bmN0aW9uOihOU1N0
cmluZyAqKXN0ciBhOihmbG9hdClhIGI6KGludCliCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
LSAodm9pZCl2YXJpYWRpY1N0cmluZ01ldGhvZDooTlNTdHJpbmcgKiloZWFkIHRhaWw6KE5TU3Ry
aW5nICopdGFpbAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBJTVBMLT52YXJpYWRpY1N0cmluZ01ldGhvZChoZWFkLCB0YWlsKTsKK30KKworLSAodm9p
ZCl2YXJpYWRpY0RvdWJsZU1ldGhvZDooZG91YmxlKWhlYWQgdGFpbDooZG91YmxlKXRhaWwKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+dmFy
aWFkaWNEb3VibGVNZXRob2QoaGVhZCwgdGFpbCk7Cit9CisKKy0gKHZvaWQpdmFyaWFkaWNOb2Rl
TWV0aG9kOihET01Ob2RlICopaGVhZCB0YWlsOihET01Ob2RlICopdGFpbAoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT52YXJpYWRpY05vZGVN
ZXRob2QoY29yZShoZWFkKSwgY29yZSh0YWlsKSk7Cit9CisKIEBlbmQKIAogV2ViQ29yZTo6VGVz
dE9iaiogY29yZShET01UZXN0T2JqICp3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IGYyZDFmZTgxMGQxYmFlZDE3NDU2
YzdiMTQwMWE5Nzg2NzFiZDNmYzMuLjhhOGZmYTZlMjY1ZmRmNGNjMTg2N2I4ZGY3ZjZlODdmMWZj
MWI4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwKQEAgLTI2Myw1ICsyNjMsOSBAQCBtb2R1bGUgdGVzdCB7CiAgICAgICAgIFtSZWZs
ZWN0PUNPTlNUX0lNUExdIGNvbnN0IHVuc2lnbmVkIHNob3J0IENPTlNUX0pBVkFTQ1JJUFQgPSAx
NTsKIAogICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlXSBsb25nIHJlcGxhY2VhYmxlQXR0
cmlidXRlOworCisgICAgICAgIHZvaWQgdmFyaWFkaWNTdHJpbmdNZXRob2QoaW4gRE9NU3RyaW5n
IGhlYWQsIGluIERPTVN0cmluZy4uLiB0YWlsKTsKKyAgICAgICAgdm9pZCB2YXJpYWRpY0RvdWJs
ZU1ldGhvZChpbiBkb3VibGUgaGVhZCwgaW4gZG91YmxlLi4uIHRhaWwpOworICAgICAgICB2b2lk
IHZhcmlhZGljTm9kZU1ldGhvZChpbiBOb2RlIGhlYWQsIGluIE5vZGUuLi4gdGFpbCk7CiAgICAg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKaW5kZXggNTAyNDI4YTcxMDBjNWY3MTY2M2NmNWM2OTE1MTY5ZDk3MjIx
NTUzNS4uN2U4ZmQ2YmNkZTliNmZiYjA2YzNkNGNkNDJiYmFmNDdmOTZjNGE1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRl
ICJWOERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhGbG9hdDMyQXJyYXkuaCIKKyNpbmNsdWRlICJW
OE5vZGUuaCIKICNpbmNsdWRlICJWOFNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhTVkdQb2lu
dC5oIgogI2luY2x1ZGUgIlY4U2NyaXB0UHJvZmlsZS5oIgpAQCAtMTkwNSw2ICsxOTA2LDQ3IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaWN0RnVuY3Rpb25DYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJp
YWRpY1N0cmluZ01ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7Cisg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai52YXJpYWRpY1N0cmluZ01ldGhvZCIpOworICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VY
Q0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBoZWFkLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soVmVj
dG9yPFN0cmluZz4sIHRhaWwsIHRvTmF0aXZlQXJndW1lbnRzPFN0cmluZz4oYXJncywgMSkpOwor
ICAgIGltcC0+dmFyaWFkaWNTdHJpbmdNZXRob2QoaGVhZCwgdGFpbCk7CisgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFyaWFkaWNE
b3VibGVNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoudmFyaWFkaWNEb3VibGVNZXRob2QiKTsKKyAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhkb3VibGUsIGhlYWQs
IHN0YXRpY19jYXN0PGRvdWJsZT4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKS0+TnVtYmVyVmFsdWUoKSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhW
ZWN0b3I8ZG91YmxlPiwgdGFpbCwgdG9OYXRpdmVBcmd1bWVudHM8ZG91YmxlPihhcmdzLCAxKSk7
CisgICAgaW1wLT52YXJpYWRpY0RvdWJsZU1ldGhvZChoZWFkLCB0YWlsKTsKKyAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJpYWRp
Y05vZGVNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoudmFyaWFkaWNOb2RlTWV0aG9kIik7CisgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soTm9kZSosIGhlYWQsIFY4
Tm9kZTo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSkpIDogMCk7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHRhaWw7CisgICAgZm9yIChpbnQg
aSA9IDE7IGkgPCBhcmdzLkxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFWOE5vZGU6Okhh
c0luc3RhbmNlKGFyZ3NbaV0pKQorICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKDAs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgdGFpbC5hcHBlbmQoVjhOb2RlOjp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbaV0pKSk7CisgICAgfQorICAgIGlt
cC0+dmFyaWFkaWNOb2RlTWV0aG9kKGhlYWQsIHRhaWwpOworICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0T2JqVjhJbnRlcm5hbAogCiBzdGF0aWMgY29u
c3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdE9iakF0dHJzW10g
PSB7CkBAIC0yMDg2LDYgKzIxMjgsOCBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9u
OjpCYXRjaGVkQ2FsbGJhY2sgVjhUZXN0T2JqQ2FsbGJhY2tzW10gPSB7CiAgICAgeyJpbW11dGFi
bGVQb2ludEZ1bmN0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50RnVuY3Rp
b25DYWxsYmFja30sCiAgICAgeyJvcmFuZ2UiLCBUZXN0T2JqVjhJbnRlcm5hbDo6b3JhbmdlQ2Fs
bGJhY2t9LAogICAgIHsic3RyaWN0RnVuY3Rpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0
RnVuY3Rpb25DYWxsYmFja30sCisgICAgeyJ2YXJpYWRpY1N0cmluZ01ldGhvZCIsIFRlc3RPYmpW
OEludGVybmFsOjp2YXJpYWRpY1N0cmluZ01ldGhvZENhbGxiYWNrfSwKKyAgICB7InZhcmlhZGlj
RG91YmxlTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljRG91YmxlTWV0aG9kQ2Fs
bGJhY2t9LAogfTsKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENv
bnN0YW50IFY4VGVzdE9iakNvbnN0c1tdID0gewpAQCAtMjIzNyw2ICsyMjgxLDEyIEBAIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2Jq
VGVtcGxhdGUodjg6OlBlcnNpCiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Y29udmVydDVBcmd2W2NvbnZlcnQ1QXJnY10gPSB7IFY4ZTo6R2V0UmF3VGVtcGxhdGUoKSB9Owog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDVTaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgY29udmVydDVBcmdjLCBjb252ZXJ0NUFyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0NSIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NUNhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCBjb252ZXJ0NVNpZ25hdHVyZSkpOworCisgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAndmFy
aWFkaWNOb2RlTWV0aG9kJworICAgIGNvbnN0IGludCB2YXJpYWRpY05vZGVNZXRob2RBcmdjID0g
MjsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2YXJpYWRpY05vZGVNZXRo
b2RBcmd2W3ZhcmlhZGljTm9kZU1ldGhvZEFyZ2NdID0geyBWOE5vZGU6OkdldFJhd1RlbXBsYXRl
KCksIFY4Tm9kZTo6R2V0UmF3VGVtcGxhdGUoKSB9OworICAgIHY4OjpIYW5kbGU8djg6OlNpZ25h
dHVyZT4gdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRl
c2MsIHZhcmlhZGljTm9kZU1ldGhvZEFyZ2MsIHZhcmlhZGljTm9kZU1ldGhvZEFyZ3YpOworICAg
IHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2YXJpYWRpY05vZGVNZXRob2QiKSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6dmFyaWFkaWNOb2Rl
TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHZhcmlhZGljTm9kZU1ldGhvZFNpZ25hdHVy
ZSkpOwogICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVz
YywgcHJvdG8sIFY4VGVzdE9iakNvbnN0cywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RPYmpDb25z
dHMpKTsKIAogICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCAwYzllZTRmNGNhMThhMGM4MGM2ZTJiMzVhMjc2NzE4
NDQ3MGYyZWJmLi41NTZmNjg2NjQyNmQyN2RlNjZjNmQ3MTg3YmFjMTMyOGUxY2EzZDUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMTgyLDI4ICsxODIsMjkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0cnVjdCBOYXRpdmVW
YWx1ZVRyYWl0czxTdHJpbmc+IHsKLSAgICAgICAgc3RhdGljIGlubGluZSBTdHJpbmcgYXJyYXlO
YXRpdmVWYWx1ZShjb25zdCB2ODo6TG9jYWw8djg6OkFycmF5PiYgYXJyYXksIHNpemVfdCBpKQor
ICAgICAgICBzdGF0aWMgaW5saW5lIFN0cmluZyBuYXRpdmVWYWx1ZShjb25zdCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4mIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdG9XZWJD
b3JlU3RyaW5nKGFycmF5LT5HZXQoaSkpOworICAgICAgICAgICAgcmV0dXJuIHRvV2ViQ29yZVN0
cmluZyh2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0
cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxmbG9hdD4gewotICAgICAgICBzdGF0aWMgaW5saW5lIGZs
b2F0IGFycmF5TmF0aXZlVmFsdWUoY29uc3Qgdjg6OkxvY2FsPHY4OjpBcnJheT4mIGFycmF5LCBz
aXplX3QgaSkKKyAgICAgICAgc3RhdGljIGlubGluZSBmbG9hdCBuYXRpdmVWYWx1ZShjb25zdCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFycmF5LT5HZXQodjhJbnRlZ2VyKGkpKS0+TnVtYmVyVmFs
dWUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlLT5OdW1i
ZXJWYWx1ZSgpKTsKICAgICAgICAgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+CiAgICAgc3Ry
dWN0IE5hdGl2ZVZhbHVlVHJhaXRzPGRvdWJsZT4gewotICAgICAgICBzdGF0aWMgaW5saW5lIGRv
dWJsZSBhcnJheU5hdGl2ZVZhbHVlKGNvbnN0IHY4OjpMb2NhbDx2ODo6QXJyYXk+JiBhcnJheSwg
c2l6ZV90IGkpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgZG91YmxlIG5hdGl2ZVZhbHVlKGNvbnN0
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGFycmF5LT5HZXQodjhJbnRlZ2VyKGkpKS0+TnVtYmVy
VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZS0+
TnVtYmVyVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9OwogCisKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVD4KICAgICBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmFsdWUpCiAgICAgewpAQCAtMjE1LDEyICsyMTYsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlKHY4OjpMb2NhbDx2ODo6VmFsdWU+
OjpOZXcodmFsdWUpKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6
TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2OFZhbHVlKTsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IGFycmF5LT5MZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChUcmFpdHNUeXBlOjphcnJheU5hdGl2
ZVZhbHVlKGFycmF5LCBpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVHJhaXRzVHlwZTo6
bmF0aXZlVmFsdWUoYXJyYXktPkdldChpKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBUPgorICAgIFZlY3RvcjxUPiB0b05hdGl2ZUFyZ3Vt
ZW50cyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBzaXplX3Qgc3RhcnRJbmRleCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChzdGFydEluZGV4IDw9IGFyZ3MuTGVuZ3RoKCkpOworICAgICAgICBW
ZWN0b3I8VD4gcmVzdWx0OworICAgICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPFQ+IFRy
YWl0c1R5cGU7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBhcmdzLkxlbmd0aCgpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShhcmdzW2ldKSk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisKICAgICAvLyBWYWxpZGF0ZXMgdGhhdCB0aGUg
cGFzc2VkIG9iamVjdCBpcyBhIHNlcXVlbmNlIHR5cGUgcGVyIFdlYklETCBzcGVjCiAgICAgLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1XZWJJREwtMjAxMjAyMDcvI2VzLXNlcXVlbmNl
CiAgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4U2VxdWVuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB1aW50MzJfdCYgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9DbGFzc0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DbGFzc0xp
c3QuY3BwCmluZGV4IGEzMjVhMTIyNmFhOWE0NWI0NTU0Y2JiOWVlZTcwMjcyODg0YWQwYzcuLjVm
ZjNiZGFmNjAyZmM0N2ZiNTMyNmJhZDkzYzc2M2E2YzJiNTVkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ2xhc3NMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Ns
YXNzTGlzdC5jcHAKQEAgLTI1LDIxICsyNSwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNsYXNzTGlzdC5oIgogCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJTcGFj
ZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KIENsYXNz
TGlzdDo6Q2xhc3NMaXN0KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVu
dCkKIHsKICAgICBpZiAobV9lbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKLSAg
ICAgICAgbV9jbGFzc05hbWVzRm9yUXVpcmtzTW9kZS5zZXQobV9lbGVtZW50LT5nZXRBdHRyaWJ1
dGUoY2xhc3NBdHRyKSwgZmFsc2UpOworICAgICAgICBtX2NsYXNzTmFtZXNGb3JRdWlya3NNb2Rl
LnNldCh2YWx1ZSgpLCBmYWxzZSk7CiB9CiAKIHZvaWQgQ2xhc3NMaXN0OjpyZWYoKQpAQCAtNjQs
NzEgKzYwLDExIEBAIGNvbnN0IEF0b21pY1N0cmluZyBDbGFzc0xpc3Q6Oml0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIGNsYXNzTmFtZXMoKVtpbmRleF07CiB9CiAKLWJvb2wg
Q2xhc3NMaXN0Ojpjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBFeGNlcHRpb25D
b2RlJiBlYykgY29uc3QKLXsKLSAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb250YWluc0ludGVybmFsKHRva2VuKTsK
LX0KLQogYm9vbCBDbGFzc0xpc3Q6OmNvbnRhaW5zSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5n
JiB0b2tlbikgY29uc3QKIHsKICAgICByZXR1cm4gbV9lbGVtZW50LT5oYXNDbGFzcygpICYmIGNs
YXNzTmFtZXMoKS5jb250YWlucyh0b2tlbik7CiB9CiAKLXZvaWQgQ2xhc3NMaXN0OjphZGQoY29u
c3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCF2
YWxpZGF0ZVRva2VuKHRva2VuLCBlYykpCi0gICAgICAgIHJldHVybjsKLSAgICBhZGRJbnRlcm5h
bCh0b2tlbik7Ci19Ci0KLXZvaWQgQ2xhc3NMaXN0OjphZGRJbnRlcm5hbChjb25zdCBBdG9taWNT
dHJpbmcmIHRva2VuKQotewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkQ2xhc3NOYW1lKG1f
ZWxlbWVudC0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikpOwotICAgIGlmIChvbGRDbGFzc05hbWUu
aXNFbXB0eSgpKQotICAgICAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIHRv
a2VuKTsKLSAgICBlbHNlIGlmICghY29udGFpbnNJbnRlcm5hbCh0b2tlbikpIHsKLSAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc05hbWUoYWRkVG9rZW4ob2xkQ2xhc3NOYW1lLCB0
b2tlbikpOwotICAgICAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIG5ld0Ns
YXNzTmFtZSk7Ci0gICAgfQotfQotCi12b2lkIENsYXNzTGlzdDo6cmVtb3ZlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghdmFsaWRhdGVU
b2tlbih0b2tlbiwgZWMpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVtb3ZlSW50ZXJuYWwodG9r
ZW4pOwotfQotCi12b2lkIENsYXNzTGlzdDo6cmVtb3ZlSW50ZXJuYWwoY29uc3QgQXRvbWljU3Ry
aW5nJiB0b2tlbikKLXsKLSAgICAvLyBDaGVjayB1c2luZyBjb250YWlucyBmaXJzdCBzaW5jZSBp
dCB1c2VzIEF0b21pY1N0cmluZyBjb21wYXJpc29ucyBpbnN0ZWFkCi0gICAgLy8gb2YgY2hhcmFj
dGVyIGJ5IGNoYXJhY3RlciB0ZXN0aW5nLgotICAgIGlmICghY29udGFpbnNJbnRlcm5hbCh0b2tl
bikpCi0gICAgICAgIHJldHVybjsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzTmFt
ZShyZW1vdmVUb2tlbihtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpLCB0b2tlbikp
OwotICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgbmV3Q2xhc3NOYW1lKTsK
LX0KLQotYm9vbCBDbGFzc0xpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBF
eGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGNvbnRhaW5zSW50ZXJuYWwodG9rZW4p
KSB7Ci0gICAgICAgIHJlbW92ZUludGVybmFsKHRva2VuKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICBhZGRJbnRlcm5hbCh0b2tlbik7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LVN0cmluZyBDbGFzc0xpc3Q6OnRvU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbGVt
ZW50LT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKTsKLX0KLQogdm9pZCBDbGFzc0xpc3Q6OnJlc2V0
KGNvbnN0IFN0cmluZyYgbmV3Q2xhc3NOYW1lKQogewogICAgIGlmIChtX2VsZW1lbnQtPmRvY3Vt
ZW50KCktPmluUXVpcmtzTW9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9D
bGFzc0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2xhc3NMaXN0LmgKaW5kZXggOTkyZmFk
NDc0YzYzZDc1ZjE4YjllZWZiNTY0ODY2MGY2YjM4MTBlZC4uNzY0ZWJmNTJlODFhYTljMGJmODVl
YWZjNGUwYzc1N2JkNmNmZTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DbGFz
c0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NsYXNzTGlzdC5oCkBAIC0yNiwxMSAr
MjYsMTcgQEAKICNkZWZpbmUgQ2xhc3NMaXN0X2gKIAogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOworCiBjbGFzcyBFbGVtZW50OwogCiB0eXBlZGVmIGludCBFeGNlcHRp
b25Db2RlOwpAQCAtNDIsMzAgKzQ4LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDbGFzc0xpc3QoZWxlbWVudCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBy
ZWYoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb250YWlu
cyhjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZChjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdmlydHVhbCBib29sIHRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCBFbGVtZW50KiBlbGVtZW50KCkgeyByZXR1cm4gbV9lbGVtZW50OyB9CisgICAgdmlydHVhbCBF
bGVtZW50KiBlbGVtZW50KCkgT1ZFUlJJREUgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAKICAgICB2
b2lkIHJlc2V0KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIENsYXNzTGlzdChFbGVt
ZW50Kik7CiAKLSAgICB2b2lkIGFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAg
IGJvb2wgY29udGFpbnNJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKLSAgICB2
b2lkIHJlbW92ZUludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZpcnR1YWwgYm9v
bCBjb250YWluc0ludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lcygpIGNvbnN0OwogCisgICAg
dmlydHVhbCBBdG9taWNTdHJpbmcgdmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Vs
ZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSBPVkVSUklERSB7IG1fZWxlbWVudC0+
c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgdmFsdWUpOyB9CisKICAgICBFbGVtZW50KiBtX2VsZW1l
bnQ7CiAgICAgU3BhY2VTcGxpdFN0cmluZyBtX2NsYXNzTmFtZXNGb3JRdWlya3NNb2RlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5jcHAKaW5kZXggM2E4
NmU5YzAwMDI0NDI5OGQyNGFkY2MzZDEwNWMxZWQ0MjQ3NDlmMC4uNGVmMGY3ZjUxYTUwMDI4NTgy
YjgwNGQ1MzdhM2FjYjllMjQ5NWVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01TZXR0YWJsZVRva2VuTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0
YWJsZVRva2VuTGlzdC5jcHAKQEAgLTQ0LDU1ICs0NCw0NiBAQCBjb25zdCBBdG9taWNTdHJpbmcg
RE9NU2V0dGFibGVUb2tlbkxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdG9rZW5zW2luZGV4XTsKIH0KIAotYm9vbCBET01TZXR0YWJsZVRva2VuTGlzdDo6Y29u
dGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
Citib29sIERPTVNldHRhYmxlVG9rZW5MaXN0Ojpjb250YWluc0ludGVybmFsKGNvbnN0IEF0b21p
Y1N0cmluZyYgdG9rZW4pIGNvbnN0CiB7Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBl
YykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gbV90b2tlbnMuY29udGFpbnMo
dG9rZW4pOwogfQogCi12b2lkIERPTVNldHRhYmxlVG9rZW5MaXN0OjphZGQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERPTVNldHRhYmxlVG9rZW5M
aXN0OjphZGQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHRva2VucywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBlYykgfHwgbV90b2tlbnMuY29udGFp
bnModG9rZW4pKQotICAgICAgICByZXR1cm47Ci0gICAgYWRkSW50ZXJuYWwodG9rZW4pOworICAg
IERPTVRva2VuTGlzdDo6YWRkKHRva2VucywgZWMpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fdG9rZW5zLmlzTnVsbCgp
KQorICAgICAgICAgICAgbV90b2tlbnMuc2V0KHRva2Vuc1tpXSwgZmFsc2UpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX3Rva2Vucy5hZGQodG9rZW5zW2ldKTsKKyAgICB9CiB9CiAKIHZv
aWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYg
dG9rZW4pCiB7Ci0gICAgbV92YWx1ZSA9IGFkZFRva2VuKG1fdmFsdWUsIHRva2VuKTsKKyAgICBE
T01Ub2tlbkxpc3Q6OmFkZEludGVybmFsKHRva2VuKTsKICAgICBpZiAobV90b2tlbnMuaXNOdWxs
KCkpCiAgICAgICAgIG1fdG9rZW5zLnNldCh0b2tlbiwgZmFsc2UpOwogICAgIGVsc2UKICAgICAg
ICAgbV90b2tlbnMuYWRkKHRva2VuKTsKIH0KIAotdm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6
cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBET01TZXR0YWJsZVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tl
bnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbiwg
ZWMpIHx8ICFtX3Rva2Vucy5jb250YWlucyh0b2tlbikpCi0gICAgICAgIHJldHVybjsKLSAgICBy
ZW1vdmVJbnRlcm5hbCh0b2tlbik7CisgICAgRE9NVG9rZW5MaXN0OjpyZW1vdmUodG9rZW5zLCBl
Yyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIG1fdG9rZW5zLnJlbW92ZSh0b2tlbnNbaV0pOwogfQogCiB2b2lkIERPTVNldHRhYmxlVG9r
ZW5MaXN0OjpyZW1vdmVJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQogewotICAg
IG1fdmFsdWUgPSByZW1vdmVUb2tlbihtX3ZhbHVlLCB0b2tlbik7CisgICAgRE9NVG9rZW5MaXN0
OjpyZW1vdmVJbnRlcm5hbCh0b2tlbik7CiAgICAgbV90b2tlbnMucmVtb3ZlKHRva2VuKTsKIH0K
IAotYm9vbCBET01TZXR0YWJsZVRva2VuTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYg
dG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tl
biwgZWMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fdG9rZW5zLmNvbnRhaW5z
KHRva2VuKSkgewotICAgICAgICByZW1vdmVJbnRlcm5hbCh0b2tlbik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgYWRkSW50ZXJuYWwodG9rZW4pOwotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkIERPTVNldHRhYmxlVG9rZW5MaXN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcm
IHZhbHVlKQordm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6c2V0VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBtX3ZhbHVlID0gdmFsdWU7CiAgICAgbV90b2tlbnMuc2V0
KHZhbHVlLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRh
YmxlVG9rZW5MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0
LmgKaW5kZXggMGIyM2M2YWIyMjlmYTY1NWNlMzg4ODE5NGQ4OWUzN2NiY2U5OTNlMS4uZjMzOGRj
MzJiZjY5YmMxNzQ3MTQ4ZGU0NjUyNDVhYTE0MWUxYjE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaApAQCAtNDQsMjggKzQ0LDI4IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgdmlydHVhbCB+RE9NU2V0dGFibGVUb2tlbkxpc3QoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCByZWYoKSB7IFJlZkNvdW50ZWQ8RE9NU2V0dGFibGVUb2tlbkxpc3Q+OjpyZWYoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIHsgUmVmQ291bnRlZDxET01TZXR0YWJsZVRva2VuTGlz
dD46OmRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgT1ZFUlJJREUgeyBSZWZDb3Vu
dGVkPERPTVNldHRhYmxlVG9rZW5MaXN0Pjo6cmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWYoKSBPVkVSUklERSB7IFJlZkNvdW50ZWQ8RE9NU2V0dGFibGVUb2tlbkxpc3Q+OjpkZXJlZigp
OyB9CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9r
ZW5zLnNpemUoKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nIGl0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBBdG9taWNT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkZChjb25z
dCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCBib29s
IHRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVh
bCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9CisgICAgdmlydHVh
bCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Rva2Vucy5zaXpl
KCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBhZGQoY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92
ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKworICAg
IHZpcnR1YWwgQXRvbWljU3RyaW5nIHZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92
YWx1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKSBP
VkVSUklERTsKIAotICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
ICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiB0b2tlbnMoKSBjb25zdCB7IHJldHVybiBtX3Rv
a2VuczsgfQotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CiAg
ICAgRE9NU2V0dGFibGVUb2tlbkxpc3QoKTsKIAotICAgIHZvaWQgcmVtb3ZlSW50ZXJuYWwoY29u
c3QgQXRvbWljU3RyaW5nJik7Ci0gICAgdm9pZCBhZGRJbnRlcm5hbChjb25zdCBBdG9taWNTdHJp
bmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zSW50ZXJuYWwoY29uc3QgQXRvbWlj
U3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUludGVybmFs
KGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogCi0gICAgU3RyaW5nIG1fdmFsdWU7Cisg
ICAgQXRvbWljU3RyaW5nIG1fdmFsdWU7CiAgICAgU3BhY2VTcGxpdFN0cmluZyBtX3Rva2VuczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAppbmRleCA3MTMyYjExNjlkZDkz
MWYyZmZkMGExZDg0MzMzZWNlMmZiZWExNDI0Li44NjE3ZjlkZjkzZDJiZGQ2Mjk5MmRlNTM4Mzc2
ZjBlMjIzMDRmOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCkBAIC00OSwy
MyArNDksMTM4IEBAIGJvb2wgRE9NVG9rZW5MaXN0Ojp2YWxpZGF0ZVRva2VuKGNvbnN0IEF0b21p
Y1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiB0cnVlOwogfQog
Citib29sIERPTVRva2VuTGlzdDo6dmFsaWRhdGVUb2tlbnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHRva2VucywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB0b2tlbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2Vu
c1tpXSwgZWMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIERPTVRva2VuTGlzdDo6Y29udGFpbnMoY29uc3QgQXRvbWljU3Ry
aW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCF2YWxpZGF0
ZVRva2VuKHRva2VuLCBlYykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY29u
dGFpbnNJbnRlcm5hbCh0b2tlbik7Cit9CisKK3ZvaWQgRE9NVG9rZW5MaXN0OjphZGQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgVmVjdG9yPFN0
cmluZz4gdG9rZW5zOworICAgIHRva2Vucy5hcHBlbmQodG9rZW4pOworICAgIGFkZCh0b2tlbnMs
IGVjKTsKK30KKwordm9pZCBET01Ub2tlbkxpc3Q6OmFkZChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dG9rZW5zLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBmaWx0ZXJl
ZFRva2VuczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2Vucy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW5zW2ldLCBlYykpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmICghY29udGFpbnNJbnRlcm5hbCh0b2tlbnNbaV0pKQorICAg
ICAgICAgICAgZmlsdGVyZWRUb2tlbnMuYXBwZW5kKHRva2Vuc1tpXSk7CisgICAgfQorCisgICAg
aWYgKGZpbHRlcmVkVG9rZW5zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0
VmFsdWUoYWRkVG9rZW5zKHZhbHVlKCksIGZpbHRlcmVkVG9rZW5zKSk7Cit9CisKK3ZvaWQgRE9N
VG9rZW5MaXN0OjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zOworICAgIHRva2Vucy5hcHBlbmQo
dG9rZW4pOworICAgIHJlbW92ZSh0b2tlbnMsIGVjKTsKK30KKwordm9pZCBET01Ub2tlbkxpc3Q6
OnJlbW92ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBpZiAoIXZhbGlkYXRlVG9rZW5zKHRva2VucywgZWMpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBDaGVjayB1c2luZyBjb250YWluc0ludGVybmFsIGZpcnN0IHNpbmNlIGl0IGlz
IGEgbG90IGZhc3RlciB0aGFuIGdvaW5nCisgICAgLy8gdGhyb3VnaCB0aGUgc3RyaW5nIGNoYXJh
Y3RlciBieSBjaGFyYWN0ZXIuCisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdG9rZW5zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChjb250YWlu
c0ludGVybmFsKHRva2Vuc1tpXSkpIHsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGZvdW5kKQorICAgICAg
ICBzZXRWYWx1ZShyZW1vdmVUb2tlbnModmFsdWUoKSwgdG9rZW5zKSk7Cit9CisKK2Jvb2wgRE9N
VG9rZW5MaXN0Ojp0b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBlYykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChjb250YWluc0ludGVybmFsKHRva2VuKSkgeworICAgICAg
ICByZW1vdmVJbnRlcm5hbCh0b2tlbik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgYWRkSW50ZXJuYWwodG9rZW4pOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERPTVRv
a2VuTGlzdDo6YWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKK3sKKyAgICBp
ZiAoIWNvbnRhaW5zSW50ZXJuYWwodG9rZW4pKQorICAgICAgICBzZXRWYWx1ZShhZGRUb2tlbih2
YWx1ZSgpLCB0b2tlbikpOworfQorCit2b2lkIERPTVRva2VuTGlzdDo6cmVtb3ZlSW50ZXJuYWwo
Y29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKK3sKKyAgICAvLyBDaGVjayB1c2luZyBjb250YWlu
cyBmaXJzdCBzaW5jZSBpdCB1c2VzIEF0b21pY1N0cmluZyBjb21wYXJpc29ucyBpbnN0ZWFkCisg
ICAgLy8gb2YgY2hhcmFjdGVyIGJ5IGNoYXJhY3RlciB0ZXN0aW5nLgorICAgIGlmICghY29udGFp
bnNJbnRlcm5hbCh0b2tlbikpCisgICAgICAgIHJldHVybjsKKyAgICBzZXRWYWx1ZShyZW1vdmVU
b2tlbih2YWx1ZSgpLCB0b2tlbikpOworfQorCiBTdHJpbmcgRE9NVG9rZW5MaXN0OjphZGRUb2tl
bihjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0LCBjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQog
ewotICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0b2tlbjsKKyAgICBW
ZWN0b3I8U3RyaW5nPiB0b2tlbnM7CisgICAgdG9rZW5zLmFwcGVuZCh0b2tlbik7CisgICAgcmV0
dXJuIGFkZFRva2VucyhpbnB1dCwgdG9rZW5zKTsKK30KKworU3RyaW5nIERPTVRva2VuTGlzdDo6
YWRkVG9rZW5zKGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0b2tlbnMpCit7CisgICAgYm9vbCBuZWVkc1NwYWNlID0gZmFsc2U7CiAKICAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoaW5wdXQpOwotICAgIGlmICghaXNI
VE1MU3BhY2UoaW5wdXRbaW5wdXQubGVuZ3RoKCkgLSAxXSkpCi0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcgJyk7CisgICAgaWYgKCFpbnB1dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoaW5wdXQpOworICAgICAgICBuZWVkc1NwYWNlID0gIWlzSFRNTFNwYWNlKGlucHV0W2lu
cHV0Lmxlbmd0aCgpIC0gMV0pOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dG9rZW5zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChuZWVkc1NwYWNlKQorICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodG9rZW5zW2ld
KTsKKyAgICAgICAgbmVlZHNTcGFjZSA9IHRydWU7CisgICAgfQogCi0gICAgYnVpbGRlci5hcHBl
bmQodG9rZW4pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBE
T01Ub2tlbkxpc3Q6OnJlbW92ZVRva2VuKGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXQsIGNvbnN0
IEF0b21pY1N0cmluZyYgdG9rZW4pCiB7CisgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zOworICAg
IHRva2Vucy5hcHBlbmQodG9rZW4pOworICAgIHJldHVybiByZW1vdmVUb2tlbnMoaW5wdXQsIHRv
a2Vucyk7Cit9CisKK1N0cmluZyBET01Ub2tlbkxpc3Q6OnJlbW92ZVRva2Vucyhjb25zdCBBdG9t
aWNTdHJpbmcmIGlucHV0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zKQorewogICAgIC8v
IEFsZ29yaXRobSBkZWZpbmVkIGF0IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBw
cy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1vbi1taWNyb3N5bnRheGVzLmh0bWwjcmVtb3Zl
LWEtdG9rZW4tZnJvbS1hLXN0cmluZworICAgIC8vIE5ldyBzcGVjIGlzIGF0IGh0dHA6Ly9kb20u
c3BlYy53aGF0d2cub3JnLyNyZW1vdmUtYS10b2tlbi1mcm9tLWEtc3RyaW5nCiAKICAgICB1bnNp
Z25lZCBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwogICAgIFN0cmluZ0J1aWxkZXIgb3V0
cHV0OyAvLyAzCkBAIC04NSw3ICsyMDAsNyBAQCBTdHJpbmcgRE9NVG9rZW5MaXN0OjpyZW1vdmVU
b2tlbihjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0LCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAg
ICAgICAgICBzLmFwcGVuZChpbnB1dFtwb3NpdGlvbisrXSk7CiAKICAgICAgICAgLy8gU3RlcCA4
Ci0gICAgICAgIGlmIChzLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpID09IHRva2VuKSB7Cisg
ICAgICAgIGlmICh0b2tlbnMuY29udGFpbnMocy50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSkp
IHsKICAgICAgICAgICAgIC8vIFN0ZXAgOC4xCiAgICAgICAgICAgICB3aGlsZSAocG9zaXRpb24g
PCBpbnB1dExlbmd0aCAmJiBpc0hUTUxTcGFjZShpbnB1dFtwb3NpdGlvbl0pKQogICAgICAgICAg
ICAgICAgICsrcG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRv
a2VuTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAppbmRleCBmZDEx
MGI3ZmZkMDRmNjA5YzIwMzNlZDMyYTNiMjE2OTg4YWRkMzMxLi40YjI1ZGNlNWUzYzg5NzI0ZmE1
NTNiMGI3MTQ2N2U1MWE1NjMyYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVRva2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKQEAg
LTQ1LDE4ICs0NSwzMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyBpdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IEF0b21p
Y1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFk
ZChjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgdG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCA9IDA7CisKKyAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBib29sIHRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7CisKKyAgICBBdG9taWNTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgp
OyB9CiAKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1lbnQoKSB7IHJldHVybiAwOyB9CiAKIHBy
b3RlY3RlZDoKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyB2YWx1ZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJikgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIGFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZpcnR1
YWwgYm9vbCBjb250YWluc0ludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJik7CisK
ICAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZVRva2VuKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZVRva2Vucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBzdGF0aWMgU3RyaW5nIGFkZFRva2VuKGNv
bnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHN0YXRpYyBTdHJp
bmcgYWRkVG9rZW5zKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7
CiAgICAgc3RhdGljIFN0cmluZyByZW1vdmVUb2tlbihjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBBdG9taWNTdHJpbmcmKTsKKyAgICBzdGF0aWMgU3RyaW5nIHJlbW92ZVRva2Vucyhjb25zdCBB
dG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3Qu
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsCmluZGV4IGNmNTdlMWFl
ZWY5NmUyOTY3NTAwZWUxN2U1MGY0MmZkMDg5YzY3MmIuLjg1ZWYxMDkyYzcxYTExOTMyYWQwZTdh
NTZjYTQzYTU1NWFiZDA4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9r
ZW5MaXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwKQEAg
LTMxLDggKzMxLDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0Fz
PU51bGxdIERPTVN0cmluZyBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgICAgICBi
b29sZWFuIGNvbnRhaW5zKGluIERPTVN0cmluZyB0b2tlbikgcmFpc2VzKERPTUV4Y2VwdGlvbik7
Ci0gICAgICAgIHZvaWQgYWRkKGluIERPTVN0cmluZyB0b2tlbikgcmFpc2VzKERPTUV4Y2VwdGlv
bik7Ci0gICAgICAgIHZvaWQgcmVtb3ZlKGluIERPTVN0cmluZyB0b2tlbikgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIHZvaWQgYWRkKGluIERPTVN0cmluZy4uLiB0b2tlbnMpIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHJlbW92ZShpbiBET01TdHJpbmcuLi4gdG9r
ZW5zKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgYm9vbGVhbiB0b2dnbGUoaW4gRE9N
U3RyaW5nIHRva2VuKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogI2lmIGRlZmluZWQoTEFOR1VB
R0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk1NTA3ZTFjMzI5
MmQyOWMyNDI2MWY3NmZlNjk3MDhhNTlkMWJlYTUuLmNiMmNiODVlZDk0NDI2N2IzMTgzMDM3Yjhj
YjY3NTYwNDJjOGZjMjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0wOS0yNiAgRXJpayBB
cnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERPTTQ6IEFkZCBzdXBwb3J0
IGZvciByZXN0IHBhcmFtZXRlcnMgdG8gRE9NVG9rZW5MaXN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzMzNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciByZXN0IHBh
cmFtYXRlcnMgdG8gRE9NVG9rZW5MaXN0IGFkZCBhbmQgcmVtb3ZlLgorICAgICAgICBodHRwOi8v
ZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tdG9rZW5saXN0CisKKyAgICAgICAgVGhlIGNvZGUgZ2Vu
ZXJhdG9yIGhhcyBiZWVuIHVwZGF0ZWQgdG8gdW5kZXJzdGFuZCB2YXJpYWRpYyBtZXRob2RzLgor
ICAgICAgICBXaGVuIGEgbWV0aG9kIGhhcyBhIHJlc3QgcGFyYW1ldGVyIHRoZSByZW1haW5pbmcg
YXJndW1lbnRzIGFyZSBjb2xsZWN0ZWQKKyAgICAgICAgaW50byBhIFdURjo6VmVjdG9yLgorCisg
ICAgICAgIERPTVRva2VuTGlzdCwgRE9NU2V0dGFibGVUb2tlbkxpc3QgYW5kIENsYXNzTGlzdCB3
ZXJlIHJlc3RydWN0dXJlZCBhIGJpdCB0bworICAgICAgICBhbGxvdyBjb2RlIHRvIGJlIHNoYXJl
ZCBiZXR0ZXIuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LXF1
aXJrcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvc2NyaXB0
LXRlc3RzL2NsYXNzLWxpc3QuanM6CisgICAgICAgIChlbGVtZW50LmNsYXNzTGlzdC5hZGQpOgor
ICAgICAgICAoY3JlYXRlRWxlbWVudCk6CisgICAgICAgIChzaG91bGRCZUVxdWFsVG9TdHJpbmcp
OgorICAgICAgICAoZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKToKKwogMjAxMi0wOS0yNCAgUm9n
ZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJl
bW92aW5nIFdpbmRvd3Mgc3BlY2lmaWMgcmVzdWx0cyBmb3IgZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvZmxvYXQtYXMtb25seS1jaGlsZC1vZi1pc29sYXRlLWNyYXNoIHRoYXQgd2VyZSBhZGRlZCBp
biBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc5OTguCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtZXhwZWN0
ZWQudHh0CmluZGV4IDcxNjRkNGJmOGJiMjI3OTQ2MjQ4MzkxMzkwMjNjMTYyOWMwYzhjYjcuLmU0
MWRkODhhZWIwZTY2MjUwZDc1NDdlODQ5ZTYwYzY2M2IxMjAxY2EgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtZXhwZWN0ZWQudHh0
CkBAIC0zMSwxMCArMzEsOCBAQCBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCcnKSB0
aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEyCiBQQVNTIGVsZW1lbnQuY2xh
c3NMaXN0LmNvbnRhaW5zKCd4IHknKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBj
b2RlIDUKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCcnKSB0aHJldyBleHBlY3RlZCBET01F
eGNlcHRpb24gd2l0aCBjb2RlIDEyCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgneCB5Jykg
dGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1Ci1QQVNTIGVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzLgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJycpIHRocmV3IGV4cGVjdGVkIERP
TUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd4
IHknKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDUKLVBBU1MgZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMuCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgnJykgdGhyZXcgZXhw
ZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC50
b2dnbGUoJ3ggeScpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQogUEFT
UyBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBO
b3QgZW5vdWdoIGFyZ3VtZW50cy4KQEAgLTc0LDYgKzcyLDI2IEBAIFBBU1MgZWxlbWVudC5jbGFz
c0xpc3QuY29uc3RydWN0b3IgaXMgRE9NVG9rZW5MaXN0CiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0
ID09PSBlbGVtZW50LmNsYXNzTGlzdCBpcyB0cnVlCiBQQVNTIGRvY3VtZW50LmJvZHkuY2xhc3NM
aXN0LmNvbnRhaW5zKCJGQUlMIikgaXMgdHJ1ZQogUEFTUyBkb2N1bWVudC5ib2R5LmNsYXNzTmFt
ZSBpcyAiIgorVmFyaWFkaWMgY2FsbHMKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiIK
K1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiBjIgorUEFTUyBlbGVtZW50LmNsYXNzTmFt
ZSBpcyAiYSBiIGMgbnVsbCBkIHVuZGVmaW5lZCAwIGZhbHNlIgorUEFTUyBlbGVtZW50LmNsYXNz
TmFtZSBpcyAiYSBiIGEiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYScsICdiJywgJycp
IHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKK1BBU1MgZWxlbWVudC5j
bGFzc05hbWUgaXMgIiIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhJywgJ2InLCAnYyBk
JykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1CitQQVNTIGVsZW1lbnQu
Y2xhc3NOYW1lIGlzICIiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgpIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBvYnNlcnZlci50YWtlUmVjb3JkcygpLmxlbmd0aCBpcyAxCitQ
QVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJiIGQgICIKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUg
aXMgImQgICIKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiBjIgorUEFTUyBlbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoJ2EnLCAnYicsICcnKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRp
b24gd2l0aCBjb2RlIDEyCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIiCitQQVNTIGVs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnYScsICdiJywgJ2MgZCcpIHRocmV3IGV4cGVjdGVkIERP
TUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBiIgor
UEFTUyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1Mgb2JzZXJ2ZXIudGFrZVJlY29yZHMoKS5sZW5ndGggaXMgMQogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LXF1aXJrcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LXF1aXJrcy1leHBlY3Rl
ZC50eHQKaW5kZXggNzE2NGQ0YmY4YmIyMjc5NDYyNDgzOTEzOTAyM2MxNjI5YzBjOGNiNy4uZTQx
ZGQ4OGFlYjBlNjYyNTBkNzU0N2U4NDllNjBjNjYzYjEyMDFjYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvY2xhc3MtbGlzdC1xdWlya3MtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtcXVpcmtz
LWV4cGVjdGVkLnR4dApAQCAtMzEsMTAgKzMxLDggQEAgUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucygnJykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgogUEFT
UyBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygneCB5JykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhj
ZXB0aW9uIHdpdGggY29kZSA1CiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnJykgdGhyZXcg
ZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgogUEFTUyBlbGVtZW50LmNsYXNzTGlz
dC5hZGQoJ3ggeScpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQotUEFT
UyBlbGVtZW50LmNsYXNzTGlzdC5hZGQoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3Qg
ZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCcnKSB0aHJl
dyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEyCiBQQVNTIGVsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgneCB5JykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1
Ci1QQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUo
JycpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKIFBBU1MgZWxlbWVu
dC5jbGFzc0xpc3QudG9nZ2xlKCd4IHknKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0
aCBjb2RlIDUKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCkBAIC03NCw2ICs3MiwyNiBAQCBQQVNT
IGVsZW1lbnQuY2xhc3NMaXN0LmNvbnN0cnVjdG9yIGlzIERPTVRva2VuTGlzdAogUEFTUyBlbGVt
ZW50LmNsYXNzTGlzdCA9PT0gZWxlbWVudC5jbGFzc0xpc3QgaXMgdHJ1ZQogUEFTUyBkb2N1bWVu
dC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygiRkFJTCIpIGlzIHRydWUKIFBBU1MgZG9jdW1lbnQu
Ym9keS5jbGFzc05hbWUgaXMgIiIKK1ZhcmlhZGljIGNhbGxzCitQQVNTIGVsZW1lbnQuY2xhc3NO
YW1lIGlzICJhIGIiCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIgYyIKK1BBU1MgZWxl
bWVudC5jbGFzc05hbWUgaXMgImEgYiBjIG51bGwgZCB1bmRlZmluZWQgMCBmYWxzZSIKK1BBU1Mg
ZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiBhIgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5hZGQo
J2EnLCAnYicsICcnKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEyCitQ
QVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICIiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgn
YScsICdiJywgJ2MgZCcpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQor
UEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiIgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5hZGQo
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgb2JzZXJ2ZXIudGFrZVJlY29yZHMoKS5s
ZW5ndGggaXMgMQorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYiBkICAiCitQQVNTIGVsZW1l
bnQuY2xhc3NOYW1lIGlzICJkICAiCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIgYyIK
K1BBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhJywgJ2InLCAnJykgdGhyZXcgZXhwZWN0
ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAi
YSBiIgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2EnLCAnYicsICdjIGQnKSB0aHJl
dyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDUKK1BBU1MgZWxlbWVudC5jbGFzc05h
bWUgaXMgImEgYiIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIG9ic2VydmVyLnRha2VSZWNvcmRzKCkubGVuZ3RoIGlzIDEKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvc2NyaXB0LXRlc3RzL2NsYXNzLWxp
c3QuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9zY3JpcHQtdGVzdHMvY2xh
c3MtbGlzdC5qcwppbmRleCAzMjE5MGJiN2E1MjczZTk4NmI2ZGM3NzhhNzYyMTU0YzI5YWU3N2Nh
Li40ZWYyYTVjNmU1NTE3MjUyODdjNjNlMGZjMzI3MzI0ZDFkNWRmYzBjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9zY3JpcHQtdGVzdHMvY2xhc3MtbGlzdC5q
cworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9zY3JpcHQtdGVzdHMvY2xh
c3MtbGlzdC5qcwpAQCAtMTU0LDkgKzE1NCw2IEBAIHNob3VsZFRocm93RE9NRXhjZXB0aW9uKGZ1
bmN0aW9uKCkgewogfSwgRE9NRXhjZXB0aW9uLklOVkFMSURfQ0hBUkFDVEVSX0VSUik7CiAKIGNy
ZWF0ZUVsZW1lbnQoJycpOwotc2hvdWxkVGhyb3coImVsZW1lbnQuY2xhc3NMaXN0LmFkZCgpIik7
Ci0KLWNyZWF0ZUVsZW1lbnQoJycpOwogc2hvdWxkVGhyb3dET01FeGNlcHRpb24oZnVuY3Rpb24o
KSB7CiAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCcnKTsKIH0sIERPTUV4Y2VwdGlvbi5T
WU5UQVhfRVJSKTsKQEAgLTE2Niw4ICsxNjMsNyBAQCBzaG91bGRUaHJvd0RPTUV4Y2VwdGlvbihm
dW5jdGlvbigpIHsKICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3ggeScpOwogfSwgRE9N
RXhjZXB0aW9uLklOVkFMSURfQ0hBUkFDVEVSX0VSUik7CiAKLWNyZWF0ZUVsZW1lbnQoJycpOwot
c2hvdWxkVGhyb3coImVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgpIik7CisKIAogY3JlYXRlRWxl
bWVudCgnJyk7CiBzaG91bGRUaHJvd0RPTUV4Y2VwdGlvbihmdW5jdGlvbigpIHsKQEAgLTI2NSwz
ICsyNjEsNzIgQEAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdGQUlMJyk7CiBzaG91bGRC
ZVRydWUoJ2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJGQUlMIiknKTsKIGRvY3Vt
ZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnRkFJTCcpOwogc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdkb2N1bWVudC5ib2R5LmNsYXNzTmFtZScsICcnKTsKKworLy8gVmFyaWFkaWMKKworZGVidWco
J1ZhcmlhZGljIGNhbGxzJyk7CisKK2NyZWF0ZUVsZW1lbnQoJycpOworZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCdhJywgJ2InKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZWxlbWVudC5jbGFzc05h
bWUnLCAnYSBiJyk7CisKK2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYScsICdiJywgJ2MnKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygnZWxlbWVudC5jbGFzc05hbWUnLCAnYSBiIGMnKTsKKworZWxl
bWVudC5jbGFzc0xpc3QuYWRkKG51bGwsIHt0b1N0cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAn
ZCcgfX0sIHVuZGVmaW5lZCwgMCwgZmFsc2UpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVt
ZW50LmNsYXNzTmFtZScsICdhIGIgYyBudWxsIGQgdW5kZWZpbmVkIDAgZmFsc2UnKTsKKworY3Jl
YXRlRWxlbWVudCgnJyk7CitlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2EnLCAnYicsICdhJyk7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VsZW1lbnQuY2xhc3NOYW1lJywgJ2EgYiBhJyk7CisKK2Ny
ZWF0ZUVsZW1lbnQoJycpOworc2hvdWxkVGhyb3dET01FeGNlcHRpb24oZnVuY3Rpb24oKSB7Cisg
ICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhJywgJ2InLCAnJyk7Cit9LCBET01FeGNlcHRpb24u
U1lOVEFYX0VSUik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VsZW1lbnQuY2xhc3NOYW1lJywg
JycpOworCitzaG91bGRUaHJvd0RPTUV4Y2VwdGlvbihmdW5jdGlvbigpIHsKKyAgICBlbGVtZW50
LmNsYXNzTGlzdC5hZGQoJ2EnLCAnYicsICdjIGQnKTsKK30sIERPTUV4Y2VwdGlvbi5JTlZBTElE
X0NIQVJBQ1RFUl9FUlIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNzTmFt
ZScsICcnKTsKKworY3JlYXRlRWxlbWVudCgnJyk7CitzaG91bGROb3RUaHJvdygnZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCknKTsKKworY3JlYXRlRWxlbWVudCgnJyk7Cit2YXIgb2JzZXJ2ZXIgPSBu
ZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpIHt9KTsKK29ic2VydmVyLm9ic2Vy
dmUoZWxlbWVudCwge2F0dHJpYnV0ZXM6IHRydWV9KTsKK2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgn
YScsICdjJyk7CitzaG91bGRCZSgnb2JzZXJ2ZXIudGFrZVJlY29yZHMoKS5sZW5ndGgnLCAnMScp
OworCisKK2NyZWF0ZUVsZW1lbnQoJ2EgYiBjIGQgICcpOworZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKCdhJywgJ2MnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZWxlbWVudC5jbGFzc05hbWUn
LCAnYiBkICAnKTsKKworZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdiJywgJ2InKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygnZWxlbWVudC5jbGFzc05hbWUnLCAnZCAgJyk7CisKK2NyZWF0ZUVs
ZW1lbnQoJ2EgYiBjIG51bGwgZCB1bmRlZmluZWQgMCBmYWxzZScpOworZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKG51bGwsIHt0b1N0cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAnZCcgfX0sIHVu
ZGVmaW5lZCwgMCwgZmFsc2UpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNz
TmFtZScsICdhIGIgYycpOworCitjcmVhdGVFbGVtZW50KCdhIGInKTsKK3Nob3VsZFRocm93RE9N
RXhjZXB0aW9uKGZ1bmN0aW9uKCkgeworICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnYScs
ICdiJywgJycpOworfSwgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdlbGVtZW50LmNsYXNzTmFtZScsICdhIGInKTsKKworc2hvdWxkVGhyb3dET01FeGNl
cHRpb24oZnVuY3Rpb24oKSB7CisgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhJywgJ2In
LCAnYyBkJyk7Cit9LCBET01FeGNlcHRpb24uSU5WQUxJRF9DSEFSQUNURVJfRVJSKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygnZWxlbWVudC5jbGFzc05hbWUnLCAnYSBiJyk7CisKK3Nob3VsZE5v
dFRocm93KCdlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoKScpOworCitjcmVhdGVFbGVtZW50KCdh
IGIgYycpOworb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigp
IHt9KTsKK29ic2VydmVyLm9ic2VydmUoZWxlbWVudCwge2F0dHJpYnV0ZXM6IHRydWV9KTsKK2Vs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnYScsICdjJyk7CitzaG91bGRCZSgnb2JzZXJ2ZXIudGFr
ZVJlY29yZHMoKS5sZW5ndGgnLCAnMScpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165876</attachid>
            <date>2012-09-26 14:28:34 -0700</date>
            <delta_ts>2012-09-27 07:52:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97335-20120926172752.patch</filename>
            <type>text/plain</type>
            <size>67607</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Mzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRkNGFlZmM1NGQxNjM3
ODY4ZGM0ZWEyMzVkOTM3MjIzYTVjODQ0Yy4uOTEyNzE2ZjM1ZTUzMDdhZDk5Y2I3MjQyYjkwOTgw
MGNmMDBiNjk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wOS0yNiAgRXJp
ayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERPTTQ6IEFkZCBzdXBw
b3J0IGZvciByZXN0IHBhcmFtZXRlcnMgdG8gRE9NVG9rZW5MaXN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzMzNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciByZXN0
IHBhcmFtYXRlcnMgdG8gRE9NVG9rZW5MaXN0IGFkZCBhbmQgcmVtb3ZlLgorICAgICAgICBodHRw
Oi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tdG9rZW5saXN0CisKKyAgICAgICAgVGhlIGNvZGUg
Z2VuZXJhdG9yIGhhcyBiZWVuIHVwZGF0ZWQgdG8gdW5kZXJzdGFuZCB2YXJpYWRpYyBtZXRob2Rz
LgorICAgICAgICBXaGVuIGEgbWV0aG9kIGhhcyBhIHJlc3QgcGFyYW1ldGVyIHRoZSByZW1haW5p
bmcgYXJndW1lbnRzIGFyZSBjb2xsZWN0ZWQKKyAgICAgICAgaW50byBhIFdURjo6VmVjdG9yLgor
CisgICAgICAgIERPTVRva2VuTGlzdCwgRE9NU2V0dGFibGVUb2tlbkxpc3QgYW5kIENsYXNzTGlz
dCB3ZXJlIHJlc3RydWN0dXJlZCBhIGJpdCB0bworICAgICAgICBhbGxvdyBjb2RlIHRvIGJlIHNo
YXJlZCBiZXR0ZXIuCisKKyAgICAgICAgVXBkYXRlZCBleGlzdGluZyB0ZXN0cyBhbmQgaW5jbHVk
ZXMgbmV3IGJpbmRpbmcgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZlQXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b05hdGl2ZUFyZ3VtZW50cyk6IFNpbWlsYXIgdG8gdG9O
YXRpdmVBcnJheSBidXQgZXh0cmFjdHMgdGhlIGFyZ3VtZW50cyBpbnN0ZWFkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVB
cmd1bWVudHNDb3VudENoZWNrKTogVXBkYXRlZCB0byB0cmVhdCByZXN0IHBhcmFtYXRlcnMgYXMg
b3B0aW9uYWwuCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6IEdlbmVyYXRlIGNv
ZGUgZm9yIHJlc3QgcGFyYW1zLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvblBhcmFtZXRlcnNDaGVjayk6IFVw
ZGF0ZWQgdG8gdHJlYXQgcmVzdCBwYXJhbWF0ZXJzIGFzIG9wdGlvbmFsLgorICAgICAgICAoR2Vu
ZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjayk6ICBHZW5lcmF0ZSBjb2RlIGZvciByZXN0IHBhcmFtcy4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKHBhcnNlUGFyYW1ldGVycyk6
IFdoZW4gYSBwYXJhbWV0ZXIgaXMgZGVmaW5lZCBhcyBULi4uIHdlIHNldCBpc1ZhcmlhZGljIHRv
IHRydWUuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG06CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkRPTVRlc3RPYmo6OnZhcmlhZGljU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkRP
TVRlc3RPYmo6OnZhcmlhZGljRG91YmxlTWV0aG9kKToKKyAgICAgICAgKFdlYkRPTVRlc3RPYmo6
OnZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3Zh
cmlhZGljX3N0cmluZ19tZXRob2QpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial92YXJp
YWRpY19kb3VibGVfbWV0aG9kKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFk
aWNfbm9kZV9tZXRob2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2Rl
TWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE9iai5tbToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiB2YXJpYWRpY1N0cmluZ01ldGhvZDp0
YWlsOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHZhcmlhZGljRG91YmxlTWV0aG9kOnRhaWw6
XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogdmFyaWFkaWNOb2RlTWV0aG9kOnRhaWw6XSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljU3RyaW5nTWV0aG9kQ2FsbGJhY2spOgorICAgICAg
ICAoVGVzdE9ialY4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnZhcmlhZGljRG91YmxlTWV0aG9kQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OnZhcmlhZGljTm9kZU1ldGhvZENhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6dG9O
YXRpdmVBcnJheSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0
aXZlQXJndW1lbnRzKTogU2ltaWxhciB0byB0b05hdGl2ZUFycmF5IGJ1dCBleHRyYWN0cyB0aGUg
YXJndW1lbnRzIGluc3RlYWQuCisgICAgICAgICogaHRtbC9DbGFzc0xpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xhc3NMaXN0OjpDbGFzc0xpc3QpOgorICAgICAgICAqIGh0bWwvQ2xhc3NM
aXN0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENsYXNzTGlzdCk6CisgICAgICAg
ICogaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01T
ZXR0YWJsZVRva2VuTGlzdDo6Y29udGFpbnNJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01TZXR0YWJsZVRva2VuTGlzdDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNldHRhYmxl
VG9rZW5MaXN0OjphZGRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZXR0YWJsZVRv
a2VuTGlzdDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNldHRhYmxlVG9rZW5MaXN0
OjpyZW1vdmVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpET01TZXR0YWJsZVRva2VuTGlz
dDo6c2V0VmFsdWUpOgorICAgICAgICAqIGh0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaDoKKyAg
ICAgICAgKERPTVNldHRhYmxlVG9rZW5MaXN0KToKKyAgICAgICAgKiBodG1sL0RPTVRva2VuTGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnZhbGlkYXRlVG9rZW5zKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojpjb250
YWlucyk6IE1vdmVkIGltcGxlbWVudGF0aW9uIHRvIGJhc2UgY2xhc3MgdG8gYWxsb3cgY29kZSBz
aGFyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjphZGQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6cmVtb3ZlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnRvZ2dsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RE9NVG9rZW5MaXN0OjphZGRJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9N
VG9rZW5MaXN0OjpyZW1vdmVJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9N
VG9rZW5MaXN0OjphZGRUb2tlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5M
aXN0OjphZGRUb2tlbnMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjpyZW1vdmVU
b2tlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0OjpyZW1vdmVUb2tl
bnMpOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0Lmg6CisgICAgICAgIChET01Ub2tlbkxp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojp0b1N0cmluZyk6CisgICAgICAg
ICogaHRtbC9ET01Ub2tlbkxpc3QuaWRsOgorCiAyMDEyLTA5LTI0ICBUb21teSBXaWRlbmZseWNo
dCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogRml4IHRo
ZSBpbmNvcnJlY3RseSBzcGVsbGVkIFJUQ1BlZXJDb25uZWN0aW9uOjpvbm5lZ290aWF0aW9ubmVl
ZGVkIGNhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmlu
ZGV4IDc1MzJiNzkzZTcyOGQwZDhiYzFhZTJkNWMzZTJhMTJlOTA5NzEzOTAuLjFlZmE0YjMwNGY2
MmI3MDE1ZWExZTVkZTcxYzJlYzhkZTRiYzU4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCkBAIC0zNTMsNyArMzUzLDcgQEAgZW51bSBQYXJhbWV0ZXJEZWZh
dWx0UG9saWN5IHsKIAogICAgIHRlbXBsYXRlPD4KICAgICBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFp
dHM8U3RyaW5nPiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhcnJheU5hdGl2ZVZhbHVl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgU3RyaW5nJiBpbmRl
eGVkVmFsdWUpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIFN0cmluZyYgaW5kZXhlZFZhbHVl
KQogICAgICAgICB7CiAgICAgICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzYyLDcg
KzM2Miw3IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAKICAgICB0ZW1wbGF0ZTw+
CiAgICAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPHVuc2lnbmVkIGxvbmc+IHsKLSAgICAgICAg
c3RhdGljIGlubGluZSBib29sIGFycmF5TmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCB1bnNpZ25lZCBsb25nJiBpbmRleGVkVmFsdWUpCisgICAg
ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU1ZhbHVlIGpzVmFsdWUsIHVuc2lnbmVkIGxvbmcmIGluZGV4ZWRWYWx1ZSkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFqc1ZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVs
dFBvbGljeSB7CiAKICAgICB0ZW1wbGF0ZTw+CiAgICAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRz
PGZsb2F0PiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhcnJheU5hdGl2ZVZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgZmxvYXQmIGluZGV4ZWRW
YWx1ZSkKKyAgICAgICAgc3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgZmxvYXQmIGluZGV4ZWRWYWx1ZSkKICAg
ICAgICAgewogICAgICAgICAgICAgaW5kZXhlZFZhbHVlID0ganNWYWx1ZS50b0Zsb2F0KGV4ZWMp
OwogICAgICAgICAgICAgcmV0dXJuICFleGVjLT5oYWRFeGNlcHRpb24oKTsKQEAgLTQwMCw3ICs0
MDAsMjUgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKIAogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIFQgaW5kZXhWYWx1
ZTsKLSAgICAgICAgICAgIGlmICghVHJhaXRzVHlwZTo6YXJyYXlOYXRpdmVWYWx1ZShleGVjLCBv
YmplY3QtPmdldChleGVjLCBpKSwgaW5kZXhWYWx1ZSkpCisgICAgICAgICAgICBpZiAoIVRyYWl0
c1R5cGU6Om5hdGl2ZVZhbHVlKGV4ZWMsIG9iamVjdC0+Z2V0KGV4ZWMsIGkpLCBpbmRleFZhbHVl
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7CisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGluZGV4VmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgVmVjdG9yPFQ+IHRvTmF0aXZl
QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3Qgc3RhcnRJbmRleCA9IDApCisg
ICAgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAg
ICAgICBBU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOworCisgICAgICAgIFZlY3RvcjxUPiBy
ZXN1bHQ7CisgICAgICAgIHR5cGVkZWYgTmF0aXZlVmFsdWVUcmFpdHM8VD4gVHJhaXRzVHlwZTsK
KworICAgICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICBUIGluZGV4VmFsdWU7CisgICAgICAgICAgICBpZiAoIVRyYWl0c1R5cGU6
Om5hdGl2ZVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KGkpLCBpbmRleFZhbHVlKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KGluZGV4VmFsdWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGUzNzY2ZDNiYTc2NDRmYzIyMDFmMDQ2
MWY4Mjc4NGI1Njc1OWIxNmUuLmQ5YzI2ZDE0ZDc1YWUzZDA0NjFiZjk0MmQ1ZTAyOWZjM2RmMzE3
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC0yNjA0LDcgKzI2MDQsNyBAQCBzdWIgR2VuZXJhdGVBcmd1bWVudHNDb3Vu
dENoZWNrCiAKICAgICBteSAkbnVtTWFuZGF0b3J5UGFyYW1zID0gQHskZnVuY3Rpb24tPnBhcmFt
ZXRlcnN9OwogICAgIGZvcmVhY2ggbXkgJHBhcmFtIChyZXZlcnNlKEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfSkpIHsKLSAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9w
dGlvbmFsIn0pIHsKKyAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9w
dGlvbmFsIn0gb3IgJHBhcmFtLT5pc1ZhcmlhZGljKSB7CiAgICAgICAgICAgICAkbnVtTWFuZGF0
b3J5UGFyYW1zLS07CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsYXN0OwpAQCAtMjcw
NywxMyArMjcwNywzOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRhcmdUeXBlPiAkbmFtZSA9ICR7
Y2FsbGJhY2tDbGFzc05hbWV9OjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoJGFyZ3NJ
bmRleCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7XG4iKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNsYW1w
In0pIHsKLSAgICAgICAgICAgICAgICBteSAkbmF0aXZlVmFsdWUgPSAiJHtuYW1lfU5hdGl2ZVZh
bHVlIjsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJGFyZ1R5cGUg
JG5hbWUgPSAwO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGRvdWJsZSAkbmF0aXZlVmFsdWUgPSBleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS50b051bWJl
cihleGVjKTtcbiIpOworICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVlID0gIiR7bmFtZX1OYXRp
dmVWYWx1ZSI7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJGFyZ1R5cGUg
JG5hbWUgPSAwO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZG91
YmxlICRuYXRpdmVWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpLnRvTnVtYmVyKGV4
ZWMpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG5cbiIpOworICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghaXNuYW4oJG5hdGl2ZVZhbHVl
KSlcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZSA9
IGNsYW1wVG88JGFyZ1R5cGU+KCRuYXRpdmVWYWx1ZSk7XG5cbiIpOworICAgICAgICB9IGVsc2lm
ICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7CisgICAgICAgICAgICBteSAkbmF0aXZlRWxlbWVu
dFR5cGU7CisgICAgICAgICAgICBpZiAoJGFyZ1R5cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAg
ICAgICAgICAgICAkbmF0aXZlRWxlbWVudFR5cGUgPSAiU3RyaW5nIjsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgJG5hdGl2ZUVsZW1lbnRUeXBlID0gR2V0TmF0aXZlVHlw
ZSgkYXJnVHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKCRuYXRpdmVFbGVtZW50VHlwZSA9fiAv
PiQvKSB7CisgICAgICAgICAgICAgICAgICAgICRuYXRpdmVFbGVtZW50VHlwZSA9ICRuYXRpdmVF
bGVtZW50VHlwZSAuICIgIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghSXNOYXRpdmVUeXBlKCRhcmdUeXBlKSkgeworICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWZWN0b3I8JG5hdGl2ZUVsZW1lbnRUeXBlPiAkbmFt
ZTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBmb3IgKHVu
c2lnbmVkIGkgPSAkYXJnc0luZGV4OyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFl
eGVjLT5hcmd1bWVudChpKS5pbmhlcml0cygmSlMke2FyZ1R5cGV9OjpzX2luZm8pKVxuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgICRuYW1lLmFwcGVuZCh0byRhcmdUeXBlKGV4ZWMtPmFyZ3VtZW50KGkp
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIikK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRuYW1lID0gdG9OYXRpdmVBcmd1bWVu
dHM8JG5hdGl2ZUVsZW1lbnRUeXBlPihleGVjLCAkYXJnc0luZGV4KTtcbiIpOworICAgICAgICAg
ICAgICAgICMgQ2hlY2sgaWYgdGhlIHR5cGUgY29udmVyc2lvbiBzdWNjZWVkZWQuCiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcblxuIik7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghaXNuYW4oJG5hdGl2ZVZhbHVlKSlcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUgPSBj
bGFtcFRvPCRhcmdUeXBlPigkbmF0aXZlVmFsdWUpO1xuXG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7XG4iKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlz
IHByZXNlbnQsIGFuZCB0aGUgYXJndW1lbnQncyB0eXBlIGlzIGFuCiAgICAgICAgICAgICAjIGlu
dGVyZmFjZSB0eXBlLCB0aGVuIGlmIHRoZSBpbmNvbWluZyB2YWx1ZSBkb2VzIG5vdCBpbXBsZW1l
bnQgdGhhdCBpbnRlcmZhY2UsIGEgVHlwZUVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDA2ODEwNTYwMDYzMjFjYmEy
MTcwMDI0NTM4YWJkMDE3NWZkMmEwZTIuLjQxMWMwZDkxZDIxM2ZhM2FmZTJjNzYzNWQ2YTYyYmU2
MDQ0ZjBhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCkBAIC0xNDA1LDE1ICsxNDA1LDIyIEBAIHN1YiBHZW5lcmF0ZUZ1bmN0
aW9uUGFyYW1ldGVyc0NoZWNrCiAKICAgICBteSBAb3JFeHByZXNzaW9uID0gKCk7CiAgICAgbXkg
JG51bVBhcmFtZXRlcnMgPSAwOworICAgIG15ICRoYXNWYXJpYWRpYyA9IDA7CiAgICAgbXkgJG51
bU1hbmRhdG9yeVBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKICAgICBmb3JlYWNo
IG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewogICAgICAgICBpZiAo
JHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKICAgICAgICAg
ICAgIHB1c2goQG9yRXhwcmVzc2lvbiwgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9u
KCRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb24pKTsKICAgICAgICAgICAgICRudW1NYW5kYXRvcnlQ
YXJhbXMtLTsKICAgICAgICAgfQorICAgICAgICBpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykg
eworICAgICAgICAgICAgJGhhc1ZhcmlhZGljID0gMTsKKyAgICAgICAgICAgIGxhc3Q7CisgICAg
ICAgIH0KICAgICAgICAgJG51bVBhcmFtZXRlcnMrKzsKICAgICB9Ci0gICAgcHVzaChAb3JFeHBy
ZXNzaW9uLCBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24oJG51bVBhcmFtZXRlcnMs
ICRmdW5jdGlvbikpOworICAgIGlmICghJGhhc1ZhcmlhZGljKSB7CisgICAgICAgIHB1c2goQG9y
RXhwcmVzc2lvbiwgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uKCRudW1QYXJhbWV0
ZXJzLCAkZnVuY3Rpb24pKTsKKyAgICB9CiAgICAgcmV0dXJuICgkbnVtTWFuZGF0b3J5UGFyYW1z
LCBqb2luKCIgfHwgIiwgQG9yRXhwcmVzc2lvbikpOwogfQogCkBAIC0xNjI0LDEyICsxNjMxLDEy
IEBAIHN1YiBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sKICAgICBteSAkZGF0YU5vZGUgPSBz
aGlmdDsKIAogICAgIG15ICRudW1NYW5kYXRvcnlQYXJhbXMgPSAwOwotICAgIG15ICRvcHRpb25h
bFNlZW4gPSAwOworICAgIG15ICRhbGxvd05vbk9wdGlvbmFsID0gMTsKICAgICBmb3JlYWNoIG15
ICRwYXJhbSAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAgIGlmICgkcGFyYW0t
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAgICAgICAgICAkb3B0aW9u
YWxTZWVuID0gMTsKKyAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9w
dGlvbmFsIn0gb3IgJHBhcmFtLT5pc1ZhcmlhZGljKSB7CisgICAgICAgICAgICAkYWxsb3dOb25P
cHRpb25hbCA9IDA7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkaWUgIkFuIGFyZ3Vt
ZW50IG11c3Qgbm90IGJlIGRlY2xhcmVkIHRvIGJlIG9wdGlvbmFsIHVubGVzcyBhbGwgc3Vic2Vx
dWVudCBhcmd1bWVudHMgdG8gdGhlIG9wZXJhdGlvbiBhcmUgYWxzbyBvcHRpb25hbC4iIGlmICRv
cHRpb25hbFNlZW47CisgICAgICAgICAgICBkaWUgIkFuIGFyZ3VtZW50IG11c3Qgbm90IGJlIGRl
Y2xhcmVkIHRvIGJlIG9wdGlvbmFsIHVubGVzcyBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgdG8g
dGhlIG9wZXJhdGlvbiBhcmUgYWxzbyBvcHRpb25hbC4iIGlmICEkYWxsb3dOb25PcHRpb25hbDsK
ICAgICAgICAgICAgICRudW1NYW5kYXRvcnlQYXJhbXMrKzsKICAgICAgICAgfQogICAgIH0KQEAg
LTE3NjAsNiArMTc2NywyMyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAg
ICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hf
RVJSO1xuIjsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBn
b3RvIGZhaWw7XG4iOwogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAg
fVxuIjsKKyAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykgeworICAgICAg
ICAgICAgbXkgJG5hdGl2ZUVsZW1lbnRUeXBlID0gR2V0TmF0aXZlVHlwZSgkcGFyYW1ldGVyLT50
eXBlKTsKKyAgICAgICAgICAgIGlmICgkbmF0aXZlRWxlbWVudFR5cGUgPX4gLz4kLykgeworICAg
ICAgICAgICAgICAgICRuYXRpdmVFbGVtZW50VHlwZSA9ICRuYXRpdmVFbGVtZW50VHlwZSAuICIg
IjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbXkgJGFyZ1R5cGUgPSBHZXRUeXBlRnJv
bVNpZ25hdHVyZSgkcGFyYW1ldGVyKTsKKyAgICAgICAgICAgIGlmIChJc1dyYXBwZXJUeXBlKCRh
cmdUeXBlKSkgeworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
IFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRwYXJhbWV0ZXJOYW1lO1xuIjsKKyAgICAgICAg
ICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBmb3IgKGludCBpID0gJHBhcmFt
SW5kZXg7IGkgPCBhcmdzLkxlbmd0aCgpOyArK2kpIHtcbiI7CisgICAgICAgICAgICAgICAgJHBh
cmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGlmICghVjgke2FyZ1R5cGV9OjpIYXNJbnN0
YW5jZShhcmdzW2ldKSlcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRl
KCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAg
ICAgJHBhcmFtZXRlck5hbWUuYXBwZW5kKFY4JHthcmdUeXBlfTo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzW2ldKSkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFy
YW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBFWENFUFRJT05fQkxP
Q0soVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4sICRwYXJhbWV0ZXJOYW1lLCB0b05hdGl2ZUFy
Z3VtZW50czwkbmF0aXZlRWxlbWVudFR5cGU+KGFyZ3MsICRwYXJhbUluZGV4KSk7XG4iOworICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2lmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVy
LykgewogICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIs
ICJNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAkcGFyYW1JbmRleCwgJHBhcmFtZXRlckRl
ZmF1bHRQb2xpY3kpIiwgImFyZ3MuR2V0SXNvbGF0ZSgpIik7CiAgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJHBhcmFtZXRl
ciwgJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4gIlxuIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMDU3YzAzZDZjNmEy
YjkxZjkzYmRlYTVjMDJiNzQ5NjFiZmI4OWQ0MS4uYWJhMzIzNGNhODhkN2E3NThiNDI2ODY0Njlm
NDFkMDlmMjFmYTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQ
YXJzZXIucG0KQEAgLTI0OCw2ICsyNDgsNyBAQCBzdWIgcGFyc2VQYXJhbWV0ZXJzCiAgICAgICAg
IG15ICRwYXJhbU5hbWUgPSAoZGVmaW5lZCgkNSkgPyAkNSA6IGRpZSgiUGFyc2luZyBlcnJvciFc
blNvdXJjZTpcbiRsaW5lXG4pIikpOwogCiAgICAgICAgIG15ICRpc051bGxhYmxlID0gJHBhcmFt
VHlwZVN1ZmZpeCBlcSAiPyI7CisgICAgICAgIG15ICRpc1ZhcmlhZGljID0gJHBhcmFtVHlwZVN1
ZmZpeCBlcSAiLi4uIjsKIAogICAgICAgICBteSAkcGFyYW1EYXRhTm9kZSA9IG5ldyBkb21TaWdu
YXR1cmUoKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmRpcmVjdGlvbigkcGFyYW1EaXJlY3Rp
b24pOwpAQCAtMjU1LDYgKzI1Niw3IEBAIHN1YiBwYXJzZVBhcmFtZXRlcnMKICAgICAgICAgJHBh
cmFtRGF0YU5vZGUtPnR5cGUoJHBhcmFtVHlwZSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJHBhcmFtRXh0ZW5kZWRB
dHRyaWJ1dGVzKSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc051bGxhYmxlKCRpc051bGxh
YmxlKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzVmFyaWFkaWMoJGlzVmFyaWFkaWMpOwog
CiAgICAgICAgIG15ICRhcnJheVJlZiA9ICRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyczsKICAgICAg
ICAgcHVzaChAJGFycmF5UmVmLCAkcGFyYW1EYXRhTm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtCmluZGV4IDJlM2ZiNmM4MDZlNTRhYzYz
YTk1MDdhOWQ4Y2ZjZWNhZTYzMTM2OWUuLmUwMDUwMzQ0Njg2YmI0ZTY4ZDgzZmRlOTQzYmYzMGM2
NzljYjYzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
U3RydWN0dXJlLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3Ry
dWN0dXJlLnBtCkBAIC02Nyw3ICs2Nyw4IEBAIHN0cnVjdCggZG9tU2lnbmF0dXJlID0+IHsKICAg
ICBuYW1lID0+ICckJywgICAgICAjIFZhcmlhYmxlIG5hbWUKICAgICB0eXBlID0+ICckJywgICAg
ICAjIFZhcmlhYmxlIHR5cGUKICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVu
ZGVkIGF0dHJpYnV0ZXMKLSAgICBpc051bGxhYmxlID0+ICckJyAjIElzIHZhcmlhYmxlIHR5cGUg
TnVsbGFibGUgKFQ/KQorICAgIGlzTnVsbGFibGUgPT4gJyQnLCAjIElzIHZhcmlhYmxlIHR5cGUg
TnVsbGFibGUgKFQ/KQorICAgIGlzVmFyaWFkaWMgPT4gJyQnICMgSXMgdmFyaWFibGUgdmFyaWFk
aWMgKGxvbmcuLi4gbnVtYmVycykKIH0pOwogCiAjIFVzZWQgdG8gcmVwcmVzZW50IHN0cmluZyBj
b25zdGFudHMKQEAgLTkyLDcgKzkzLDcgQEAgb3VyICRpZGxEYXRhVHlwZSA9ICdbYS16QS1aMC05
XCBdJzsgICAjIEdlbmVyaWMgZGF0YSB0eXBlIGlkZW50aWZpZXIKIAogIyBNYWdpYyBJREwgcGFy
c2luZyByZWd1bGFyIGV4cHJlc3Npb25zCiBteSAkc3VwcG9ydGVkVHlwZXMgPSAiKCg/Oig/OnVu
c2lnbmVkICk/KD86aW50fHNob3J0fCg/OmxvbmcgKT9sb25nKXwoPzokaWRsSWROcyopKSg/Olxc
W1xcXXw8KD86JGlkbElkTnNMaXN0Kik+KT8pIjsKLW15ICRzdXBwb3J0ZWRUeXBlU3VmZml4ID0g
IihcXD8pPyI7CitteSAkc3VwcG9ydGVkVHlwZVN1ZmZpeCA9ICIoXFw/fFxcLlxcLlxcLik/IjsK
IAogIyBTcGVjaWFsIElETCBub3RhdGlvbnMuIFRoaXMgcmVndWxhciBleHByZXNzaW9uIGV4dHJh
Y3RzIHRoZSBzdHJpbmcgYmV0d2VlbiB0aGUgZmlyc3QgWyBhbmQgaXRzIGNvcnJlc3BvbmRpbmcg
XS4KIG91ciAkZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXggPSBxci9cW1teXFtcXV0qKD86KD8/eyRJ
RExTdHJ1Y3R1cmU6OmV4dGVuZGVkQXR0cmlidXRlU3ludGF4fSlbXlxbXF1dKikqXF0veDsgIyBV
c2VkIGZvciBleHRlbmRlZCBhdHRyaWJ1dGVzCkBAIC0xMDcsOCArMTA4LDggQEAgb3VyICRzZXR0
ZXJSYWlzZXNTZWxlY3RvciA9ICdcYnNldHRlclxzK3JhaXNlc1xzKlwoKCcgLiAkaWRsSWROc0xp
c3QgLiAnKilccypcKScKIAogb3VyICR0eXBlTmFtZXNwYWNlU2VsZWN0b3IgPSAnKCg/OicgLiAk
aWRsSWQgLiAnKjo6KSopXHMqKCcgLiAkaWRsRGF0YVR5cGUgLiAnKiknOwogCi1vdXIgJGludGVy
ZmFjZVNlbGVjdG9yID0gJyhpbnRlcmZhY2V8ZXhjZXB0aW9uKVxzKigoPzonIC4gJGV4dGVuZGVk
QXR0cmlidXRlU3ludGF4IC4gJyApPykoJyAuICRpZGxJZE5zIC4gJyopXHMqKD86OihccypbXntd
KikpP3soWy1hLXpBLVowLTlfIj1ccygpLDs6XFtcXTw+Jlx8P10qKSc7Ci1vdXIgJGludGVyZmFj
ZU1ldGhvZFNlbGVjdG9yID0gJ1xzKigoPzonIC4gJGV4dGVuZGVkQXR0cmlidXRlU3ludGF4IC4g
JyApPykoc3RhdGljXHMrKT8nIC4gJHN1cHBvcnRlZFR5cGVzIC4gJ1xzKignIC4gJGlkbElkTnMg
LiAnKilccypcKFxzKihbYS16QS1aMC05OlxzLD1cW1xdPD4/XSopJzsKK291ciAkaW50ZXJmYWNl
U2VsZWN0b3IgPSAnKGludGVyZmFjZXxleGNlcHRpb24pXHMqKCg/OicgLiAkZXh0ZW5kZWRBdHRy
aWJ1dGVTeW50YXggLiAnICk/KSgnIC4gJGlkbElkTnMgLiAnKilccyooPzo6KFxzKltee10qKSk/
eyhbLWEtekEtWjAtOV8iPVxzKCksOzpcW1xdPD4mXHw/Ll0qKSc7CitvdXIgJGludGVyZmFjZU1l
dGhvZFNlbGVjdG9yID0gJ1xzKigoPzonIC4gJGV4dGVuZGVkQXR0cmlidXRlU3ludGF4IC4gJyAp
Pykoc3RhdGljXHMrKT8nIC4gJHN1cHBvcnRlZFR5cGVzIC4gJ1xzKignIC4gJGlkbElkTnMgLiAn
KilccypcKFxzKihbYS16QS1aMC05OlxzLD1cW1xdPD4/Ll0qKSc7CiBvdXIgJGludGVyZmFjZVBh
cmFtZXRlclNlbGVjdG9yID0gJyhpbnxvdXQpXHMqKCg/OicgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVT
eW50YXggLiAnICk/KScgLiAkc3VwcG9ydGVkVHlwZXMgLiAkc3VwcG9ydGVkVHlwZVN1ZmZpeCAu
ICdccyooJyAuICRpZGxJZE5zIC4gJyopJzsKIAogb3VyICRpbnRlcmZhY2VBdHRyaWJ1dGVTZWxl
Y3RvciA9ICdccyooc3RhdGljXHMrKT8ocmVhZG9ubHkgYXR0cmlidXRlfGF0dHJpYnV0ZSlccyoo
JyAuICRleHRlbmRlZEF0dHJpYnV0ZVN5bnRheCAuICcgKT8nIC4gJHN1cHBvcnRlZFR5cGVzIC4g
J1xzKignIC4gJGlkbFR5cGUgLiAnKiknOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggMGNmNjc2
NTk5YzYzYmYxMjVjMWQ0OWJjYWEwYzgzM2M4NTMxODEzYy4uZDUzNmY5NDdhYzI1YTk3ZTc1MWEx
ZjQyMDMyODk3YWY0ZDM4YjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC0yNiwxMiArMjYs
MTQgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCiAj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGVzdE9iai5oIgog
I2luY2x1ZGUgIldlYkRPTURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXZWJET01Eb2N1bWVudC5o
IgogI2luY2x1ZGUgIldlYkRPTUlEQktleS5oIgorI2luY2x1ZGUgIldlYkRPTU5vZGUuaCIKICNp
bmNsdWRlICJXZWJET01TVkdQb2ludC5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZy5oIgogI2lu
Y2x1ZGUgIldlYkRPTWEuaCIKQEAgLTk2OSw2ICs5NzEsMzAgQEAgV2ViRE9NYm9vbCBXZWJET01U
ZXN0T2JqOjpzdHJpY3RGdW5jdGlvbihjb25zdCBXZWJET01TdHJpbmcmIHN0ciwgZmxvYXQgYSwg
aW50IGIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFdlYkRPTVRlc3RPYmo6OnZhcmlh
ZGljU3RyaW5nTWV0aG9kKGNvbnN0IFdlYkRPTVN0cmluZyYgaGVhZCwgY29uc3QgV2ViRE9NU3Ry
aW5nJiB0YWlsKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
bXBsKCktPnZhcmlhZGljU3RyaW5nTWV0aG9kKGhlYWQsIHRhaWwpOworfQorCit2b2lkIFdlYkRP
TVRlc3RPYmo6OnZhcmlhZGljRG91YmxlTWV0aG9kKGRvdWJsZSBoZWFkLCBkb3VibGUgdGFpbCkK
K3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT52YXJp
YWRpY0RvdWJsZU1ldGhvZChoZWFkLCB0YWlsKTsKK30KKwordm9pZCBXZWJET01UZXN0T2JqOjp2
YXJpYWRpY05vZGVNZXRob2QoY29uc3QgV2ViRE9NTm9kZSYgaGVhZCwgY29uc3QgV2ViRE9NTm9k
ZSYgdGFpbCkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1w
bCgpLT52YXJpYWRpY05vZGVNZXRob2QodG9XZWJDb3JlKGhlYWQpLCB0b1dlYkNvcmUodGFpbCkp
OworfQorCiBXZWJDb3JlOjpUZXN0T2JqKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdE9iaiYg
d3JhcHBlcikKIHsKICAgICByZXR1cm4gd3JhcHBlci5pbXBsKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCmlu
ZGV4IGQ1NWZmNzg2NTUxZWJkM2M3NGFkMWE5Njg4MzJkMjAyOWJjYWM1MjcuLjdiMTBmZDAyYmZj
ZTJkYzE3YmY0ZDg0YmIyOTdjMGU3MTllMjViZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCkBAIC0zNCw2
ICszNCw3IEBAIGNsYXNzIFdlYkRPTURpY3Rpb25hcnk7CiBjbGFzcyBXZWJET01Eb2N1bWVudDsK
IGNsYXNzIFdlYkRPTUV2ZW50TGlzdGVuZXI7CiBjbGFzcyBXZWJET01JREJLZXk7CitjbGFzcyBX
ZWJET01Ob2RlOwogY2xhc3MgV2ViRE9NU1ZHUG9pbnQ7CiBjbGFzcyBXZWJET01TdHJpbmc7CiBj
bGFzcyBXZWJET01UZXN0T2JqOwpAQCAtMTkwLDYgKzE5MSw5IEBAIHB1YmxpYzoKICAgICBXZWJE
T01TVkdQb2ludCBpbW11dGFibGVQb2ludEZ1bmN0aW9uKCk7CiAgICAgdm9pZCBiYW5hbmEoKTsK
ICAgICBXZWJET01ib29sIHN0cmljdEZ1bmN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyLCBm
bG9hdCBhLCBpbnQgYik7CisgICAgdm9pZCB2YXJpYWRpY1N0cmluZ01ldGhvZChjb25zdCBXZWJE
T01TdHJpbmcmIGhlYWQsIGNvbnN0IFdlYkRPTVN0cmluZyYgdGFpbCk7CisgICAgdm9pZCB2YXJp
YWRpY0RvdWJsZU1ldGhvZChkb3VibGUgaGVhZCwgZG91YmxlIHRhaWwpOworICAgIHZvaWQgdmFy
aWFkaWNOb2RlTWV0aG9kKGNvbnN0IFdlYkRPTU5vZGUmIGhlYWQsIGNvbnN0IFdlYkRPTU5vZGUm
IHRhaWwpOwogCiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaW1wbCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDEyMDRkZmI1MGRiZDNkYzlhNDIzY2ExZDVh
YWI1NzMxODM1ZWI5MzguLmE5MjQzNTIxZDY5NTNiNWVjY2E1NTgzODhkOTBjMjZmYjA2ZjUxMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC0zOCw2ICszOCw4IEBACiAj
aW5jbHVkZSAid2Via2l0L1dlYktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIndl
YmtpdC9XZWJLaXRET01JREJLZXkuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSURCS2V5
UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01Ob2RlLmgiCisjaW5jbHVkZSAi
d2Via2l0L1dlYktpdERPTU5vZGVQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERP
TVNWR1BvaW50LmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVNWR1BvaW50UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKQEAg
LTE0NTIsNiArMTQ1NCw0OSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3N0cmljdF9mdW5jdGlvbihX
ZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3RyLCBnZgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfc3RyaW5nX21l
dGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogaGVhZCwgY29uc3QgZ2No
YXIqIHRhaWwpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGhlYWQpOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwodGFpbCk7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkSGVhZCA9IFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOChoZWFkKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRUYWls
ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHRhaWwpOworICAgIGl0ZW0tPnZhcmlhZGljU3RyaW5n
TWV0aG9kKGNvbnZlcnRlZEhlYWQsIGNvbnZlcnRlZFRhaWwpOworfQorCit2b2lkCit3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX2RvdWJsZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgZ2RvdWJsZSBoZWFkLCBnZG91YmxlIHRhaWwpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChz
ZWxmKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2Vi
Q29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT52YXJp
YWRpY0RvdWJsZU1ldGhvZChoZWFkLCB0YWlsKTsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0
X29ial92YXJpYWRpY19ub2RlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRE
T01Ob2RlKiBoZWFkLCBXZWJLaXRET01Ob2RlKiB0YWlsKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoc2VsZik7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19yZXR1
cm5faWZfZmFpbChoZWFkKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHRhaWwpOworICAgIFdlYkNv
cmU6Ok5vZGUqIGNvbnZlcnRlZEhlYWQgPSAwOworICAgIGlmIChoZWFkKSB7CisgICAgICAgIGNv
bnZlcnRlZEhlYWQgPSBXZWJLaXQ6OmNvcmUoaGVhZCk7CisgICAgICAgIGdfcmV0dXJuX2lmX2Zh
aWwoY29udmVydGVkSGVhZCk7CisgICAgfQorICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZFRh
aWwgPSAwOworICAgIGlmICh0YWlsKSB7CisgICAgICAgIGNvbnZlcnRlZFRhaWwgPSBXZWJLaXQ6
OmNvcmUodGFpbCk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkVGFpbCk7Cisg
ICAgfQorICAgIGl0ZW0tPnZhcmlhZGljTm9kZU1ldGhvZChjb252ZXJ0ZWRIZWFkLCBjb252ZXJ0
ZWRUYWlsKTsKK30KKwogZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9s
b25nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RPYmouaAppbmRleCAzOTVmYTc3YTY5MTQ0ZDIwODZkZWI1NDMyYWM2MDliMmU0Y2NkOTY2Li4w
YWYyOTc1ZDU1MjI3MTJlOGViMDdkMTQ2ZGMwNjAyNTYyOTFkMDhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9iai5oCkBAIC00ODYsNiArNDg2LDQyIEBAIFdFQktJVF9BUEkgV2ViS2l0RE9N
Ym9vbCoKIHdlYmtpdF9kb21fdGVzdF9vYmpfc3RyaWN0X2Z1bmN0aW9uKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBzdHIsIGdmbG9hdCBhLCBnbG9uZyBiLCBHRXJyb3IqKiBl
cnJvcik7CiAKIC8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19zdHJpbmdfbWV0
aG9kOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBoZWFkOiBBICNnY2hhcgor
ICogQHRhaWw6IEEgI2djaGFyCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19zdHJpbmdfbWV0aG9kKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBoZWFkLCBjb25zdCBnY2hhciogdGFpbCk7CisK
Ky8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19kb3VibGVfbWV0aG9kOgorICog
QHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBoZWFkOiBBICNnZG91YmxlCisgKiBAdGFp
bDogQSAjZ2RvdWJsZQorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZChXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBnZG91YmxlIGhlYWQsIGdkb3VibGUgdGFpbCk7CisKKy8qKgorICogd2Via2l0
X2RvbV90ZXN0X29ial92YXJpYWRpY19ub2RlX21ldGhvZDoKKyAqIEBzZWxmOiBBICNXZWJLaXRE
T01UZXN0T2JqCisgKiBAaGVhZDogQSAjV2ViS2l0RE9NTm9kZQorICogQHRhaWw6IEEgI1dlYktp
dERPTU5vZGUKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX25vZGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYsIFdlYktpdERPTU5vZGUqIGhlYWQsIFdlYktpdERPTU5vZGUqIHRhaWwpOworCisvKioKICAq
IHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9sb25nX2F0dHI6CiAgKiBAc2VsZjog
QSAjV2ViS2l0RE9NVGVzdE9iagogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZjQ4YTljODMzNzBmNTM0Y2Y1
MDhhYTNjZmVjYWUyNTk3NjY3ZWM2Ny4uZTI0MjEyZmI1ZTdhYjQxMGQ0OGEzYTBiZmRlNGNmM2Zl
YjZjYThjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0RvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNGbG9hdDMy
QXJyYXkuaCIKKyNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU1NWR0RvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiSlNTVkdQb2ludC5oIgogI2luY2x1ZGUgIkpTU2NyaXB0UHJvZmlsZS5oIgpA
QCAtMzIxLDYgKzMyMiw5IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQ
cm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIiwg
RG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9u
KSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAib3JhbmdlIiwgRG9udERlbGV0
ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5z
aWMgfSwKICAgICB7ICJzdHJpY3RGdW5jdGlvbiIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9u
LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24pLCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKKyAg
ICB7ICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMgfSwK
KyAgICB7ICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9u
LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMg
fSwKKyAgICB7ICJ2YXJpYWRpY05vZGVNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlv
biwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCksIChpbnRwdHJfdCkyLCBOb0ludHJpbnNpYyB9
LAogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIApAQCAtMjYwNyw2ICsyNjEx
LDY5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TdHJpY3RGdW5jdGlvbihFeGVjU3RhdGUqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9iaiog
aW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBjb25zdCBT
dHJpbmcmIGhlYWQoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gdGFpbCA9IHRvTmF0aXZl
QXJndW1lbnRzPFN0cmluZz4oZXhlYywgMSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlt
cGwtPnZhcmlhZGljU3RyaW5nTWV0aG9kKGhlYWQsIHRhaWwpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVl
KCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsK
KyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OworICAgIGRvdWJsZSBoZWFkKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkudG9OdW1iZXIoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBWZWN0b3I8ZG91YmxlPiB0YWlsID0gdG9OYXRpdmVBcmd1bWVudHM8ZG91YmxlPihleGVjLCAx
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaW1wbC0+dmFyaWFkaWNEb3VibGVNZXRob2Qo
aGVhZCwgdGFpbCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZhcmlhZGljTm9kZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5o
ZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+
KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGlj
X2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIE5vZGUqIGhlYWQodG9Ob2RlKE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgVmVjdG9yPE5vZGUqPiB0YWlsOworICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50KGkpLmluaGVyaXRzKCZKU05vZGU6OnNfaW5mbykpCisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGFpbC5hcHBlbmQo
dG9Ob2RlKGV4ZWMtPmFyZ3VtZW50KGkpKSk7CisgICAgfQorICAgIGltcGwtPnZhcmlhZGljTm9k
ZU1ldGhvZChoZWFkLCB0YWlsKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworfQorCiB2b2lkIEpTVGVzdE9iajo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTVGVzdE9iaiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCAxMjMyNzI0MDUyYWRmMjBlYjhhNjkw
NmEwMjExOTUzNTNkMWExMWNmLi41MjAyMTE1MDdiMWY4MGJiMGNiZTY4OTlmOTU1NmUzNWViZjkx
ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5oCkBAIC0yMTUsNiArMjE1LDkgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24K
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZShK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljU3RyaW5nTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJs
ZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEpTQzo6RXhl
Y1N0YXRlKik7CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25s
eUxvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmgKaW5kZXggNmE5MDk5MTFjYzhiYjBhYzAzMWM3MDEyOWE0MTkxNjJkNjVl
ZWNhZS4uZWRjNDk0MDkyZWFkMmRkM2QyZWZjMWI5MWI3ZTcwMzY1YTFmODhiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmouaApAQCAtMzEsNiArMzEsNyBAQAogQGNsYXNzIERPTURpY3Rpb25hcnk7CiBAY2xhc3MgRE9N
RG9jdW1lbnQ7CiBAY2xhc3MgRE9NSURCS2V5OworQGNsYXNzIERPTU5vZGU7CiBAY2xhc3MgRE9N
U1ZHRG9jdW1lbnQ7CiBAY2xhc3MgRE9NU1ZHUG9pbnQ7CiBAY2xhc3MgRE9NVGVzdE9iajsKQEAg
LTE3Myw2ICsxNzQsOSBAQCBlbnVtIHsKIC0gKERPTVNWR1BvaW50ICopaW1tdXRhYmxlUG9pbnRG
dW5jdGlvbjsKIC0gKHZvaWQpb3JhbmdlOwogLSAoRE9NYm9vbCAqKXN0cmljdEZ1bmN0aW9uOihO
U1N0cmluZyAqKXN0ciBhOihmbG9hdClhIGI6KGludCliOworLSAodm9pZCl2YXJpYWRpY1N0cmlu
Z01ldGhvZDooTlNTdHJpbmcgKiloZWFkIHRhaWw6KE5TU3RyaW5nICopdGFpbDsKKy0gKHZvaWQp
dmFyaWFkaWNEb3VibGVNZXRob2Q6KGRvdWJsZSloZWFkIHRhaWw6KGRvdWJsZSl0YWlsOworLSAo
dm9pZCl2YXJpYWRpY05vZGVNZXRob2Q6KERPTU5vZGUgKiloZWFkIHRhaWw6KERPTU5vZGUgKil0
YWlsOwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCmluZGV4IDhiMmJjZjAwYjFmOTY0MTNj
OTBjOTA5MDBkNTBmODhjOGVhZDZkNjIuLmVkNDAxYTQ0ZTgzMGVlMzY0Nzg5YTE2ZjZjNGQ0NTZj
YjA0ZjgzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCAiSURC
S2V5LmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbXBvcnQgIktVUkwu
aCIKKyNpbXBvcnQgIk5vZGUuaCIKICNpbXBvcnQgIk9iakNFdmVudExpc3RlbmVyLmgiCiAjaW1w
b3J0ICJTVkdEb2N1bWVudC5oIgogI2ltcG9ydCAiU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgi
CkBAIC0xMDU2LDYgKzEwNTcsMjQgQEAgLSAoRE9NYm9vbCAqKXN0cmljdEZ1bmN0aW9uOihOU1N0
cmluZyAqKXN0ciBhOihmbG9hdClhIGI6KGludCliCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
LSAodm9pZCl2YXJpYWRpY1N0cmluZ01ldGhvZDooTlNTdHJpbmcgKiloZWFkIHRhaWw6KE5TU3Ry
aW5nICopdGFpbAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBJTVBMLT52YXJpYWRpY1N0cmluZ01ldGhvZChoZWFkLCB0YWlsKTsKK30KKworLSAodm9p
ZCl2YXJpYWRpY0RvdWJsZU1ldGhvZDooZG91YmxlKWhlYWQgdGFpbDooZG91YmxlKXRhaWwKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+dmFy
aWFkaWNEb3VibGVNZXRob2QoaGVhZCwgdGFpbCk7Cit9CisKKy0gKHZvaWQpdmFyaWFkaWNOb2Rl
TWV0aG9kOihET01Ob2RlICopaGVhZCB0YWlsOihET01Ob2RlICopdGFpbAoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT52YXJpYWRpY05vZGVN
ZXRob2QoY29yZShoZWFkKSwgY29yZSh0YWlsKSk7Cit9CisKIEBlbmQKIAogV2ViQ29yZTo6VGVz
dE9iaiogY29yZShET01UZXN0T2JqICp3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IGYyZDFmZTgxMGQxYmFlZDE3NDU2
YzdiMTQwMWE5Nzg2NzFiZDNmYzMuLjhhOGZmYTZlMjY1ZmRmNGNjMTg2N2I4ZGY3ZjZlODdmMWZj
MWI4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwKQEAgLTI2Myw1ICsyNjMsOSBAQCBtb2R1bGUgdGVzdCB7CiAgICAgICAgIFtSZWZs
ZWN0PUNPTlNUX0lNUExdIGNvbnN0IHVuc2lnbmVkIHNob3J0IENPTlNUX0pBVkFTQ1JJUFQgPSAx
NTsKIAogICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlXSBsb25nIHJlcGxhY2VhYmxlQXR0
cmlidXRlOworCisgICAgICAgIHZvaWQgdmFyaWFkaWNTdHJpbmdNZXRob2QoaW4gRE9NU3RyaW5n
IGhlYWQsIGluIERPTVN0cmluZy4uLiB0YWlsKTsKKyAgICAgICAgdm9pZCB2YXJpYWRpY0RvdWJs
ZU1ldGhvZChpbiBkb3VibGUgaGVhZCwgaW4gZG91YmxlLi4uIHRhaWwpOworICAgICAgICB2b2lk
IHZhcmlhZGljTm9kZU1ldGhvZChpbiBOb2RlIGhlYWQsIGluIE5vZGUuLi4gdGFpbCk7CiAgICAg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKaW5kZXggNTAyNDI4YTcxMDBjNWY3MTY2M2NmNWM2OTE1MTY5ZDk3MjIx
NTUzNS4uN2U4ZmQ2YmNkZTliNmZiYjA2YzNkNGNkNDJiYmFmNDdmOTZjNGE1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRl
ICJWOERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhGbG9hdDMyQXJyYXkuaCIKKyNpbmNsdWRlICJW
OE5vZGUuaCIKICNpbmNsdWRlICJWOFNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhTVkdQb2lu
dC5oIgogI2luY2x1ZGUgIlY4U2NyaXB0UHJvZmlsZS5oIgpAQCAtMTkwNSw2ICsxOTA2LDQ3IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaWN0RnVuY3Rpb25DYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJp
YWRpY1N0cmluZ01ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7Cisg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai52YXJpYWRpY1N0cmluZ01ldGhvZCIpOworICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VY
Q0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBoZWFkLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soVmVj
dG9yPFN0cmluZz4sIHRhaWwsIHRvTmF0aXZlQXJndW1lbnRzPFN0cmluZz4oYXJncywgMSkpOwor
ICAgIGltcC0+dmFyaWFkaWNTdHJpbmdNZXRob2QoaGVhZCwgdGFpbCk7CisgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFyaWFkaWNE
b3VibGVNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoudmFyaWFkaWNEb3VibGVNZXRob2QiKTsKKyAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhkb3VibGUsIGhlYWQs
IHN0YXRpY19jYXN0PGRvdWJsZT4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKS0+TnVtYmVyVmFsdWUoKSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhW
ZWN0b3I8ZG91YmxlPiwgdGFpbCwgdG9OYXRpdmVBcmd1bWVudHM8ZG91YmxlPihhcmdzLCAxKSk7
CisgICAgaW1wLT52YXJpYWRpY0RvdWJsZU1ldGhvZChoZWFkLCB0YWlsKTsKKyAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJpYWRp
Y05vZGVNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoudmFyaWFkaWNOb2RlTWV0aG9kIik7CisgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soTm9kZSosIGhlYWQsIFY4
Tm9kZTo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSkpIDogMCk7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHRhaWw7CisgICAgZm9yIChpbnQg
aSA9IDE7IGkgPCBhcmdzLkxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFWOE5vZGU6Okhh
c0luc3RhbmNlKGFyZ3NbaV0pKQorICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKDAs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgdGFpbC5hcHBlbmQoVjhOb2RlOjp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbaV0pKSk7CisgICAgfQorICAgIGlt
cC0+dmFyaWFkaWNOb2RlTWV0aG9kKGhlYWQsIHRhaWwpOworICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0T2JqVjhJbnRlcm5hbAogCiBzdGF0aWMgY29u
c3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdE9iakF0dHJzW10g
PSB7CkBAIC0yMDg2LDYgKzIxMjgsOCBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9u
OjpCYXRjaGVkQ2FsbGJhY2sgVjhUZXN0T2JqQ2FsbGJhY2tzW10gPSB7CiAgICAgeyJpbW11dGFi
bGVQb2ludEZ1bmN0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50RnVuY3Rp
b25DYWxsYmFja30sCiAgICAgeyJvcmFuZ2UiLCBUZXN0T2JqVjhJbnRlcm5hbDo6b3JhbmdlQ2Fs
bGJhY2t9LAogICAgIHsic3RyaWN0RnVuY3Rpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0
RnVuY3Rpb25DYWxsYmFja30sCisgICAgeyJ2YXJpYWRpY1N0cmluZ01ldGhvZCIsIFRlc3RPYmpW
OEludGVybmFsOjp2YXJpYWRpY1N0cmluZ01ldGhvZENhbGxiYWNrfSwKKyAgICB7InZhcmlhZGlj
RG91YmxlTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljRG91YmxlTWV0aG9kQ2Fs
bGJhY2t9LAogfTsKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENv
bnN0YW50IFY4VGVzdE9iakNvbnN0c1tdID0gewpAQCAtMjIzNyw2ICsyMjgxLDEyIEBAIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2Jq
VGVtcGxhdGUodjg6OlBlcnNpCiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Y29udmVydDVBcmd2W2NvbnZlcnQ1QXJnY10gPSB7IFY4ZTo6R2V0UmF3VGVtcGxhdGUoKSB9Owog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDVTaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgY29udmVydDVBcmdjLCBjb252ZXJ0NUFyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0NSIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NUNhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCBjb252ZXJ0NVNpZ25hdHVyZSkpOworCisgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAndmFy
aWFkaWNOb2RlTWV0aG9kJworICAgIGNvbnN0IGludCB2YXJpYWRpY05vZGVNZXRob2RBcmdjID0g
MjsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2YXJpYWRpY05vZGVNZXRo
b2RBcmd2W3ZhcmlhZGljTm9kZU1ldGhvZEFyZ2NdID0geyBWOE5vZGU6OkdldFJhd1RlbXBsYXRl
KCksIFY4Tm9kZTo6R2V0UmF3VGVtcGxhdGUoKSB9OworICAgIHY4OjpIYW5kbGU8djg6OlNpZ25h
dHVyZT4gdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRl
c2MsIHZhcmlhZGljTm9kZU1ldGhvZEFyZ2MsIHZhcmlhZGljTm9kZU1ldGhvZEFyZ3YpOworICAg
IHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2YXJpYWRpY05vZGVNZXRob2QiKSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6dmFyaWFkaWNOb2Rl
TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHZhcmlhZGljTm9kZU1ldGhvZFNpZ25hdHVy
ZSkpOwogICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVz
YywgcHJvdG8sIFY4VGVzdE9iakNvbnN0cywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RPYmpDb25z
dHMpKTsKIAogICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCAwYzllZTRmNGNhMThhMGM4MGM2ZTJiMzVhMjc2NzE4
NDQ3MGYyZWJmLi41NTZmNjg2NjQyNmQyN2RlNjZjNmQ3MTg3YmFjMTMyOGUxY2EzZDUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMTgyLDI4ICsxODIsMjkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0cnVjdCBOYXRpdmVW
YWx1ZVRyYWl0czxTdHJpbmc+IHsKLSAgICAgICAgc3RhdGljIGlubGluZSBTdHJpbmcgYXJyYXlO
YXRpdmVWYWx1ZShjb25zdCB2ODo6TG9jYWw8djg6OkFycmF5PiYgYXJyYXksIHNpemVfdCBpKQor
ICAgICAgICBzdGF0aWMgaW5saW5lIFN0cmluZyBuYXRpdmVWYWx1ZShjb25zdCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4mIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdG9XZWJD
b3JlU3RyaW5nKGFycmF5LT5HZXQoaSkpOworICAgICAgICAgICAgcmV0dXJuIHRvV2ViQ29yZVN0
cmluZyh2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0
cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxmbG9hdD4gewotICAgICAgICBzdGF0aWMgaW5saW5lIGZs
b2F0IGFycmF5TmF0aXZlVmFsdWUoY29uc3Qgdjg6OkxvY2FsPHY4OjpBcnJheT4mIGFycmF5LCBz
aXplX3QgaSkKKyAgICAgICAgc3RhdGljIGlubGluZSBmbG9hdCBuYXRpdmVWYWx1ZShjb25zdCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFycmF5LT5HZXQodjhJbnRlZ2VyKGkpKS0+TnVtYmVyVmFs
dWUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlLT5OdW1i
ZXJWYWx1ZSgpKTsKICAgICAgICAgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+CiAgICAgc3Ry
dWN0IE5hdGl2ZVZhbHVlVHJhaXRzPGRvdWJsZT4gewotICAgICAgICBzdGF0aWMgaW5saW5lIGRv
dWJsZSBhcnJheU5hdGl2ZVZhbHVlKGNvbnN0IHY4OjpMb2NhbDx2ODo6QXJyYXk+JiBhcnJheSwg
c2l6ZV90IGkpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgZG91YmxlIG5hdGl2ZVZhbHVlKGNvbnN0
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGFycmF5LT5HZXQodjhJbnRlZ2VyKGkpKS0+TnVtYmVy
VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZS0+
TnVtYmVyVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9OwogCisKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVD4KICAgICBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmFsdWUpCiAgICAgewpAQCAtMjE1LDEyICsyMTYsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlKHY4OjpMb2NhbDx2ODo6VmFsdWU+
OjpOZXcodmFsdWUpKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6
TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2OFZhbHVlKTsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IGFycmF5LT5MZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChUcmFpdHNUeXBlOjphcnJheU5hdGl2
ZVZhbHVlKGFycmF5LCBpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVHJhaXRzVHlwZTo6
bmF0aXZlVmFsdWUoYXJyYXktPkdldChpKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBUPgorICAgIFZlY3RvcjxUPiB0b05hdGl2ZUFyZ3Vt
ZW50cyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBzaXplX3Qgc3RhcnRJbmRleCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChzdGFydEluZGV4IDw9IGFyZ3MuTGVuZ3RoKCkpOworICAgICAgICBW
ZWN0b3I8VD4gcmVzdWx0OworICAgICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPFQ+IFRy
YWl0c1R5cGU7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBhcmdzLkxlbmd0aCgpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShhcmdzW2ldKSk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisKICAgICAvLyBWYWxpZGF0ZXMgdGhhdCB0aGUg
cGFzc2VkIG9iamVjdCBpcyBhIHNlcXVlbmNlIHR5cGUgcGVyIFdlYklETCBzcGVjCiAgICAgLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1XZWJJREwtMjAxMjAyMDcvI2VzLXNlcXVlbmNl
CiAgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4U2VxdWVuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB1aW50MzJfdCYgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9DbGFzc0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DbGFzc0xp
c3QuY3BwCmluZGV4IGEzMjVhMTIyNmFhOWE0NWI0NTU0Y2JiOWVlZTcwMjcyODg0YWQwYzcuLjVm
ZjNiZGFmNjAyZmM0N2ZiNTMyNmJhZDkzYzc2M2E2YzJiNTVkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ2xhc3NMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Ns
YXNzTGlzdC5jcHAKQEAgLTI1LDIxICsyNSwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNsYXNzTGlzdC5oIgogCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJTcGFj
ZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KIENsYXNz
TGlzdDo6Q2xhc3NMaXN0KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVu
dCkKIHsKICAgICBpZiAobV9lbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKLSAg
ICAgICAgbV9jbGFzc05hbWVzRm9yUXVpcmtzTW9kZS5zZXQobV9lbGVtZW50LT5nZXRBdHRyaWJ1
dGUoY2xhc3NBdHRyKSwgZmFsc2UpOworICAgICAgICBtX2NsYXNzTmFtZXNGb3JRdWlya3NNb2Rl
LnNldCh2YWx1ZSgpLCBmYWxzZSk7CiB9CiAKIHZvaWQgQ2xhc3NMaXN0OjpyZWYoKQpAQCAtNjQs
NzEgKzYwLDExIEBAIGNvbnN0IEF0b21pY1N0cmluZyBDbGFzc0xpc3Q6Oml0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIGNsYXNzTmFtZXMoKVtpbmRleF07CiB9CiAKLWJvb2wg
Q2xhc3NMaXN0Ojpjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBFeGNlcHRpb25D
b2RlJiBlYykgY29uc3QKLXsKLSAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb250YWluc0ludGVybmFsKHRva2VuKTsK
LX0KLQogYm9vbCBDbGFzc0xpc3Q6OmNvbnRhaW5zSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5n
JiB0b2tlbikgY29uc3QKIHsKICAgICByZXR1cm4gbV9lbGVtZW50LT5oYXNDbGFzcygpICYmIGNs
YXNzTmFtZXMoKS5jb250YWlucyh0b2tlbik7CiB9CiAKLXZvaWQgQ2xhc3NMaXN0OjphZGQoY29u
c3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCF2
YWxpZGF0ZVRva2VuKHRva2VuLCBlYykpCi0gICAgICAgIHJldHVybjsKLSAgICBhZGRJbnRlcm5h
bCh0b2tlbik7Ci19Ci0KLXZvaWQgQ2xhc3NMaXN0OjphZGRJbnRlcm5hbChjb25zdCBBdG9taWNT
dHJpbmcmIHRva2VuKQotewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkQ2xhc3NOYW1lKG1f
ZWxlbWVudC0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikpOwotICAgIGlmIChvbGRDbGFzc05hbWUu
aXNFbXB0eSgpKQotICAgICAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIHRv
a2VuKTsKLSAgICBlbHNlIGlmICghY29udGFpbnNJbnRlcm5hbCh0b2tlbikpIHsKLSAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc05hbWUoYWRkVG9rZW4ob2xkQ2xhc3NOYW1lLCB0
b2tlbikpOwotICAgICAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIG5ld0Ns
YXNzTmFtZSk7Ci0gICAgfQotfQotCi12b2lkIENsYXNzTGlzdDo6cmVtb3ZlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghdmFsaWRhdGVU
b2tlbih0b2tlbiwgZWMpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVtb3ZlSW50ZXJuYWwodG9r
ZW4pOwotfQotCi12b2lkIENsYXNzTGlzdDo6cmVtb3ZlSW50ZXJuYWwoY29uc3QgQXRvbWljU3Ry
aW5nJiB0b2tlbikKLXsKLSAgICAvLyBDaGVjayB1c2luZyBjb250YWlucyBmaXJzdCBzaW5jZSBp
dCB1c2VzIEF0b21pY1N0cmluZyBjb21wYXJpc29ucyBpbnN0ZWFkCi0gICAgLy8gb2YgY2hhcmFj
dGVyIGJ5IGNoYXJhY3RlciB0ZXN0aW5nLgotICAgIGlmICghY29udGFpbnNJbnRlcm5hbCh0b2tl
bikpCi0gICAgICAgIHJldHVybjsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzTmFt
ZShyZW1vdmVUb2tlbihtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpLCB0b2tlbikp
OwotICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgbmV3Q2xhc3NOYW1lKTsK
LX0KLQotYm9vbCBDbGFzc0xpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBF
eGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGNvbnRhaW5zSW50ZXJuYWwodG9rZW4p
KSB7Ci0gICAgICAgIHJlbW92ZUludGVybmFsKHRva2VuKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICBhZGRJbnRlcm5hbCh0b2tlbik7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LVN0cmluZyBDbGFzc0xpc3Q6OnRvU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbGVt
ZW50LT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKTsKLX0KLQogdm9pZCBDbGFzc0xpc3Q6OnJlc2V0
KGNvbnN0IFN0cmluZyYgbmV3Q2xhc3NOYW1lKQogewogICAgIGlmIChtX2VsZW1lbnQtPmRvY3Vt
ZW50KCktPmluUXVpcmtzTW9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9D
bGFzc0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2xhc3NMaXN0LmgKaW5kZXggOTkyZmFk
NDc0YzYzZDc1ZjE4YjllZWZiNTY0ODY2MGY2YjM4MTBlZC4uNzY0ZWJmNTJlODFhYTljMGJmODVl
YWZjNGUwYzc1N2JkNmNmZTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DbGFz
c0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NsYXNzTGlzdC5oCkBAIC0yNiwxMSAr
MjYsMTcgQEAKICNkZWZpbmUgQ2xhc3NMaXN0X2gKIAogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOworCiBjbGFzcyBFbGVtZW50OwogCiB0eXBlZGVmIGludCBFeGNlcHRp
b25Db2RlOwpAQCAtNDIsMzAgKzQ4LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDbGFzc0xpc3QoZWxlbWVudCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBy
ZWYoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb250YWlu
cyhjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZChjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdmlydHVhbCBib29sIHRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCBFbGVtZW50KiBlbGVtZW50KCkgeyByZXR1cm4gbV9lbGVtZW50OyB9CisgICAgdmlydHVhbCBF
bGVtZW50KiBlbGVtZW50KCkgT1ZFUlJJREUgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAKICAgICB2
b2lkIHJlc2V0KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIENsYXNzTGlzdChFbGVt
ZW50Kik7CiAKLSAgICB2b2lkIGFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAg
IGJvb2wgY29udGFpbnNJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKLSAgICB2
b2lkIHJlbW92ZUludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZpcnR1YWwgYm9v
bCBjb250YWluc0ludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lcygpIGNvbnN0OwogCisgICAg
dmlydHVhbCBBdG9taWNTdHJpbmcgdmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Vs
ZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSBPVkVSUklERSB7IG1fZWxlbWVudC0+
c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgdmFsdWUpOyB9CisKICAgICBFbGVtZW50KiBtX2VsZW1l
bnQ7CiAgICAgU3BhY2VTcGxpdFN0cmluZyBtX2NsYXNzTmFtZXNGb3JRdWlya3NNb2RlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5jcHAKaW5kZXggM2E4
NmU5YzAwMDI0NDI5OGQyNGFkY2MzZDEwNWMxZWQ0MjQ3NDlmMC4uNGVmMGY3ZjUxYTUwMDI4NTgy
YjgwNGQ1MzdhM2FjYjllMjQ5NWVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01TZXR0YWJsZVRva2VuTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0
YWJsZVRva2VuTGlzdC5jcHAKQEAgLTQ0LDU1ICs0NCw0NiBAQCBjb25zdCBBdG9taWNTdHJpbmcg
RE9NU2V0dGFibGVUb2tlbkxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdG9rZW5zW2luZGV4XTsKIH0KIAotYm9vbCBET01TZXR0YWJsZVRva2VuTGlzdDo6Y29u
dGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
Citib29sIERPTVNldHRhYmxlVG9rZW5MaXN0Ojpjb250YWluc0ludGVybmFsKGNvbnN0IEF0b21p
Y1N0cmluZyYgdG9rZW4pIGNvbnN0CiB7Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBl
YykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gbV90b2tlbnMuY29udGFpbnMo
dG9rZW4pOwogfQogCi12b2lkIERPTVNldHRhYmxlVG9rZW5MaXN0OjphZGQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERPTVNldHRhYmxlVG9rZW5M
aXN0OjphZGQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHRva2VucywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBlYykgfHwgbV90b2tlbnMuY29udGFp
bnModG9rZW4pKQotICAgICAgICByZXR1cm47Ci0gICAgYWRkSW50ZXJuYWwodG9rZW4pOworICAg
IERPTVRva2VuTGlzdDo6YWRkKHRva2VucywgZWMpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fdG9rZW5zLmlzTnVsbCgp
KQorICAgICAgICAgICAgbV90b2tlbnMuc2V0KHRva2Vuc1tpXSwgZmFsc2UpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX3Rva2Vucy5hZGQodG9rZW5zW2ldKTsKKyAgICB9CiB9CiAKIHZv
aWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYg
dG9rZW4pCiB7Ci0gICAgbV92YWx1ZSA9IGFkZFRva2VuKG1fdmFsdWUsIHRva2VuKTsKKyAgICBE
T01Ub2tlbkxpc3Q6OmFkZEludGVybmFsKHRva2VuKTsKICAgICBpZiAobV90b2tlbnMuaXNOdWxs
KCkpCiAgICAgICAgIG1fdG9rZW5zLnNldCh0b2tlbiwgZmFsc2UpOwogICAgIGVsc2UKICAgICAg
ICAgbV90b2tlbnMuYWRkKHRva2VuKTsKIH0KIAotdm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6
cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBET01TZXR0YWJsZVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tl
bnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbiwg
ZWMpIHx8ICFtX3Rva2Vucy5jb250YWlucyh0b2tlbikpCi0gICAgICAgIHJldHVybjsKLSAgICBy
ZW1vdmVJbnRlcm5hbCh0b2tlbik7CisgICAgRE9NVG9rZW5MaXN0OjpyZW1vdmUodG9rZW5zLCBl
Yyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIG1fdG9rZW5zLnJlbW92ZSh0b2tlbnNbaV0pOwogfQogCiB2b2lkIERPTVNldHRhYmxlVG9r
ZW5MaXN0OjpyZW1vdmVJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQogewotICAg
IG1fdmFsdWUgPSByZW1vdmVUb2tlbihtX3ZhbHVlLCB0b2tlbik7CisgICAgRE9NVG9rZW5MaXN0
OjpyZW1vdmVJbnRlcm5hbCh0b2tlbik7CiAgICAgbV90b2tlbnMucmVtb3ZlKHRva2VuKTsKIH0K
IAotYm9vbCBET01TZXR0YWJsZVRva2VuTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYg
dG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tl
biwgZWMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fdG9rZW5zLmNvbnRhaW5z
KHRva2VuKSkgewotICAgICAgICByZW1vdmVJbnRlcm5hbCh0b2tlbik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgYWRkSW50ZXJuYWwodG9rZW4pOwotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkIERPTVNldHRhYmxlVG9rZW5MaXN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcm
IHZhbHVlKQordm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6c2V0VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBtX3ZhbHVlID0gdmFsdWU7CiAgICAgbV90b2tlbnMuc2V0
KHZhbHVlLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRh
YmxlVG9rZW5MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0
LmgKaW5kZXggMGIyM2M2YWIyMjlmYTY1NWNlMzg4ODE5NGQ4OWUzN2NiY2U5OTNlMS4uZjMzOGRj
MzJiZjY5YmMxNzQ3MTQ4ZGU0NjUyNDVhYTE0MWUxYjE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaApAQCAtNDQsMjggKzQ0LDI4IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgdmlydHVhbCB+RE9NU2V0dGFibGVUb2tlbkxpc3QoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCByZWYoKSB7IFJlZkNvdW50ZWQ8RE9NU2V0dGFibGVUb2tlbkxpc3Q+OjpyZWYoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIHsgUmVmQ291bnRlZDxET01TZXR0YWJsZVRva2VuTGlz
dD46OmRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgT1ZFUlJJREUgeyBSZWZDb3Vu
dGVkPERPTVNldHRhYmxlVG9rZW5MaXN0Pjo6cmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWYoKSBPVkVSUklERSB7IFJlZkNvdW50ZWQ8RE9NU2V0dGFibGVUb2tlbkxpc3Q+OjpkZXJlZigp
OyB9CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9r
ZW5zLnNpemUoKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nIGl0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBBdG9taWNT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkZChjb25z
dCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCBib29s
IHRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVh
bCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9CisgICAgdmlydHVh
bCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Rva2Vucy5zaXpl
KCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBhZGQoY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92
ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKworICAg
IHZpcnR1YWwgQXRvbWljU3RyaW5nIHZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92
YWx1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKSBP
VkVSUklERTsKIAotICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
ICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiB0b2tlbnMoKSBjb25zdCB7IHJldHVybiBtX3Rv
a2VuczsgfQotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CiAg
ICAgRE9NU2V0dGFibGVUb2tlbkxpc3QoKTsKIAotICAgIHZvaWQgcmVtb3ZlSW50ZXJuYWwoY29u
c3QgQXRvbWljU3RyaW5nJik7Ci0gICAgdm9pZCBhZGRJbnRlcm5hbChjb25zdCBBdG9taWNTdHJp
bmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zSW50ZXJuYWwoY29uc3QgQXRvbWlj
U3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUludGVybmFs
KGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogCi0gICAgU3RyaW5nIG1fdmFsdWU7Cisg
ICAgQXRvbWljU3RyaW5nIG1fdmFsdWU7CiAgICAgU3BhY2VTcGxpdFN0cmluZyBtX3Rva2VuczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAppbmRleCA3MTMyYjExNjlkZDkz
MWYyZmZkMGExZDg0MzMzZWNlMmZiZWExNDI0Li41MzNiMWYxMDM2NzkyNjFmYmI0NWFlZjZmOThl
MjQ0YWM4NTdhNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCkBAIC00OSwy
MyArNDksMTM4IEBAIGJvb2wgRE9NVG9rZW5MaXN0Ojp2YWxpZGF0ZVRva2VuKGNvbnN0IEF0b21p
Y1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiB0cnVlOwogfQog
Citib29sIERPTVRva2VuTGlzdDo6dmFsaWRhdGVUb2tlbnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHRva2VucywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB0b2tlbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2Vu
c1tpXSwgZWMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIERPTVRva2VuTGlzdDo6Y29udGFpbnMoY29uc3QgQXRvbWljU3Ry
aW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCF2YWxpZGF0
ZVRva2VuKHRva2VuLCBlYykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY29u
dGFpbnNJbnRlcm5hbCh0b2tlbik7Cit9CisKK3ZvaWQgRE9NVG9rZW5MaXN0OjphZGQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgVmVjdG9yPFN0
cmluZz4gdG9rZW5zOworICAgIHRva2Vucy5hcHBlbmQodG9rZW4uc3RyaW5nKCkpOworICAgIGFk
ZCh0b2tlbnMsIGVjKTsKK30KKwordm9pZCBET01Ub2tlbkxpc3Q6OmFkZChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdG9rZW5zLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBWZWN0b3I8U3RyaW5n
PiBmaWx0ZXJlZFRva2VuczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2Vucy5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW5zW2ldLCBlYykpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghY29udGFpbnNJbnRlcm5hbCh0b2tlbnNb
aV0pKQorICAgICAgICAgICAgZmlsdGVyZWRUb2tlbnMuYXBwZW5kKHRva2Vuc1tpXSk7CisgICAg
fQorCisgICAgaWYgKGZpbHRlcmVkVG9rZW5zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc2V0VmFsdWUoYWRkVG9rZW5zKHZhbHVlKCksIGZpbHRlcmVkVG9rZW5zKSk7Cit9CisK
K3ZvaWQgRE9NVG9rZW5MaXN0OjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zOworICAgIHRva2Vu
cy5hcHBlbmQodG9rZW4uc3RyaW5nKCkpOworICAgIHJlbW92ZSh0b2tlbnMsIGVjKTsKK30KKwor
dm9pZCBET01Ub2tlbkxpc3Q6OnJlbW92ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXZhbGlkYXRlVG9rZW5zKHRva2VucywgZWMp
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBDaGVjayB1c2luZyBjb250YWluc0ludGVybmFs
IGZpcnN0IHNpbmNlIGl0IGlzIGEgbG90IGZhc3RlciB0aGFuIGdvaW5nCisgICAgLy8gdGhyb3Vn
aCB0aGUgc3RyaW5nIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuCisgICAgYm9vbCBmb3VuZCA9IGZh
bHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG9rZW5zLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGlmIChjb250YWluc0ludGVybmFsKHRva2Vuc1tpXSkpIHsKKyAgICAgICAgICAgIGZv
dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKGZvdW5kKQorICAgICAgICBzZXRWYWx1ZShyZW1vdmVUb2tlbnModmFsdWUoKSwgdG9rZW5z
KSk7Cit9CisKK2Jvb2wgRE9NVG9rZW5MaXN0Ojp0b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2Vu
LCBlYykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChjb250YWluc0ludGVybmFs
KHRva2VuKSkgeworICAgICAgICByZW1vdmVJbnRlcm5hbCh0b2tlbik7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgYWRkSW50ZXJuYWwodG9rZW4pOworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIERPTVRva2VuTGlzdDo6YWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5n
JiB0b2tlbikKK3sKKyAgICBpZiAoIWNvbnRhaW5zSW50ZXJuYWwodG9rZW4pKQorICAgICAgICBz
ZXRWYWx1ZShhZGRUb2tlbih2YWx1ZSgpLCB0b2tlbikpOworfQorCit2b2lkIERPTVRva2VuTGlz
dDo6cmVtb3ZlSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKK3sKKyAgICAvLyBD
aGVjayB1c2luZyBjb250YWlucyBmaXJzdCBzaW5jZSBpdCB1c2VzIEF0b21pY1N0cmluZyBjb21w
YXJpc29ucyBpbnN0ZWFkCisgICAgLy8gb2YgY2hhcmFjdGVyIGJ5IGNoYXJhY3RlciB0ZXN0aW5n
LgorICAgIGlmICghY29udGFpbnNJbnRlcm5hbCh0b2tlbikpCisgICAgICAgIHJldHVybjsKKyAg
ICBzZXRWYWx1ZShyZW1vdmVUb2tlbih2YWx1ZSgpLCB0b2tlbikpOworfQorCiBTdHJpbmcgRE9N
VG9rZW5MaXN0OjphZGRUb2tlbihjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0LCBjb25zdCBBdG9t
aWNTdHJpbmcmIHRva2VuKQogewotICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiB0b2tlbjsKKyAgICBWZWN0b3I8U3RyaW5nPiB0b2tlbnM7CisgICAgdG9rZW5zLmFwcGVu
ZCh0b2tlbi5zdHJpbmcoKSk7CisgICAgcmV0dXJuIGFkZFRva2VucyhpbnB1dCwgdG9rZW5zKTsK
K30KKworU3RyaW5nIERPTVRva2VuTGlzdDo6YWRkVG9rZW5zKGNvbnN0IEF0b21pY1N0cmluZyYg
aW5wdXQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMpCit7CisgICAgYm9vbCBuZWVkc1Nw
YWNlID0gZmFsc2U7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5h
cHBlbmQoaW5wdXQpOwotICAgIGlmICghaXNIVE1MU3BhY2UoaW5wdXRbaW5wdXQubGVuZ3RoKCkg
LSAxXSkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgaWYgKCFpbnB1dC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoaW5wdXQpOworICAgICAgICBuZWVkc1Nw
YWNlID0gIWlzSFRNTFNwYWNlKGlucHV0W2lucHV0Lmxlbmd0aCgpIC0gMV0pOworICAgIH0KKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG9rZW5zLnNpemUoKTsgKytpKSB7CisgICAgICAg
IGlmIChuZWVkc1NwYWNlKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQodG9rZW5zW2ldKTsKKyAgICAgICAgbmVlZHNTcGFjZSA9IHRydWU7
CisgICAgfQogCi0gICAgYnVpbGRlci5hcHBlbmQodG9rZW4pOwogICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBET01Ub2tlbkxpc3Q6OnJlbW92ZVRva2VuKGNvbnN0
IEF0b21pY1N0cmluZyYgaW5wdXQsIGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4pCiB7CisgICAg
VmVjdG9yPFN0cmluZz4gdG9rZW5zOworICAgIHRva2Vucy5hcHBlbmQodG9rZW4uc3RyaW5nKCkp
OworICAgIHJldHVybiByZW1vdmVUb2tlbnMoaW5wdXQsIHRva2Vucyk7Cit9CisKK1N0cmluZyBE
T01Ub2tlbkxpc3Q6OnJlbW92ZVRva2Vucyhjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0LCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zKQorewogICAgIC8vIEFsZ29yaXRobSBkZWZpbmVkIGF0
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlw
YWdlL2NvbW1vbi1taWNyb3N5bnRheGVzLmh0bWwjcmVtb3ZlLWEtdG9rZW4tZnJvbS1hLXN0cmlu
ZworICAgIC8vIE5ldyBzcGVjIGlzIGF0IGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNyZW1v
dmUtYS10b2tlbi1mcm9tLWEtc3RyaW5nCiAKICAgICB1bnNpZ25lZCBpbnB1dExlbmd0aCA9IGlu
cHV0Lmxlbmd0aCgpOwogICAgIFN0cmluZ0J1aWxkZXIgb3V0cHV0OyAvLyAzCkBAIC04NSw3ICsy
MDAsNyBAQCBTdHJpbmcgRE9NVG9rZW5MaXN0OjpyZW1vdmVUb2tlbihjb25zdCBBdG9taWNTdHJp
bmcmIGlucHV0LCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgICAgICAgICBzLmFwcGVuZChpbnB1
dFtwb3NpdGlvbisrXSk7CiAKICAgICAgICAgLy8gU3RlcCA4Ci0gICAgICAgIGlmIChzLnRvU3Ry
aW5nUHJlc2VydmVDYXBhY2l0eSgpID09IHRva2VuKSB7CisgICAgICAgIGlmICh0b2tlbnMuY29u
dGFpbnMocy50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSkpIHsKICAgICAgICAgICAgIC8vIFN0
ZXAgOC4xCiAgICAgICAgICAgICB3aGlsZSAocG9zaXRpb24gPCBpbnB1dExlbmd0aCAmJiBpc0hU
TUxTcGFjZShpbnB1dFtwb3NpdGlvbl0pKQogICAgICAgICAgICAgICAgICsrcG9zaXRpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAppbmRleCBmZDExMGI3ZmZkMDRmNjA5YzIwMzNlZDMy
YTNiMjE2OTg4YWRkMzMxLi40YjI1ZGNlNWUzYzg5NzI0ZmE1NTNiMGI3MTQ2N2U1MWE1NjMyYTlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKQEAgLTQ1LDE4ICs0NSwzMiBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFkZChjb25zdCBBdG9taWNTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgQXRv
bWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgdG9nZ2xl
KGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7Ci0gICAgdmlydHVhbCBT
dHJpbmcgdG9TdHJpbmcoKSBjb25zdCA9IDA7CisKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IEF0
b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWRkKGNv
bnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVt
b3ZlKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBib29sIHRvZ2ds
ZShjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBBdG9taWNTdHJp
bmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9CiAKICAgICB2aXJ0dWFsIEVs
ZW1lbnQqIGVsZW1lbnQoKSB7IHJldHVybiAwOyB9CiAKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IEF0b21pY1N0cmluZyB2YWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFs
dWUoY29uc3QgQXRvbWljU3RyaW5nJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGFkZEludGVy
bmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb250YWluc0ludGVy
bmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJik7CisKICAgICBzdGF0aWMgYm9vbCB2YWxp
ZGF0ZVRva2VuKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0
aWMgYm9vbCB2YWxpZGF0ZVRva2Vucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICBzdGF0aWMgU3RyaW5nIGFkZFRva2VuKGNvbnN0IEF0b21pY1N0cmluZyYsIGNv
bnN0IEF0b21pY1N0cmluZyYpOworICAgIHN0YXRpYyBTdHJpbmcgYWRkVG9rZW5zKGNvbnN0IEF0
b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgc3RhdGljIFN0cmluZyBy
ZW1vdmVUb2tlbihjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAg
ICBzdGF0aWMgU3RyaW5nIHJlbW92ZVRva2Vucyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9ET01Ub2tlbkxpc3QuaWRsCmluZGV4IGNmNTdlMWFlZWY5NmUyOTY3NTAwZWUxN2U1MGY0
MmZkMDg5YzY3MmIuLjg1ZWYxMDkyYzcxYTExOTMyYWQwZTdhNTZjYTQzYTU1NWFiZDA4YWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwKQEAgLTMxLDggKzMxLDggQEAgbW9kdWxl
IGNvcmUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7
CiAgICAgICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyBpdGVt
KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgICAgICBib29sZWFuIGNvbnRhaW5zKGluIERP
TVN0cmluZyB0b2tlbikgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIHZvaWQgYWRkKGlu
IERPTVN0cmluZyB0b2tlbikgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIHZvaWQgcmVt
b3ZlKGluIERPTVN0cmluZyB0b2tlbikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZv
aWQgYWRkKGluIERPTVN0cmluZy4uLiB0b2tlbnMpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAg
ICAgICB2b2lkIHJlbW92ZShpbiBET01TdHJpbmcuLi4gdG9rZW5zKSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKICAgICAgICAgYm9vbGVhbiB0b2dnbGUoaW4gRE9NU3RyaW5nIHRva2VuKSByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFO
R1VBR0VfSkFWQVNDUklQVApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk1NTA3ZTFjMzI5MmQyOWMyNDI2MWY3NmZlNjk3MDhh
NTlkMWJlYTUuLmNiMmNiODVlZDk0NDI2N2IzMTgzMDM3YjhjYjY3NTYwNDJjOGZjMjQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyOCBAQAorMjAxMi0wOS0yNiAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIERPTTQ6IEFkZCBzdXBwb3J0IGZvciByZXN0IHBhcmFtZXRlcnMg
dG8gRE9NVG9rZW5MaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NzMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciByZXN0IHBhcmFtYXRlcnMgdG8gRE9NVG9rZW5M
aXN0IGFkZCBhbmQgcmVtb3ZlLgorICAgICAgICBodHRwOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8j
ZG9tdG9rZW5saXN0CisKKyAgICAgICAgVGhlIGNvZGUgZ2VuZXJhdG9yIGhhcyBiZWVuIHVwZGF0
ZWQgdG8gdW5kZXJzdGFuZCB2YXJpYWRpYyBtZXRob2RzLgorICAgICAgICBXaGVuIGEgbWV0aG9k
IGhhcyBhIHJlc3QgcGFyYW1ldGVyIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBjb2xsZWN0
ZWQKKyAgICAgICAgaW50byBhIFdURjo6VmVjdG9yLgorCisgICAgICAgIERPTVRva2VuTGlzdCwg
RE9NU2V0dGFibGVUb2tlbkxpc3QgYW5kIENsYXNzTGlzdCB3ZXJlIHJlc3RydWN0dXJlZCBhIGJp
dCB0bworICAgICAgICBhbGxvdyBjb2RlIHRvIGJlIHNoYXJlZCBiZXR0ZXIuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LXF1aXJrcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9kb20vSFRNTEVsZW1lbnQvc2NyaXB0LXRlc3RzL2NsYXNzLWxpc3QuanM6
CisgICAgICAgIChlbGVtZW50LmNsYXNzTGlzdC5hZGQpOgorICAgICAgICAoY3JlYXRlRWxlbWVu
dCk6CisgICAgICAgIChzaG91bGRCZUVxdWFsVG9TdHJpbmcpOgorICAgICAgICAoZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKToKKwogMjAxMi0wOS0yNCAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJlbW92aW5nIFdpbmRvd3Mgc3BlY2lm
aWMgcmVzdWx0cyBmb3IgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvZmxvYXQtYXMtb25seS1jaGls
ZC1vZi1pc29sYXRlLWNyYXNoIHRoYXQgd2VyZSBhZGRlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc5OTguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtZXhwZWN0ZWQudHh0CmluZGV4IDcxNjRkNGJm
OGJiMjI3OTQ2MjQ4MzkxMzkwMjNjMTYyOWMwYzhjYjcuLmU0MWRkODhhZWIwZTY2MjUwZDc1NDdl
ODQ5ZTYwYzY2M2IxMjAxY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxF
bGVtZW50L2NsYXNzLWxpc3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtZXhwZWN0ZWQudHh0CkBAIC0zMSwxMCArMzEsOCBAQCBQ
QVNTIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCcnKSB0aHJldyBleHBlY3RlZCBET01FeGNl
cHRpb24gd2l0aCBjb2RlIDEyCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCd4IHkn
KSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDUKIFBBU1MgZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCcnKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEy
CiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgneCB5JykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhj
ZXB0aW9uIHdpdGggY29kZSA1Ci1QQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyBlbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoJycpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUg
MTIKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd4IHknKSB0aHJldyBleHBlY3RlZCBE
T01FeGNlcHRpb24gd2l0aCBjb2RlIDUKLVBBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCiBQQVNTIGVs
ZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgnJykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdp
dGggY29kZSAxMgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoJ3ggeScpIHRocmV3IGV4
cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC50
b2dnbGUoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4K
QEAgLTc0LDYgKzcyLDI2IEBAIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QuY29uc3RydWN0b3IgaXMg
RE9NVG9rZW5MaXN0CiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0ID09PSBlbGVtZW50LmNsYXNzTGlz
dCBpcyB0cnVlCiBQQVNTIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJGQUlMIikg
aXMgdHJ1ZQogUEFTUyBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSBpcyAiIgorVmFyaWFkaWMgY2Fs
bHMKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiIKK1BBU1MgZWxlbWVudC5jbGFzc05h
bWUgaXMgImEgYiBjIgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBiIGMgbnVsbCBkIHVu
ZGVmaW5lZCAwIGZhbHNlIgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBiIGEiCitQQVNT
IGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYScsICdiJywgJycpIHRocmV3IGV4cGVjdGVkIERPTUV4
Y2VwdGlvbiB3aXRoIGNvZGUgMTIKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgIiIKK1BBU1Mg
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhJywgJ2InLCAnYyBkJykgdGhyZXcgZXhwZWN0ZWQgRE9N
RXhjZXB0aW9uIHdpdGggY29kZSA1CitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICIiCitQQVNT
IGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBv
YnNlcnZlci50YWtlUmVjb3JkcygpLmxlbmd0aCBpcyAxCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1l
IGlzICJiIGQgICIKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImQgICIKK1BBU1MgZWxlbWVu
dC5jbGFzc05hbWUgaXMgImEgYiBjIgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2En
LCAnYicsICcnKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEyCitQQVNT
IGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZSgnYScsICdiJywgJ2MgZCcpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUg
NQorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBiIgorUEFTUyBlbGVtZW50LmNsYXNzTGlz
dC5yZW1vdmUoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgb2JzZXJ2ZXIudGFrZVJl
Y29yZHMoKS5sZW5ndGggaXMgMQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVu
dC9jbGFzcy1saXN0LXF1aXJrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRWxlbWVudC9jbGFzcy1saXN0LXF1aXJrcy1leHBlY3RlZC50eHQKaW5kZXggNzE2NGQ0YmY4
YmIyMjc5NDYyNDgzOTEzOTAyM2MxNjI5YzBjOGNiNy4uZTQxZGQ4OGFlYjBlNjYyNTBkNzU0N2U4
NDllNjBjNjYzYjEyMDFjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVs
ZW1lbnQvY2xhc3MtbGlzdC1xdWlya3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtcXVpcmtzLWV4cGVjdGVkLnR4dApAQCAtMzEs
MTAgKzMxLDggQEAgUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnJykgdGhyZXcgZXhw
ZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucygneCB5JykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1CiBQ
QVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnJykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9u
IHdpdGggY29kZSAxMgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3ggeScpIHRocmV3IGV4
cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQotUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5h
ZGQoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBB
U1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCcnKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRp
b24gd2l0aCBjb2RlIDEyCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgneCB5JykgdGhy
ZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1Ci1QQVNTIGVsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzLgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoJycpIHRocmV3IGV4cGVjdGVkIERP
TUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCd4
IHknKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDUKIFBBU1MgZWxlbWVu
dC5jbGFzc0xpc3QudG9nZ2xlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMuCkBAIC03NCw2ICs3MiwyNiBAQCBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmNv
bnN0cnVjdG9yIGlzIERPTVRva2VuTGlzdAogUEFTUyBlbGVtZW50LmNsYXNzTGlzdCA9PT0gZWxl
bWVudC5jbGFzc0xpc3QgaXMgdHJ1ZQogUEFTUyBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250
YWlucygiRkFJTCIpIGlzIHRydWUKIFBBU1MgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgaXMgIiIK
K1ZhcmlhZGljIGNhbGxzCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIiCitQQVNTIGVs
ZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIgYyIKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEg
YiBjIG51bGwgZCB1bmRlZmluZWQgMCBmYWxzZSIKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMg
ImEgYiBhIgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2EnLCAnYicsICcnKSB0aHJldyBl
eHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEyCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1l
IGlzICIiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYScsICdiJywgJ2MgZCcpIHRocmV3
IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQorUEFTUyBlbGVtZW50LmNsYXNzTmFt
ZSBpcyAiIgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5hZGQoKSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1Mgb2JzZXJ2ZXIudGFrZVJlY29yZHMoKS5sZW5ndGggaXMgMQorUEFTUyBlbGVt
ZW50LmNsYXNzTmFtZSBpcyAiYiBkICAiCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJkICAi
CitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIgYyIKK1BBU1MgZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKCdhJywgJ2InLCAnJykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGgg
Y29kZSAxMgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBiIgorUEFTUyBlbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoJ2EnLCAnYicsICdjIGQnKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRp
b24gd2l0aCBjb2RlIDUKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiIKK1BBU1MgZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG9i
c2VydmVyLnRha2VSZWNvcmRzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEVsZW1lbnQvc2NyaXB0LXRlc3RzL2NsYXNzLWxpc3QuanMgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRWxlbWVudC9zY3JpcHQtdGVzdHMvY2xhc3MtbGlzdC5qcwppbmRleCAzMjE5
MGJiN2E1MjczZTk4NmI2ZGM3NzhhNzYyMTU0YzI5YWU3N2NhLi40ZWYyYTVjNmU1NTE3MjUyODdj
NjNlMGZjMzI3MzI0ZDFkNWRmYzBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRWxlbWVudC9zY3JpcHQtdGVzdHMvY2xhc3MtbGlzdC5qcworKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRWxlbWVudC9zY3JpcHQtdGVzdHMvY2xhc3MtbGlzdC5qcwpAQCAtMTU0LDkg
KzE1NCw2IEBAIHNob3VsZFRocm93RE9NRXhjZXB0aW9uKGZ1bmN0aW9uKCkgewogfSwgRE9NRXhj
ZXB0aW9uLklOVkFMSURfQ0hBUkFDVEVSX0VSUik7CiAKIGNyZWF0ZUVsZW1lbnQoJycpOwotc2hv
dWxkVGhyb3coImVsZW1lbnQuY2xhc3NMaXN0LmFkZCgpIik7Ci0KLWNyZWF0ZUVsZW1lbnQoJycp
Owogc2hvdWxkVGhyb3dET01FeGNlcHRpb24oZnVuY3Rpb24oKSB7CiAgICAgZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKCcnKTsKIH0sIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSKTsKQEAgLTE2Niw4
ICsxNjMsNyBAQCBzaG91bGRUaHJvd0RPTUV4Y2VwdGlvbihmdW5jdGlvbigpIHsKICAgICBlbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3ggeScpOwogfSwgRE9NRXhjZXB0aW9uLklOVkFMSURfQ0hB
UkFDVEVSX0VSUik7CiAKLWNyZWF0ZUVsZW1lbnQoJycpOwotc2hvdWxkVGhyb3coImVsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSgpIik7CisKIAogY3JlYXRlRWxlbWVudCgnJyk7CiBzaG91bGRUaHJv
d0RPTUV4Y2VwdGlvbihmdW5jdGlvbigpIHsKQEAgLTI2NSwzICsyNjEsNzIgQEAgZG9jdW1lbnQu
Ym9keS5jbGFzc0xpc3QuYWRkKCdGQUlMJyk7CiBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmJvZHku
Y2xhc3NMaXN0LmNvbnRhaW5zKCJGQUlMIiknKTsKIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJl
bW92ZSgnRkFJTCcpOwogc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5ib2R5LmNsYXNz
TmFtZScsICcnKTsKKworLy8gVmFyaWFkaWMKKworZGVidWcoJ1ZhcmlhZGljIGNhbGxzJyk7CisK
K2NyZWF0ZUVsZW1lbnQoJycpOworZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhJywgJ2InKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygnZWxlbWVudC5jbGFzc05hbWUnLCAnYSBiJyk7CisKK2VsZW1l
bnQuY2xhc3NMaXN0LmFkZCgnYScsICdiJywgJ2MnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygn
ZWxlbWVudC5jbGFzc05hbWUnLCAnYSBiIGMnKTsKKworZWxlbWVudC5jbGFzc0xpc3QuYWRkKG51
bGwsIHt0b1N0cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAnZCcgfX0sIHVuZGVmaW5lZCwgMCwg
ZmFsc2UpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNzTmFtZScsICdhIGIg
YyBudWxsIGQgdW5kZWZpbmVkIDAgZmFsc2UnKTsKKworY3JlYXRlRWxlbWVudCgnJyk7CitlbGVt
ZW50LmNsYXNzTGlzdC5hZGQoJ2EnLCAnYicsICdhJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2VsZW1lbnQuY2xhc3NOYW1lJywgJ2EgYiBhJyk7CisKK2NyZWF0ZUVsZW1lbnQoJycpOworc2hv
dWxkVGhyb3dET01FeGNlcHRpb24oZnVuY3Rpb24oKSB7CisgICAgZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCdhJywgJ2InLCAnJyk7Cit9LCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2VsZW1lbnQuY2xhc3NOYW1lJywgJycpOworCitzaG91bGRUaHJvd0RP
TUV4Y2VwdGlvbihmdW5jdGlvbigpIHsKKyAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2EnLCAn
YicsICdjIGQnKTsKK30sIERPTUV4Y2VwdGlvbi5JTlZBTElEX0NIQVJBQ1RFUl9FUlIpOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNzTmFtZScsICcnKTsKKworY3JlYXRlRWxl
bWVudCgnJyk7CitzaG91bGROb3RUaHJvdygnZWxlbWVudC5jbGFzc0xpc3QuYWRkKCknKTsKKwor
Y3JlYXRlRWxlbWVudCgnJyk7Cit2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNl
cnZlcihmdW5jdGlvbigpIHt9KTsKK29ic2VydmVyLm9ic2VydmUoZWxlbWVudCwge2F0dHJpYnV0
ZXM6IHRydWV9KTsKK2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYScsICdjJyk7CitzaG91bGRCZSgn
b2JzZXJ2ZXIudGFrZVJlY29yZHMoKS5sZW5ndGgnLCAnMScpOworCisKK2NyZWF0ZUVsZW1lbnQo
J2EgYiBjIGQgICcpOworZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhJywgJ2MnKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygnZWxlbWVudC5jbGFzc05hbWUnLCAnYiBkICAnKTsKKworZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCdiJywgJ2InKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZWxl
bWVudC5jbGFzc05hbWUnLCAnZCAgJyk7CisKK2NyZWF0ZUVsZW1lbnQoJ2EgYiBjIG51bGwgZCB1
bmRlZmluZWQgMCBmYWxzZScpOworZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKG51bGwsIHt0b1N0
cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAnZCcgfX0sIHVuZGVmaW5lZCwgMCwgZmFsc2UpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNzTmFtZScsICdhIGIgYycpOworCitj
cmVhdGVFbGVtZW50KCdhIGInKTsKK3Nob3VsZFRocm93RE9NRXhjZXB0aW9uKGZ1bmN0aW9uKCkg
eworICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnYScsICdiJywgJycpOworfSwgRE9NRXhj
ZXB0aW9uLlNZTlRBWF9FUlIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNz
TmFtZScsICdhIGInKTsKKworc2hvdWxkVGhyb3dET01FeGNlcHRpb24oZnVuY3Rpb24oKSB7Cisg
ICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhJywgJ2InLCAnYyBkJyk7Cit9LCBET01FeGNl
cHRpb24uSU5WQUxJRF9DSEFSQUNURVJfRVJSKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZWxl
bWVudC5jbGFzc05hbWUnLCAnYSBiJyk7CisKK3Nob3VsZE5vdFRocm93KCdlbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoKScpOworCitjcmVhdGVFbGVtZW50KCdhIGIgYycpOworb2JzZXJ2ZXIgPSBu
ZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpIHt9KTsKK29ic2VydmVyLm9ic2Vy
dmUoZWxlbWVudCwge2F0dHJpYnV0ZXM6IHRydWV9KTsKK2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZSgnYScsICdjJyk7CitzaG91bGRCZSgnb2JzZXJ2ZXIudGFrZVJlY29yZHMoKS5sZW5ndGgnLCAn
MScpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166000</attachid>
            <date>2012-09-27 07:52:29 -0700</date>
            <delta_ts>2012-09-27 09:20:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97335-20120927105147.patch</filename>
            <type>text/plain</type>
            <size>68143</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJmYTQ2YzM5YTE5ZDQ1
NzhlZDExOWU1OGU3ZGM2YzQ1NGM5ZTYxYi4uMWJlZTJiNTZjYTI5M2Y5ZjZmNWFkNzJmOTQyNWE1
MzY5MDA2MTY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wOS0yNiAgRXJp
ayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERPTTQ6IEFkZCBzdXBw
b3J0IGZvciByZXN0IHBhcmFtZXRlcnMgdG8gRE9NVG9rZW5MaXN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzMzNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciByZXN0
IHBhcmFtYXRlcnMgdG8gRE9NVG9rZW5MaXN0IGFkZCBhbmQgcmVtb3ZlLgorICAgICAgICBodHRw
Oi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tdG9rZW5saXN0CisKKyAgICAgICAgVGhlIGNvZGUg
Z2VuZXJhdG9yIGhhcyBiZWVuIHVwZGF0ZWQgdG8gdW5kZXJzdGFuZCB2YXJpYWRpYyBtZXRob2Rz
LgorICAgICAgICBXaGVuIGEgbWV0aG9kIGhhcyBhIHJlc3QgcGFyYW1ldGVyIHRoZSByZW1haW5p
bmcgYXJndW1lbnRzIGFyZSBjb2xsZWN0ZWQKKyAgICAgICAgaW50byBhIFdURjo6VmVjdG9yLgor
CisgICAgICAgIERPTVRva2VuTGlzdCwgRE9NU2V0dGFibGVUb2tlbkxpc3QgYW5kIENsYXNzTGlz
dCB3ZXJlIHJlc3RydWN0dXJlZCBhIGJpdCB0bworICAgICAgICBhbGxvdyBjb2RlIHRvIGJlIHNo
YXJlZCBiZXR0ZXIuCisKKyAgICAgICAgVXBkYXRlZCBleGlzdGluZyB0ZXN0cyBhbmQgaW5jbHVk
ZXMgbmV3IGJpbmRpbmcgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZlQXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b05hdGl2ZUFyZ3VtZW50cyk6IFNpbWlsYXIgdG8gdG9O
YXRpdmVBcnJheSBidXQgZXh0cmFjdHMgdGhlIGFyZ3VtZW50cyBpbnN0ZWFkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVB
cmd1bWVudHNDb3VudENoZWNrKTogVXBkYXRlZCB0byB0cmVhdCByZXN0IHBhcmFtYXRlcnMgYXMg
b3B0aW9uYWwuCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6IEdlbmVyYXRlIGNv
ZGUgZm9yIHJlc3QgcGFyYW1zLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvblBhcmFtZXRlcnNDaGVjayk6IFVw
ZGF0ZWQgdG8gdHJlYXQgcmVzdCBwYXJhbWF0ZXJzIGFzIG9wdGlvbmFsLgorICAgICAgICAoR2Vu
ZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjayk6ICBHZW5lcmF0ZSBjb2RlIGZvciByZXN0IHBhcmFtcy4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKHBhcnNlT3B0aW9uYWxPclJl
cXVpcmVkQXJndW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJl
LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5j
cHA6CisgICAgICAgIChXZWJET01UZXN0T2JqOjp2YXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAg
ICAgIChXZWJET01UZXN0T2JqOjp2YXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJE
T01UZXN0T2JqOjp2YXJpYWRpY05vZGVNZXRob2QpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAod2Via2l0X2RvbV90
ZXN0X29ial92YXJpYWRpY19zdHJpbmdfbWV0aG9kKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9vYmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3ZhcmlhZGljX25vZGVfbWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJs
ZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZh
cmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAgICAgICgtW0RPTVRlc3RPYmogdmFyaWFkaWNTdHJp
bmdNZXRob2Q6dGFpbDpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiB2YXJpYWRpY0RvdWJsZU1l
dGhvZDp0YWlsOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHZhcmlhZGljTm9kZU1ldGhvZDp0
YWlsOl0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY1N0cmluZ01ldGhvZENhbGxiYWNr
KToKKyAgICAgICAgKFRlc3RPYmpWOEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjp2YXJpYWRpY0RvdWJsZU1ldGhvZENhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRob2RDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE9ialRl
bXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvTmF0aXZlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjp0b05hdGl2ZUFyZ3VtZW50cyk6IFNpbWlsYXIgdG8gdG9OYXRpdmVBcnJheSBidXQgZXh0
cmFjdHMgdGhlIGFyZ3VtZW50cyBpbnN0ZWFkLgorICAgICAgICAqIGh0bWwvQ2xhc3NMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTGlzdDo6Q2xhc3NMaXN0KToKKyAgICAgICAgKiBo
dG1sL0NsYXNzTGlzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDbGFzc0xpc3Qp
OgorICAgICAgICAqIGh0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NU2V0dGFibGVUb2tlbkxpc3Q6OmNvbnRhaW5zSW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NU2V0dGFibGVUb2tlbkxpc3Q6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01TZXR0YWJsZVRva2VuTGlzdDo6YWRkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
U2V0dGFibGVUb2tlbkxpc3Q6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01TZXR0YWJs
ZVRva2VuTGlzdDo6cmVtb3ZlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2V0dGFi
bGVUb2tlbkxpc3Q6OnNldFZhbHVlKToKKyAgICAgICAgKiBodG1sL0RPTVNldHRhYmxlVG9rZW5M
aXN0Lmg6CisgICAgICAgIChET01TZXR0YWJsZVRva2VuTGlzdCk6CisgICAgICAgICogaHRtbC9E
T01Ub2tlbkxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojp2YWxpZGF0
ZVRva2Vucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2Vu
TGlzdDo6Y29udGFpbnMpOiBNb3ZlZCBpbXBsZW1lbnRhdGlvbiB0byBiYXNlIGNsYXNzIHRvIGFs
bG93IGNvZGUgc2hhcmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6YWRkKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnJlbW92ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojp0b2dnbGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6YWRkSW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRva2VuTGlzdDo6cmVtb3ZlSW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRva2VuTGlzdDo6YWRkVG9rZW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRPTVRva2VuTGlzdDo6YWRkVG9rZW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlz
dDo6cmVtb3ZlVG9rZW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6
cmVtb3ZlVG9rZW5zKToKKyAgICAgICAgKiBodG1sL0RPTVRva2VuTGlzdC5oOgorICAgICAgICAo
RE9NVG9rZW5MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6dG9TdHJpbmcp
OgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmlkbDoKKwogMjAxMi0wOS0yNyAgSWx5YSBU
aWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogTk1JOiBtb3ZlIHZpc2l0ZWQgYW5kIGNvdW50T2JqZWN0U2l6ZSBtZXRob2RzIGltcGxlbWVu
dGF0aW9uIGludG8gc2VwYXJhdGUgY2xhc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oCmluZGV4IDc1MzJiNzkzZTcyOGQwZDhiYzFhZTJkNWMzZTJhMTJlOTA5NzEz
OTAuLjFlZmE0YjMwNGY2MmI3MDE1ZWExZTVkZTcxYzJlYzhkZTRiYzU4MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0zNTMsNyArMzUzLDcgQEAgZW51
bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKIAogICAgIHRlbXBsYXRlPD4KICAgICBzdHJ1Y3Qg
TmF0aXZlVmFsdWVUcmFpdHM8U3RyaW5nPiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBh
cnJheU5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1
ZSwgU3RyaW5nJiBpbmRleGVkVmFsdWUpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRp
dmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIFN0cmlu
ZyYgaW5kZXhlZFZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBpbmRleGVkVmFsdWUgPSBq
c1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMzYyLDcgKzM2Miw3IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAK
ICAgICB0ZW1wbGF0ZTw+CiAgICAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPHVuc2lnbmVkIGxv
bmc+IHsKLSAgICAgICAgc3RhdGljIGlubGluZSBib29sIGFycmF5TmF0aXZlVmFsdWUoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCB1bnNpZ25lZCBsb25nJiBpbmRl
eGVkVmFsdWUpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIHVuc2lnbmVkIGxvbmcmIGluZGV4
ZWRWYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFqc1ZhbHVlLmlzTnVtYmVyKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIGVudW0g
UGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAKICAgICB0ZW1wbGF0ZTw+CiAgICAgc3RydWN0IE5h
dGl2ZVZhbHVlVHJhaXRzPGZsb2F0PiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhcnJh
eU5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwg
ZmxvYXQmIGluZGV4ZWRWYWx1ZSkKKyAgICAgICAgc3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZh
bHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgZmxvYXQmIGlu
ZGV4ZWRWYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgaW5kZXhlZFZhbHVlID0ganNWYWx1
ZS50b0Zsb2F0KGV4ZWMpOwogICAgICAgICAgICAgcmV0dXJuICFleGVjLT5oYWRFeGNlcHRpb24o
KTsKQEAgLTQwMCw3ICs0MDAsMjUgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKIAog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAg
ICAgIFQgaW5kZXhWYWx1ZTsKLSAgICAgICAgICAgIGlmICghVHJhaXRzVHlwZTo6YXJyYXlOYXRp
dmVWYWx1ZShleGVjLCBvYmplY3QtPmdldChleGVjLCBpKSwgaW5kZXhWYWx1ZSkpCisgICAgICAg
ICAgICBpZiAoIVRyYWl0c1R5cGU6Om5hdGl2ZVZhbHVlKGV4ZWMsIG9iamVjdC0+Z2V0KGV4ZWMs
IGkpLCBpbmRleFZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKGluZGV4VmFsdWUpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgVmVj
dG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3Qgc3Rh
cnRJbmRleCA9IDApCisgICAgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0gZXhlYy0+YXJndW1l
bnRDb3VudCgpOworICAgICAgICBBU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOworCisgICAg
ICAgIFZlY3RvcjxUPiByZXN1bHQ7CisgICAgICAgIHR5cGVkZWYgTmF0aXZlVmFsdWVUcmFpdHM8
VD4gVHJhaXRzVHlwZTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBUIGluZGV4VmFsdWU7CisgICAgICAgICAgICBp
ZiAoIVRyYWl0c1R5cGU6Om5hdGl2ZVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KGkpLCBpbmRl
eFZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7CiAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKGluZGV4VmFsdWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDY1OTE0YjU2
ODc3ZjY1Y2ExZDkwY2Y2OTU1MjZjMWNmNjY1ZDkxMjAuLmUyZTI2OTdhNDc4MWU2NTE5ZWIzNjY3
NWU1MzQ1MTBiYmI5MmJiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMzA4LDYgKzEzMDgsNyBAQCBzdWIgR2VuZXJh
dGVGdW5jdGlvblBhcmFtZXRlcnNDaGVjawogICAgIG15IEBvckV4cHJlc3Npb24gPSAoKTsKICAg
ICBteSAkbnVtUGFyYW1ldGVycyA9IDA7CiAgICAgbXkgQG5lZWRlZEFyZ3VtZW50cyA9ICgpOwor
ICAgIG15ICRoYXNWYXJpYWRpYyA9IDA7CiAgICAgbXkgJG51bU1hbmRhdG9yeVBhcmFtcyA9IEB7
JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKIAogICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHsk
ZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CkBAIC0xMzE3LDExICsxMzE4LDE3IEBAIHN1YiBHZW5l
cmF0ZUZ1bmN0aW9uUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICBwdXNoKEBuZWVkZWRBcmd1
bWVudHMsIEB1c2VkQXJndW1lbnRzKTsKICAgICAgICAgICAgICRudW1NYW5kYXRvcnlQYXJhbXMt
LTsKICAgICAgICAgfQorICAgICAgICBpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykgeworICAg
ICAgICAgICAgJGhhc1ZhcmlhZGljID0gMTsKKyAgICAgICAgICAgIGxhc3Q7CisgICAgICAgIH0K
ICAgICAgICAgJG51bVBhcmFtZXRlcnMrKzsKICAgICB9Ci0gICAgbXkgKCRleHByZXNzaW9uLCBA
dXNlZEFyZ3VtZW50cykgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24oJG51bVBh
cmFtZXRlcnMsICRmdW5jdGlvbik7Ci0gICAgcHVzaChAb3JFeHByZXNzaW9uLCAkZXhwcmVzc2lv
bik7Ci0gICAgcHVzaChAbmVlZGVkQXJndW1lbnRzLCBAdXNlZEFyZ3VtZW50cyk7CisgICAgaWYg
KCEkaGFzVmFyaWFkaWMpIHsKKyAgICAgICAgbXkgKCRleHByZXNzaW9uLCBAdXNlZEFyZ3VtZW50
cykgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24oJG51bVBhcmFtZXRlcnMsICRm
dW5jdGlvbik7CisgICAgICAgIHB1c2goQG9yRXhwcmVzc2lvbiwgJGV4cHJlc3Npb24pOworICAg
ICAgICBwdXNoKEBuZWVkZWRBcmd1bWVudHMsIEB1c2VkQXJndW1lbnRzKTsKKyAgICB9CiAgICAg
cmV0dXJuICgkbnVtTWFuZGF0b3J5UGFyYW1zLCBqb2luKCIgfHwgIiwgQG9yRXhwcmVzc2lvbiks
IEBuZWVkZWRBcmd1bWVudHMpOwogfQogCkBAIC0yNjA0LDcgKzI2MTEsNyBAQCBzdWIgR2VuZXJh
dGVBcmd1bWVudHNDb3VudENoZWNrCiAKICAgICBteSAkbnVtTWFuZGF0b3J5UGFyYW1zID0gQHsk
ZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwogICAgIGZvcmVhY2ggbXkgJHBhcmFtIChyZXZlcnNlKEB7
JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkpIHsKLSAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKKyAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0gb3IgJHBhcmFtLT5pc1ZhcmlhZGljKSB7CiAgICAgICAg
ICAgICAkbnVtTWFuZGF0b3J5UGFyYW1zLS07CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBsYXN0OwpAQCAtMjcwNywxMyArMjcxNCwzOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRhcmdU
eXBlPiAkbmFtZSA9ICR7Y2FsbGJhY2tDbGFzc05hbWV9OjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+
YXJndW1lbnQoJGFyZ3NJbmRleCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7XG4iKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNsYW1wIn0pIHsKLSAgICAgICAgICAgICAgICBteSAkbmF0aXZlVmFsdWUgPSAi
JHtuYW1lfU5hdGl2ZVZhbHVlIjsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgJGFyZ1R5cGUgJG5hbWUgPSAwO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGRvdWJsZSAkbmF0aXZlVmFsdWUgPSBleGVjLT5hcmd1bWVudCgkYXJn
c0luZGV4KS50b051bWJlcihleGVjKTtcbiIpOworICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVl
ID0gIiR7bmFtZX1OYXRpdmVWYWx1ZSI7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgJGFyZ1R5cGUgJG5hbWUgPSAwO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgZG91YmxlICRuYXRpdmVWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5k
ZXgpLnRvTnVtYmVyKGV4ZWMpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKVxuIik7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7XG5cbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghaXNu
YW4oJG5hdGl2ZVZhbHVlKSlcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICAkbmFtZSA9IGNsYW1wVG88JGFyZ1R5cGU+KCRuYXRpdmVWYWx1ZSk7XG5cbiIpOwor
ICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7CisgICAgICAgICAgICBt
eSAkbmF0aXZlRWxlbWVudFR5cGU7CisgICAgICAgICAgICBpZiAoJGFyZ1R5cGUgZXEgIkRPTVN0
cmluZyIpIHsKKyAgICAgICAgICAgICAgICAkbmF0aXZlRWxlbWVudFR5cGUgPSAiU3RyaW5nIjsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJG5hdGl2ZUVsZW1lbnRUeXBl
ID0gR2V0TmF0aXZlVHlwZSgkYXJnVHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKCRuYXRpdmVF
bGVtZW50VHlwZSA9fiAvPiQvKSB7CisgICAgICAgICAgICAgICAgICAgICRuYXRpdmVFbGVtZW50
VHlwZSAuPSAiICI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoIUlzTmF0aXZlVHlwZSgkYXJnVHlwZSkpIHsKKyAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4gJG5hbWU7XG4i
KTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZm9yICh1bnNpZ25l
ZCBpID0gJGFyZ3NJbmRleDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7XG4iKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghZXhlYy0+
YXJndW1lbnQoaSkuaW5oZXJpdHMoJkpTJHthcmdUeXBlfTo6c19pbmZvKSlcbiIpOworICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICAkbmFtZS5hcHBlbmQodG8kYXJnVHlwZShleGVjLT5hcmd1bWVudChpKSkpO1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpCisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBWZWN0b3I8JG5hdGl2ZUVsZW1lbnRUeXBlPiAkbmFtZSA9IHRvTmF0aXZlQXJndW1lbnRzPCRu
YXRpdmVFbGVtZW50VHlwZT4oZXhlYywgJGFyZ3NJbmRleCk7XG4iKTsKKyAgICAgICAgICAgICAg
ICAjIENoZWNrIGlmIHRoZSB0eXBlIGNvbnZlcnNpb24gc3VjY2VlZGVkLgogICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpXG4i
KTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG5cbiIpOwotICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWlzbmFuKCRuYXRpdmVWYWx1ZSkpXG4iKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lID0gY2xhbXBU
bzwkYXJnVHlwZT4oJG5hdGl2ZVZhbHVlKTtcblxuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpO1xuIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICMgSWYgdGhlICJTdHJpY3RUeXBlQ2hlY2tpbmciIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBwcmVz
ZW50LCBhbmQgdGhlIGFyZ3VtZW50J3MgdHlwZSBpcyBhbgogICAgICAgICAgICAgIyBpbnRlcmZh
Y2UgdHlwZSwgdGhlbiBpZiB0aGUgaW5jb21pbmcgdmFsdWUgZG9lcyBub3QgaW1wbGVtZW50IHRo
YXQgaW50ZXJmYWNlLCBhIFR5cGVFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA4NmQzZWI2OGU5YjI3MDA0OTQ3MTZh
N2I1YjUzMjAxZjExMmY2ODQ5Li44ODAzNDQ0MzMzNTFmYjc3MTEwODgxNDNjYTEzYzZmMjc3YzA5
YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQpAQCAtMTQwNSwxNSArMTQwNSwyMiBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvblBh
cmFtZXRlcnNDaGVjawogCiAgICAgbXkgQG9yRXhwcmVzc2lvbiA9ICgpOwogICAgIG15ICRudW1Q
YXJhbWV0ZXJzID0gMDsKKyAgICBteSAkaGFzVmFyaWFkaWMgPSAwOwogICAgIG15ICRudW1NYW5k
YXRvcnlQYXJhbXMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CiAgICAgZm9yZWFjaCBteSAk
cGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgaWYgKCRwYXJh
bWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7CiAgICAgICAgICAgICBw
dXNoKEBvckV4cHJlc3Npb24sIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbigkbnVt
UGFyYW1ldGVycywgJGZ1bmN0aW9uKSk7CiAgICAgICAgICAgICAkbnVtTWFuZGF0b3J5UGFyYW1z
LS07CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmlzVmFyaWFkaWMpIHsKKyAg
ICAgICAgICAgICRoYXNWYXJpYWRpYyA9IDE7CisgICAgICAgICAgICBsYXN0OworICAgICAgICB9
CiAgICAgICAgICRudW1QYXJhbWV0ZXJzKys7CiAgICAgfQotICAgIHB1c2goQG9yRXhwcmVzc2lv
biwgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uKCRudW1QYXJhbWV0ZXJzLCAkZnVu
Y3Rpb24pKTsKKyAgICBpZiAoISRoYXNWYXJpYWRpYykgeworICAgICAgICBwdXNoKEBvckV4cHJl
c3Npb24sIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbigkbnVtUGFyYW1ldGVycywg
JGZ1bmN0aW9uKSk7CisgICAgfQogICAgIHJldHVybiAoJG51bU1hbmRhdG9yeVBhcmFtcywgam9p
bigiIHx8ICIsIEBvckV4cHJlc3Npb24pKTsKIH0KIApAQCAtMTYyNCwxMiArMTYzMSwxMiBAQCBz
dWIgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrCiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7
CiAKICAgICBteSAkbnVtTWFuZGF0b3J5UGFyYW1zID0gMDsKLSAgICBteSAkb3B0aW9uYWxTZWVu
ID0gMDsKKyAgICBteSAkYWxsb3dOb25PcHRpb25hbCA9IDE7CiAgICAgZm9yZWFjaCBteSAkcGFy
YW0gKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewotICAgICAgICBpZiAoJHBhcmFtLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewotICAgICAgICAgICAgJG9wdGlvbmFsU2Vl
biA9IDE7CisgICAgICAgIGlmICgkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25h
bCJ9IG9yICRwYXJhbS0+aXNWYXJpYWRpYykgeworICAgICAgICAgICAgJGFsbG93Tm9uT3B0aW9u
YWwgPSAwOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGllICJBbiBhcmd1bWVudCBt
dXN0IG5vdCBiZSBkZWNsYXJlZCB0byBiZSBvcHRpb25hbCB1bmxlc3MgYWxsIHN1YnNlcXVlbnQg
YXJndW1lbnRzIHRvIHRoZSBvcGVyYXRpb24gYXJlIGFsc28gb3B0aW9uYWwuIiBpZiAkb3B0aW9u
YWxTZWVuOworICAgICAgICAgICAgZGllICJBbiBhcmd1bWVudCBtdXN0IG5vdCBiZSBkZWNsYXJl
ZCB0byBiZSBvcHRpb25hbCB1bmxlc3MgYWxsIHN1YnNlcXVlbnQgYXJndW1lbnRzIHRvIHRoZSBv
cGVyYXRpb24gYXJlIGFsc28gb3B0aW9uYWwuIiBpZiAhJGFsbG93Tm9uT3B0aW9uYWw7CiAgICAg
ICAgICAgICAkbnVtTWFuZGF0b3J5UGFyYW1zKys7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzYw
LDYgKzE3NjcsMjMgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjtc
biI7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgZ290byBm
YWlsO1xuIjsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIH1cbiI7
CisgICAgICAgIH0gZWxzaWYgKCRwYXJhbWV0ZXItPmlzVmFyaWFkaWMpIHsKKyAgICAgICAgICAg
IG15ICRuYXRpdmVFbGVtZW50VHlwZSA9IEdldE5hdGl2ZVR5cGUoJHBhcmFtZXRlci0+dHlwZSk7
CisgICAgICAgICAgICBpZiAoJG5hdGl2ZUVsZW1lbnRUeXBlID1+IC8+JC8pIHsKKyAgICAgICAg
ICAgICAgICAkbmF0aXZlRWxlbWVudFR5cGUgLj0gIiAiOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBteSAkYXJnVHlwZSA9IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRwYXJhbWV0ZXIpOwor
ICAgICAgICAgICAgaWYgKElzV3JhcHBlclR5cGUoJGFyZ1R5cGUpKSB7CisgICAgICAgICAgICAg
ICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlw
ZT4gJHBhcmFtZXRlck5hbWU7XG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0
cmluZyAuPSAiICAgIGZvciAoaW50IGkgPSAkcGFyYW1JbmRleDsgaSA8IGFyZ3MuTGVuZ3RoKCk7
ICsraSkge1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAg
ICAgICAgaWYgKCFWOCR7YXJnVHlwZX06Okhhc0luc3RhbmNlKGFyZ3NbaV0pKVxuIjsKKyAgICAg
ICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7XG4iOworICAgICAgICAgICAgICAg
ICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICAkcGFyYW1ldGVyTmFtZS5hcHBlbmQo
Vjgke2FyZ1R5cGV9Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3Nb
aV0pKSk7XG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
IH1cbiI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJD
aGVja1N0cmluZyAuPSAiICAgIEVYQ0VQVElPTl9CTE9DSyhWZWN0b3I8JG5hdGl2ZUVsZW1lbnRU
eXBlPiwgJHBhcmFtZXRlck5hbWUsIHRvTmF0aXZlQXJndW1lbnRzPCRuYXRpdmVFbGVtZW50VHlw
ZT4oYXJncywgJHBhcmFtSW5kZXgpKTtcbiI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
aWYgKCRuYXRpdmVUeXBlID1+IC9eVjhQYXJhbWV0ZXIvKSB7CiAgICAgICAgICAgICBteSAkdmFs
dWUgPSBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgIk1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGFyZ3MsICRwYXJhbUluZGV4LCAkcGFyYW1ldGVyRGVmYXVsdFBvbGljeSkiLCAiYXJncy5HZXRJ
c29sYXRlKCkiKTsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICIg
LiBDb252ZXJ0VG9WOFBhcmFtZXRlcigkcGFyYW1ldGVyLCAkbmF0aXZlVHlwZSwgJHBhcmFtZXRl
ck5hbWUsICR2YWx1ZSkgLiAiXG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExQYXJzZXIucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0lETFBhcnNlci5wbQppbmRleCBiYjhhMGYwZjcxMmRiMTRmNTRmZjg1MWNiYWNjNDhlZDc3ZTlm
NzNkLi4xOWZiNjQ5NWMzMWIxZmI1NmQ3ZTZhOWYxNTBkYjk1OTgyYzc0NzEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQpAQCAtMTI0Niw3ICsxMjQ2
LDcgQEAgc3ViIHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQKICAgICAgICAgIyBSZW1v
dmUgYWxsICI/IiBpZiBleGlzdHMsIGUuZy4gIm9iamVjdD9bXT8iIC0+ICJvYmplY3RbXSIuCiAg
ICAgICAgICR0eXBlID1+IHMvXD8vL2c7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT50eXBlKCR0
eXBlKTsKLSAgICAgICAgJHNlbGYtPnBhcnNlRWxsaXBzaXMoKTsKKyAgICAgICAgJHBhcmFtRGF0
YU5vZGUtPmlzVmFyaWFkaWMoJHNlbGYtPnBhcnNlRWxsaXBzaXMoKSk7CiAgICAgICAgICRwYXJh
bURhdGFOb2RlLT5uYW1lKCRzZWxmLT5wYXJzZUFyZ3VtZW50TmFtZSgpKTsKICAgICAgICAgcmV0
dXJuICRwYXJhbURhdGFOb2RlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KaW5kZXggMmUzZmI2YzgwNmU1NGFjNjNhOTUwN2E5ZDhj
ZmNlY2FlNjMxMzY5ZS4uZTAwNTAzNDQ2ODZiYjRlNjhkODNmZGU5NDNiZjMwYzY3OWNiNjM3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0K
QEAgLTY3LDcgKzY3LDggQEAgc3RydWN0KCBkb21TaWduYXR1cmUgPT4gewogICAgIG5hbWUgPT4g
JyQnLCAgICAgICMgVmFyaWFibGUgbmFtZQogICAgIHR5cGUgPT4gJyQnLCAgICAgICMgVmFyaWFi
bGUgdHlwZQogICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsICMgRXh0ZW5kZWQgYXR0cmli
dXRlcwotICAgIGlzTnVsbGFibGUgPT4gJyQnICMgSXMgdmFyaWFibGUgdHlwZSBOdWxsYWJsZSAo
VD8pCisgICAgaXNOdWxsYWJsZSA9PiAnJCcsICMgSXMgdmFyaWFibGUgdHlwZSBOdWxsYWJsZSAo
VD8pCisgICAgaXNWYXJpYWRpYyA9PiAnJCcgIyBJcyB2YXJpYWJsZSB2YXJpYWRpYyAobG9uZy4u
LiBudW1iZXJzKQogfSk7CiAKICMgVXNlZCB0byByZXByZXNlbnQgc3RyaW5nIGNvbnN0YW50cwpA
QCAtOTIsNyArOTMsNyBAQCBvdXIgJGlkbERhdGFUeXBlID0gJ1thLXpBLVowLTlcIF0nOyAgICMg
R2VuZXJpYyBkYXRhIHR5cGUgaWRlbnRpZmllcgogCiAjIE1hZ2ljIElETCBwYXJzaW5nIHJlZ3Vs
YXIgZXhwcmVzc2lvbnMKIG15ICRzdXBwb3J0ZWRUeXBlcyA9ICIoKD86KD86dW5zaWduZWQgKT8o
PzppbnR8c2hvcnR8KD86bG9uZyApP2xvbmcpfCg/OiRpZGxJZE5zKikpKD86XFxbXFxdfDwoPzok
aWRsSWROc0xpc3QqKT4pPykiOwotbXkgJHN1cHBvcnRlZFR5cGVTdWZmaXggPSAiKFxcPyk/IjsK
K215ICRzdXBwb3J0ZWRUeXBlU3VmZml4ID0gIihcXD98XFwuXFwuXFwuKT8iOwogCiAjIFNwZWNp
YWwgSURMIG5vdGF0aW9ucy4gVGhpcyByZWd1bGFyIGV4cHJlc3Npb24gZXh0cmFjdHMgdGhlIHN0
cmluZyBiZXR3ZWVuIHRoZSBmaXJzdCBbIGFuZCBpdHMgY29ycmVzcG9uZGluZyBdLgogb3VyICRl
eHRlbmRlZEF0dHJpYnV0ZVN5bnRheCA9IHFyL1xbW15cW1xdXSooPzooPz97JElETFN0cnVjdHVy
ZTo6ZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXh9KVteXFtcXV0qKSpcXS94OyAjIFVzZWQgZm9yIGV4
dGVuZGVkIGF0dHJpYnV0ZXMKQEAgLTEwNyw4ICsxMDgsOCBAQCBvdXIgJHNldHRlclJhaXNlc1Nl
bGVjdG9yID0gJ1xic2V0dGVyXHMrcmFpc2VzXHMqXCgoJyAuICRpZGxJZE5zTGlzdCAuICcqKVxz
KlwpJwogCiBvdXIgJHR5cGVOYW1lc3BhY2VTZWxlY3RvciA9ICcoKD86JyAuICRpZGxJZCAuICcq
OjopKilccyooJyAuICRpZGxEYXRhVHlwZSAuICcqKSc7CiAKLW91ciAkaW50ZXJmYWNlU2VsZWN0
b3IgPSAnKGludGVyZmFjZXxleGNlcHRpb24pXHMqKCg/OicgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVT
eW50YXggLiAnICk/KSgnIC4gJGlkbElkTnMgLiAnKilccyooPzo6KFxzKltee10qKSk/eyhbLWEt
ekEtWjAtOV8iPVxzKCksOzpcW1xdPD4mXHw/XSopJzsKLW91ciAkaW50ZXJmYWNlTWV0aG9kU2Vs
ZWN0b3IgPSAnXHMqKCg/OicgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXggLiAnICk/KShzdGF0
aWNccyspPycgLiAkc3VwcG9ydGVkVHlwZXMgLiAnXHMqKCcgLiAkaWRsSWROcyAuICcqKVxzKlwo
XHMqKFthLXpBLVowLTk6XHMsPVxbXF08Pj9dKiknOworb3VyICRpbnRlcmZhY2VTZWxlY3RvciA9
ICcoaW50ZXJmYWNlfGV4Y2VwdGlvbilccyooKD86JyAuICRleHRlbmRlZEF0dHJpYnV0ZVN5bnRh
eCAuICcgKT8pKCcgLiAkaWRsSWROcyAuICcqKVxzKig/OjooXHMqW157XSopKT97KFstYS16QS1a
MC05XyI9XHMoKSw7OlxbXF08PiZcfD8uXSopJzsKK291ciAkaW50ZXJmYWNlTWV0aG9kU2VsZWN0
b3IgPSAnXHMqKCg/OicgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXggLiAnICk/KShzdGF0aWNc
cyspPycgLiAkc3VwcG9ydGVkVHlwZXMgLiAnXHMqKCcgLiAkaWRsSWROcyAuICcqKVxzKlwoXHMq
KFthLXpBLVowLTk6XHMsPVxbXF08Pj8uXSopJzsKIG91ciAkaW50ZXJmYWNlUGFyYW1ldGVyU2Vs
ZWN0b3IgPSAnKGlufG91dClccyooKD86JyAuICRleHRlbmRlZEF0dHJpYnV0ZVN5bnRheCAuICcg
KT8pJyAuICRzdXBwb3J0ZWRUeXBlcyAuICRzdXBwb3J0ZWRUeXBlU3VmZml4IC4gJ1xzKignIC4g
JGlkbElkTnMgLiAnKiknOwogCiBvdXIgJGludGVyZmFjZUF0dHJpYnV0ZVNlbGVjdG9yID0gJ1xz
KihzdGF0aWNccyspPyhyZWFkb25seSBhdHRyaWJ1dGV8YXR0cmlidXRlKVxzKignIC4gJGV4dGVu
ZGVkQXR0cmlidXRlU3ludGF4IC4gJyApPycgLiAkc3VwcG9ydGVkVHlwZXMgLiAnXHMqKCcgLiAk
aWRsVHlwZSAuICcqKSc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAppbmRleCA1MzE4MWQ0YTkwNTIzZjI1
NGM4MjVlNTY5YzdhZmQwODg4NjhiOGUwLi44YjE4NWU1MTAyNzU4NzA3NDRiNjc5ZTNlMDI4ZDE1
OTdlOWEyYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKQEAgLTI2LDEyICsyNiwxNCBAQAogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJUZXN0T2JqLmgiCiAjaW5jbHVkZSAi
V2ViRE9NRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldlYkRPTURvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiV2ViRE9NSURCS2V5LmgiCisjaW5jbHVkZSAiV2ViRE9NTm9kZS5oIgogI2luY2x1ZGUgIldl
YkRPTVNWR1BvaW50LmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2Vi
RE9NYS5oIgpAQCAtOTY1LDYgKzk2NywzMCBAQCBXZWJET01ib29sIFdlYkRPTVRlc3RPYmo6OnN0
cmljdEZ1bmN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyLCBmbG9hdCBhLCBpbnQgYgogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgV2ViRE9NVGVzdE9iajo6dmFyaWFkaWNTdHJpbmdN
ZXRob2QoY29uc3QgV2ViRE9NU3RyaW5nJiBoZWFkLCBjb25zdCBXZWJET01TdHJpbmcmIHRhaWwp
Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+dmFy
aWFkaWNTdHJpbmdNZXRob2QoaGVhZCwgdGFpbCk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9iajo6
dmFyaWFkaWNEb3VibGVNZXRob2QoZG91YmxlIGhlYWQsIGRvdWJsZSB0YWlsKQoreworICAgIGlm
ICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPnZhcmlhZGljRG91Ymxl
TWV0aG9kKGhlYWQsIHRhaWwpOworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6OnZhcmlhZGljTm9k
ZU1ldGhvZChjb25zdCBXZWJET01Ob2RlJiBoZWFkLCBjb25zdCBXZWJET01Ob2RlJiB0YWlsKQor
eworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPnZhcmlh
ZGljTm9kZU1ldGhvZCh0b1dlYkNvcmUoaGVhZCksIHRvV2ViQ29yZSh0YWlsKSk7Cit9CisKIFdl
YkNvcmU6OlRlc3RPYmoqIHRvV2ViQ29yZShjb25zdCBXZWJET01UZXN0T2JqJiB3cmFwcGVyKQog
ewogICAgIHJldHVybiB3cmFwcGVyLmltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKaW5kZXggNWQ5YTlh
YzAwMjgxZGM5MDg5MzAxZDZlN2E1YjUyNzhmNGRhYWQwNC4uMzFjODM4YmQ2YjMwMzhjMjZlNjgy
NGI1MTA4YWJjMDIwNjQ5ODJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKQEAgLTM0LDYgKzM0LDcgQEAg
Y2xhc3MgV2ViRE9NRGljdGlvbmFyeTsKIGNsYXNzIFdlYkRPTURvY3VtZW50OwogY2xhc3MgV2Vi
RE9NRXZlbnRMaXN0ZW5lcjsKIGNsYXNzIFdlYkRPTUlEQktleTsKK2NsYXNzIFdlYkRPTU5vZGU7
CiBjbGFzcyBXZWJET01TVkdQb2ludDsKIGNsYXNzIFdlYkRPTVN0cmluZzsKIGNsYXNzIFdlYkRP
TVRlc3RPYmo7CkBAIC0xOTAsNiArMTkxLDkgQEAgcHVibGljOgogICAgIFdlYkRPTVNWR1BvaW50
IGltbXV0YWJsZVBvaW50RnVuY3Rpb24oKTsKICAgICB2b2lkIGJhbmFuYSgpOwogICAgIFdlYkRP
TWJvb2wgc3RyaWN0RnVuY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nJiBzdHIsIGZsb2F0IGEsIGlu
dCBiKTsKKyAgICB2b2lkIHZhcmlhZGljU3RyaW5nTWV0aG9kKGNvbnN0IFdlYkRPTVN0cmluZyYg
aGVhZCwgY29uc3QgV2ViRE9NU3RyaW5nJiB0YWlsKTsKKyAgICB2b2lkIHZhcmlhZGljRG91Ymxl
TWV0aG9kKGRvdWJsZSBoZWFkLCBkb3VibGUgdGFpbCk7CisgICAgdm9pZCB2YXJpYWRpY05vZGVN
ZXRob2QoY29uc3QgV2ViRE9NTm9kZSYgaGVhZCwgY29uc3QgV2ViRE9NTm9kZSYgdGFpbCk7CiAK
ICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpbXBsKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdE9iai5jcHAKaW5kZXggMmQwM2RhZTlhOGRiZmE3MDVhMWU0ZGM1OGI2NTYzOTIxMDhi
Nzg1Mi4uYzEyNjRiZGU1YjU1NzkzN2U0MzQ3NTcyOTRkYjMxM2Y0ZDZkMTliOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKQEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRlICJ3
ZWJraXQvV2ViS2l0RE9NRG9jdW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktp
dERPTUlEQktleS5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01JREJLZXlQcml2YXRlLmgi
CisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTU5vZGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2Vi
S2l0RE9NTm9kZVByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NU1ZHUG9pbnQu
aCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NU1ZHUG9pbnRQcml2YXRlLmgiCiAjaW5jbHVk
ZSAid2Via2l0L1dlYktpdERPTVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgpAQCAtMTQ1NCw2ICsx
NDU2LDQ5IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc3RyaWN0X2Z1bmN0aW9uKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBzdHIsIGdmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAordm9pZAord2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19zdHJpbmdfbWV0aG9kKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBoZWFkLCBjb25zdCBnY2hhciogdGFpbCkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaGVhZCk7CisgICAgZ19yZXR1cm5faWZf
ZmFpbCh0YWlsKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRIZWFkID0gV1RGOjpTdHJpbmc6
OmZyb21VVEY4KGhlYWQpOworICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFRhaWwgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgodGFpbCk7CisgICAgaXRlbS0+dmFyaWFkaWNTdHJpbmdNZXRob2QoY29u
dmVydGVkSGVhZCwgY29udmVydGVkVGFpbCk7Cit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9v
YmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnZG91Ymxl
IGhlYWQsIGdkb3VibGUgdGFpbCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0
T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0tPnZhcmlhZGljRG91Ymxl
TWV0aG9kKGhlYWQsIHRhaWwpOworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3Zhcmlh
ZGljX25vZGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTU5vZGUqIGhl
YWQsIFdlYktpdERPTU5vZGUqIHRhaWwpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6
VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWls
KGhlYWQpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodGFpbCk7CisgICAgV2ViQ29yZTo6Tm9kZSog
Y29udmVydGVkSGVhZCA9IDA7CisgICAgaWYgKGhlYWQpIHsKKyAgICAgICAgY29udmVydGVkSGVh
ZCA9IFdlYktpdDo6Y29yZShoZWFkKTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0
ZWRIZWFkKTsKKyAgICB9CisgICAgV2ViQ29yZTo6Tm9kZSogY29udmVydGVkVGFpbCA9IDA7Cisg
ICAgaWYgKHRhaWwpIHsKKyAgICAgICAgY29udmVydGVkVGFpbCA9IFdlYktpdDo6Y29yZSh0YWls
KTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRUYWlsKTsKKyAgICB9CisgICAg
aXRlbS0+dmFyaWFkaWNOb2RlTWV0aG9kKGNvbnZlcnRlZEhlYWQsIGNvbnZlcnRlZFRhaWwpOwor
fQorCiBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X2xvbmdfYXR0cihX
ZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCmlu
ZGV4IDlkOTA1YWQyYjE5ODEyOTlkOWVmNWJhMzQwZGE3NTIyMjY0YjI3ZGUuLjE3NmQ1YjAwZjRk
NDUyYzUyMTA1Y2RlMTU4YTY5MjRiMmM4M2ExM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
T2JqLmgKQEAgLTQ4Niw2ICs0ODYsNDIgQEAgV0VCS0lUX0FQSSBXZWJLaXRET01ib29sKgogd2Vi
a2l0X2RvbV90ZXN0X29ial9zdHJpY3RfZnVuY3Rpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwg
Y29uc3QgZ2NoYXIqIHN0ciwgZ2Zsb2F0IGEsIGdsb25nIGIsIEdFcnJvcioqIGVycm9yKTsKIAog
LyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX3N0cmluZ19tZXRob2Q6CisgKiBA
c2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGhlYWQ6IEEgI2djaGFyCisgKiBAdGFpbDog
QSAjZ2NoYXIKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX3N0cmluZ19tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgY29uc3QgZ2NoYXIqIGhlYWQsIGNvbnN0IGdjaGFyKiB0YWlsKTsKKworLyoqCisgKiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX2RvdWJsZV9tZXRob2Q6CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdE9iagorICogQGhlYWQ6IEEgI2dkb3VibGUKKyAqIEB0YWlsOiBBICNnZG91
YmxlCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2Rv
bV90ZXN0X29ial92YXJpYWRpY19kb3VibGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYs
IGdkb3VibGUgaGVhZCwgZ2RvdWJsZSB0YWlsKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3ZhcmlhZGljX25vZGVfbWV0aG9kOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoK
KyAqIEBoZWFkOiBBICNXZWJLaXRET01Ob2RlCisgKiBAdGFpbDogQSAjV2ViS2l0RE9NTm9kZQor
ICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVz
dF9vYmpfdmFyaWFkaWNfbm9kZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0
RE9NTm9kZSogaGVhZCwgV2ViS2l0RE9NTm9kZSogdGFpbCk7CisKKy8qKgogICogd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X2xvbmdfYXR0cjoKICAqIEBzZWxmOiBBICNXZWJLaXRE
T01UZXN0T2JqCiAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA3N2Q0MDQ0ZTQ4OWU1NjhhNmFjNGNjODRhMTc1
MDZmYTU3MWVmYTRiLi5hZGNhMTI5M2M1N2NjZjA1YzI1Y2QxMmMyNmI2ZjU2YmI1YTY4NjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJKU0Zsb2F0MzJBcnJheS5oIgor
I2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJKU1NWR1BvaW50LmgiCiAjaW5jbHVkZSAiSlNTY3JpcHRQcm9maWxlLmgiCkBAIC0zMjEsNiAr
MzIyLDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRh
YmxlVmFsdWVzW10gPQogICAgIHsgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iLCBEb250RGVsZXRl
IHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24pLCAoaW50cHRy
X3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJvcmFuZ2UiLCBEb250RGVsZXRlIHwgSlNDOjpG
dW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9yYW5nZSksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAg
IHsgInN0cmljdEZ1bmN0aW9uIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25T
dHJpY3RGdW5jdGlvbiksIChpbnRwdHJfdCkzLCBOb0ludHJpbnNpYyB9LAorICAgIHsgInZhcmlh
ZGljU3RyaW5nTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClz
dGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY1N0cmluZ01ldGhvZCksIChpbnRwdHJfdCkyLCBOb0ludHJpbnNpYyB9LAorICAgIHsgInZh
cmlhZGljRG91YmxlTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
YXJpYWRpY0RvdWJsZU1ldGhvZCksIChpbnRwdHJfdCkyLCBOb0ludHJpbnNpYyB9LAorICAgIHsg
InZhcmlhZGljTm9kZU1ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VmFyaWFkaWNOb2RlTWV0aG9kKSwgKGludHB0cl90KTIsIE5vSW50cmluc2ljIH0sCiAgICAgeyAw
LCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCkBAIC0yNTk3LDYgKzI2MDEsNjkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmlj
dEZ1bmN0aW9uKEV4ZWNTdGF0ZSoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9i
aio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3Rh
dGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIGNvbnN0IFN0cmluZyYgaGVh
ZChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlz
RW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiB0YWlsID0gdG9OYXRpdmVBcmd1bWVudHM8
U3RyaW5nPihleGVjLCAxKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaW1wbC0+dmFyaWFk
aWNTdHJpbmdNZXRob2QoaGVhZCwgdGFpbCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOworICAgIFRlc3RP
YmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAg
ICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgZG91
YmxlIGhlYWQoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKS50b051bWJlcihleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFZlY3Rvcjxk
b3VibGU+IHRhaWwgPSB0b05hdGl2ZUFyZ3VtZW50czxkb3VibGU+KGV4ZWMsIDEpOworICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBpbXBsLT52YXJpYWRpY0RvdWJsZU1ldGhvZChoZWFkLCB0YWls
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNOb2RlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNU
ZXN0T2JqOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qo
dGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAm
SlNUZXN0T2JqOjpzX2luZm8pOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0
T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgTm9kZSogaGVhZCh0b05vZGUoTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBWZWN0b3I8Tm9kZSo+IHRhaWw7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MTsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIGlmICghZXhlYy0+
YXJndW1lbnQoaSkuaW5oZXJpdHMoJkpTTm9kZTo6c19pbmZvKSkKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICB0YWlsLmFwcGVuZCh0b05vZGUoZXhl
Yy0+YXJndW1lbnQoaSkpKTsKKyAgICB9CisgICAgaW1wbC0+dmFyaWFkaWNOb2RlTWV0aG9kKGhl
YWQsIHRhaWwpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9
CisKIHZvaWQgSlNUZXN0T2JqOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNUZXN0T2JqKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dE9iaio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IGY4MTBkODAwMTYwNGI4NmE0MjlmYTg4YjU1NGZiYmU1
OTAxOGU3MDkuLjk3OGQwMWUyMjlkY2IxZDNkZDQxNmZkMmJmZWEzNzY0YTI2MzA1OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmgKQEAgLTIxNSw2ICsyMTUsOSBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbgogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSW1tdXRh
YmxlUG9pbnRGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEpTQzo6RXhlY1N0
YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNT
dHJpbmdNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEpT
Qzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsK
IC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmouaAppbmRleCA5NTYzMzU5MWU3ZmIzNzBiOGRkYjYwYWE3NjQ1MTI3ZGRkN2NiMTFiLi5kOTA2
NmI4YWE0NjJlMjIxODAzYTI3YmRhYzk3Zjg4NGQ1MzVhNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCkBAIC0z
MSw2ICszMSw3IEBACiBAY2xhc3MgRE9NRGljdGlvbmFyeTsKIEBjbGFzcyBET01Eb2N1bWVudDsK
IEBjbGFzcyBET01JREJLZXk7CitAY2xhc3MgRE9NTm9kZTsKIEBjbGFzcyBET01TVkdEb2N1bWVu
dDsKIEBjbGFzcyBET01TVkdQb2ludDsKIEBjbGFzcyBET01UZXN0T2JqOwpAQCAtMTczLDYgKzE3
NCw5IEBAIGVudW0gewogLSAoRE9NU1ZHUG9pbnQgKilpbW11dGFibGVQb2ludEZ1bmN0aW9uOwog
LSAodm9pZClvcmFuZ2U7CiAtIChET01ib29sICopc3RyaWN0RnVuY3Rpb246KE5TU3RyaW5nICop
c3RyIGE6KGZsb2F0KWEgYjooaW50KWI7CistICh2b2lkKXZhcmlhZGljU3RyaW5nTWV0aG9kOihO
U1N0cmluZyAqKWhlYWQgdGFpbDooTlNTdHJpbmcgKil0YWlsOworLSAodm9pZCl2YXJpYWRpY0Rv
dWJsZU1ldGhvZDooZG91YmxlKWhlYWQgdGFpbDooZG91YmxlKXRhaWw7CistICh2b2lkKXZhcmlh
ZGljTm9kZU1ldGhvZDooRE9NTm9kZSAqKWhlYWQgdGFpbDooRE9NTm9kZSAqKXRhaWw7CiBAZW5k
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdE9iai5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KaW5kZXggM2RkMGU3YWYwY2E2NzljODFhNzZmZmM2MWQ0
MGEzY2E2YTk1NzYwOS4uNGZkYzYxYTAyYWUwOTdhODE4YjhmYTg3OGNhY2RiNmE0ZWJkZjUwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE9iai5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLm1tCkBAIC01OCw2ICs1OCw3IEBACiAjaW1wb3J0ICJJREJLZXkuaCIKICNp
bXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgogI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9y
dCAiTm9kZS5oIgogI2ltcG9ydCAiT2JqQ0V2ZW50TGlzdGVuZXIuaCIKICNpbXBvcnQgIlNWR0Rv
Y3VtZW50LmgiCiAjaW1wb3J0ICJTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIKQEAgLTEwNDYs
NiArMTA0NywyNCBAQCAtIChET01ib29sICopc3RyaWN0RnVuY3Rpb246KE5TU3RyaW5nICopc3Ry
IGE6KGZsb2F0KWEgYjooaW50KWIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCistICh2b2lkKXZh
cmlhZGljU3RyaW5nTWV0aG9kOihOU1N0cmluZyAqKWhlYWQgdGFpbDooTlNTdHJpbmcgKil0YWls
Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwt
PnZhcmlhZGljU3RyaW5nTWV0aG9kKGhlYWQsIHRhaWwpOworfQorCistICh2b2lkKXZhcmlhZGlj
RG91YmxlTWV0aG9kOihkb3VibGUpaGVhZCB0YWlsOihkb3VibGUpdGFpbAoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT52YXJpYWRpY0RvdWJs
ZU1ldGhvZChoZWFkLCB0YWlsKTsKK30KKworLSAodm9pZCl2YXJpYWRpY05vZGVNZXRob2Q6KERP
TU5vZGUgKiloZWFkIHRhaWw6KERPTU5vZGUgKil0YWlsCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnZhcmlhZGljTm9kZU1ldGhvZChjb3Jl
KGhlYWQpLCBjb3JlKHRhaWwpKTsKK30KKwogQGVuZAogCiBXZWJDb3JlOjpUZXN0T2JqKiBjb3Jl
KERPTVRlc3RPYmogKndyYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggMzJiNGYxODAxNWFjZDgyNWY4OTJiM2E0YWMxNWNl
MjNjZDhlN2FkYS4uNzQ4NDVhN2VkZTMwZTQxYjIzYmI3ZjBjMmJhNDUxMDU4NzU2OGFjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApA
QCAtMjYyLDUgKzI2Miw5IEBAIG1vZHVsZSB0ZXN0IHsKICAgICAgICAgW1JlZmxlY3Q9Q09OU1Rf
SU1QTF0gY29uc3QgdW5zaWduZWQgc2hvcnQgQ09OU1RfSkFWQVNDUklQVCA9IDE1OwogCiAgICAg
ICAgIGF0dHJpYnV0ZSBbUmVwbGFjZWFibGVdIGxvbmcgcmVwbGFjZWFibGVBdHRyaWJ1dGU7CisK
KyAgICAgICAgdm9pZCB2YXJpYWRpY1N0cmluZ01ldGhvZChpbiBET01TdHJpbmcgaGVhZCwgaW4g
RE9NU3RyaW5nLi4uIHRhaWwpOworICAgICAgICB2b2lkIHZhcmlhZGljRG91YmxlTWV0aG9kKGlu
IGRvdWJsZSBoZWFkLCBpbiBkb3VibGUuLi4gdGFpbCk7CisgICAgICAgIHZvaWQgdmFyaWFkaWNO
b2RlTWV0aG9kKGluIE5vZGUgaGVhZCwgaW4gTm9kZS4uLiB0YWlsKTsKICAgICB9OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmNwcAppbmRleCAzOGU2ZjEzOGU0NTRmYzIyM2RlYTViMDgxNGRkODQxOGZlMTU5OTIwLi42NzMz
YjI2MjU4NThjZmRjYWZhNGVhMWE5ZjVhMDY5YzRjMWJjMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtNDUs
NiArNDUsNyBAQAogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4RG9jdW1l
bnQuaCIKICNpbmNsdWRlICJWOEZsb2F0MzJBcnJheS5oIgorI2luY2x1ZGUgIlY4Tm9kZS5oIgog
I2luY2x1ZGUgIlY4U1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJWOFNWR1BvaW50LmgiCiAjaW5j
bHVkZSAiVjhTY3JpcHRQcm9maWxlLmgiCkBAIC0xODkwLDYgKzE4OTEsNDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpY3RGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29s
YXRlKCkpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhcmlhZGljU3RyaW5n
TWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RB
VFMoIkRPTS5UZXN0T2JqLnZhcmlhZGljU3RyaW5nTWV0aG9kIik7CisgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JM
T0NLKFY4UGFyYW1ldGVyPD4sIGhlYWQsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhWZWN0b3I8U3RyaW5n
PiwgdGFpbCwgdG9OYXRpdmVBcmd1bWVudHM8U3RyaW5nPihhcmdzLCAxKSk7CisgICAgaW1wLT52
YXJpYWRpY1N0cmluZ01ldGhvZChoZWFkLCB0YWlsKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJpYWRpY0RvdWJsZU1ldGhv
ZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJE
T00uVGVzdE9iai52YXJpYWRpY0RvdWJsZU1ldGhvZCIpOworICAgIGlmIChhcmdzLkxlbmd0aCgp
IDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5H
ZXRJc29sYXRlKCkpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKGRvdWJsZSwgaGVhZCwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpLT5OdW1iZXJWYWx1ZSgpKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFZlY3Rvcjxkb3Vi
bGU+LCB0YWlsLCB0b05hdGl2ZUFyZ3VtZW50czxkb3VibGU+KGFyZ3MsIDEpKTsKKyAgICBpbXAt
PnZhcmlhZGljRG91YmxlTWV0aG9kKGhlYWQsIHRhaWwpOworICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhcmlhZGljTm9kZU1ldGhv
ZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJE
T00uVGVzdE9iai52YXJpYWRpY05vZGVNZXRob2QiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8
IDEpCisgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhOb2RlKiwgaGVhZCwgVjhOb2RlOjpIYXNJ
bnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsK
KyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gdGFpbDsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8
IGFyZ3MuTGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFuY2Uo
YXJnc1tpXSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgICAgICB0YWlsLmFwcGVuZChWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1tpXSkpKTsKKyAgICB9CisgICAgaW1wLT52YXJpYWRp
Y05vZGVNZXRob2QoaGVhZCwgdGFpbCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFRlc3RPYmpWOEludGVybmFsCiAKIHN0YXRpYyBjb25zdCBWOERPTUNv
bmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0T2JqQXR0cnNbXSA9IHsKQEAgLTIw
NzEsNiArMjExMyw4IEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRD
YWxsYmFjayBWOFRlc3RPYmpDYWxsYmFja3NbXSA9IHsKICAgICB7ImltbXV0YWJsZVBvaW50RnVu
Y3Rpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRGdW5jdGlvbkNhbGxiYWNr
fSwKICAgICB7Im9yYW5nZSIsIFRlc3RPYmpWOEludGVybmFsOjpvcmFuZ2VDYWxsYmFja30sCiAg
ICAgeyJzdHJpY3RGdW5jdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGdW5jdGlvbkNh
bGxiYWNrfSwKKyAgICB7InZhcmlhZGljU3RyaW5nTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6
OnZhcmlhZGljU3RyaW5nTWV0aG9kQ2FsbGJhY2t9LAorICAgIHsidmFyaWFkaWNEb3VibGVNZXRo
b2QiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dmFyaWFkaWNEb3VibGVNZXRob2RDYWxsYmFja30sCiB9
OwogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQ29uc3RhbnQgVjhU
ZXN0T2JqQ29uc3RzW10gPSB7CkBAIC0yMjIyLDYgKzIyNjYsMTIgQEAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2
ODo6UGVyc2kKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NUFy
Z3ZbY29udmVydDVBcmdjXSA9IHsgVjhlOjpHZXRSYXdUZW1wbGF0ZSgpIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0NVNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBjb252ZXJ0NUFyZ2MsIGNvbnZlcnQ1QXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQ1IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ1Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZl
cnQ1U2lnbmF0dXJlKSk7CisKKyAgICAvLyBDdXN0b20gU2lnbmF0dXJlICd2YXJpYWRpY05vZGVN
ZXRob2QnCisgICAgY29uc3QgaW50IHZhcmlhZGljTm9kZU1ldGhvZEFyZ2MgPSAyOworICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHZhcmlhZGljTm9kZU1ldGhvZEFyZ3ZbdmFy
aWFkaWNOb2RlTWV0aG9kQXJnY10gPSB7IFY4Tm9kZTo6R2V0UmF3VGVtcGxhdGUoKSwgVjhOb2Rl
OjpHZXRSYXdUZW1wbGF0ZSgpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiB2YXJp
YWRpY05vZGVNZXRob2RTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgdmFyaWFk
aWNOb2RlTWV0aG9kQXJnYywgdmFyaWFkaWNOb2RlTWV0aG9kQXJndik7CisgICAgcHJvdG8tPlNl
dCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZhcmlhZGljTm9kZU1ldGhvZCIpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRob2RDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJlKSk7CiAgICAg
VjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywg
VjhUZXN0T2JqQ29uc3RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdE9iakNvbnN0cykpOwogCiAg
ICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oCmluZGV4IDBjOWVlNGY0Y2ExOGEwYzgwYzZlMmIzNWEyNzY3MTg0NDcwZjJlYmYu
LjU1NmY2ODY2NDI2ZDI3ZGU2NmM2ZDcxODdiYWMxMzI4ZTFjYTNkNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0xODIsMjggKzE4MiwyOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICB0ZW1wbGF0ZTw+CiAgICAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRz
PFN0cmluZz4gewotICAgICAgICBzdGF0aWMgaW5saW5lIFN0cmluZyBhcnJheU5hdGl2ZVZhbHVl
KGNvbnN0IHY4OjpMb2NhbDx2ODo6QXJyYXk+JiBhcnJheSwgc2l6ZV90IGkpCisgICAgICAgIHN0
YXRpYyBpbmxpbmUgU3RyaW5nIG5hdGl2ZVZhbHVlKGNvbnN0IHY4OjpIYW5kbGU8djg6OlZhbHVl
PiYgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0b1dlYkNvcmVTdHJpbmco
YXJyYXktPkdldChpKSk7CisgICAgICAgICAgICByZXR1cm4gdG9XZWJDb3JlU3RyaW5nKHZhbHVl
KTsKICAgICAgICAgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+CiAgICAgc3RydWN0IE5hdGl2
ZVZhbHVlVHJhaXRzPGZsb2F0PiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgZmxvYXQgYXJyYXlO
YXRpdmVWYWx1ZShjb25zdCB2ODo6TG9jYWw8djg6OkFycmF5PiYgYXJyYXksIHNpemVfdCBpKQor
ICAgICAgICBzdGF0aWMgaW5saW5lIGZsb2F0IG5hdGl2ZVZhbHVlKGNvbnN0IHY4OjpIYW5kbGU8
djg6OlZhbHVlPiYgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxmbG9hdD4oYXJyYXktPkdldCh2OEludGVnZXIoaSkpLT5OdW1iZXJWYWx1ZSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUtPk51bWJlclZhbHVlKCkp
OwogICAgICAgICB9CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4KICAgICBzdHJ1Y3QgTmF0aXZl
VmFsdWVUcmFpdHM8ZG91YmxlPiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgZG91YmxlIGFycmF5
TmF0aXZlVmFsdWUoY29uc3Qgdjg6OkxvY2FsPHY4OjpBcnJheT4mIGFycmF5LCBzaXplX3QgaSkK
KyAgICAgICAgc3RhdGljIGlubGluZSBkb3VibGUgbmF0aXZlVmFsdWUoY29uc3Qgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+JiB2YWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGRvdWJsZT4oYXJyYXktPkdldCh2OEludGVnZXIoaSkpLT5OdW1iZXJWYWx1ZSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlLT5OdW1iZXJWYWx1
ZSgpKTsKICAgICAgICAgfQogICAgIH07CiAKKwogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgogICAg
IFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKICAg
ICB7CkBAIC0yMTUsMTIgKzIxNiwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWUodjg6OkxvY2FsPHY4OjpWYWx1ZT46Ok5ldyh2YWx1
ZSkpOwogICAgICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpMb2NhbDx2ODo6
QXJyYXk+OjpDYXN0KHY4VmFsdWUpOwogICAgICAgICBzaXplX3QgbGVuZ3RoID0gYXJyYXktPkxl
bmd0aCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKFRyYWl0c1R5cGU6OmFycmF5TmF0aXZlVmFsdWUoYXJy
YXksIGkpKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChUcmFpdHNUeXBlOjpuYXRpdmVWYWx1
ZShhcnJheS0+R2V0KGkpKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgVmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MsIHNpemVfdCBzdGFydEluZGV4KQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHN0YXJ0SW5kZXggPD0gYXJncy5MZW5ndGgoKSk7CisgICAgICAgIFZlY3RvcjxUPiBy
ZXN1bHQ7CisgICAgICAgIHR5cGVkZWYgTmF0aXZlVmFsdWVUcmFpdHM8VD4gVHJhaXRzVHlwZTsK
KyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGFyZ3MuTGVuZ3RoKCk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSBzdGFydEluZGV4OyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKFRyYWl0c1R5cGU6Om5hdGl2ZVZhbHVlKGFyZ3NbaV0pKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKKwogICAgIC8vIFZhbGlkYXRlcyB0aGF0IHRoZSBwYXNzZWQgb2Jq
ZWN0IGlzIGEgc2VxdWVuY2UgdHlwZSBwZXIgV2ViSURMIHNwZWMKICAgICAvLyBodHRwOi8vd3d3
LnczLm9yZy9UUi8yMDEyL1dELVdlYklETC0yMDEyMDIwNy8jZXMtc2VxdWVuY2UKICAgICBpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhTZXF1ZW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdmFsdWUsIHVpbnQzMl90JiBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0NsYXNzTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NsYXNzTGlzdC5jcHAKaW5k
ZXggYTMyNWExMjI2YWE5YTQ1YjQ1NTRjYmI5ZWVlNzAyNzI4ODRhZDBjNy4uNWZmM2JkYWY2MDJm
YzQ3ZmI1MzI2YmFkOTNjNzYzYTZjMmI1NWQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9DbGFzc0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2xhc3NMaXN0LmNw
cApAQCAtMjUsMjEgKzI1LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2xh
c3NMaXN0LmgiCiAKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJp
bmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQogQ2xhc3NMaXN0OjpDbGFz
c0xpc3QoRWxlbWVudCogZWxlbWVudCkKICAgICA6IG1fZWxlbWVudChlbGVtZW50KQogewogICAg
IGlmIChtX2VsZW1lbnQtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQotICAgICAgICBtX2Ns
YXNzTmFtZXNGb3JRdWlya3NNb2RlLnNldChtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShjbGFzc0F0
dHIpLCBmYWxzZSk7CisgICAgICAgIG1fY2xhc3NOYW1lc0ZvclF1aXJrc01vZGUuc2V0KHZhbHVl
KCksIGZhbHNlKTsKIH0KIAogdm9pZCBDbGFzc0xpc3Q6OnJlZigpCkBAIC02NCw3MSArNjAsMTEg
QEAgY29uc3QgQXRvbWljU3RyaW5nIENsYXNzTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29u
c3QKICAgICByZXR1cm4gY2xhc3NOYW1lcygpW2luZGV4XTsKIH0KIAotYm9vbCBDbGFzc0xpc3Q6
OmNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAotewotICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbiwgZWMpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGNvbnRhaW5zSW50ZXJuYWwodG9rZW4pOwotfQotCiBib29s
IENsYXNzTGlzdDo6Y29udGFpbnNJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKSBj
b25zdAogewogICAgIHJldHVybiBtX2VsZW1lbnQtPmhhc0NsYXNzKCkgJiYgY2xhc3NOYW1lcygp
LmNvbnRhaW5zKHRva2VuKTsKIH0KIAotdm9pZCBDbGFzc0xpc3Q6OmFkZChjb25zdCBBdG9taWNT
dHJpbmcmIHRva2VuLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXZhbGlkYXRlVG9r
ZW4odG9rZW4sIGVjKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGFkZEludGVybmFsKHRva2VuKTsK
LX0KLQotdm9pZCBDbGFzc0xpc3Q6OmFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgdG9r
ZW4pCi17Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRDbGFzc05hbWUobV9lbGVtZW50LT5n
ZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSk7Ci0gICAgaWYgKG9sZENsYXNzTmFtZS5pc0VtcHR5KCkp
Ci0gICAgICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgdG9rZW4pOwotICAg
IGVsc2UgaWYgKCFjb250YWluc0ludGVybmFsKHRva2VuKSkgewotICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIG5ld0NsYXNzTmFtZShhZGRUb2tlbihvbGRDbGFzc05hbWUsIHRva2VuKSk7Ci0g
ICAgICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgbmV3Q2xhc3NOYW1lKTsK
LSAgICB9Ci19Ci0KLXZvaWQgQ2xhc3NMaXN0OjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiB0
b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2Vu
LCBlYykpCi0gICAgICAgIHJldHVybjsKLSAgICByZW1vdmVJbnRlcm5hbCh0b2tlbik7Ci19Ci0K
LXZvaWQgQ2xhc3NMaXN0OjpyZW1vdmVJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIHRva2Vu
KQotewotICAgIC8vIENoZWNrIHVzaW5nIGNvbnRhaW5zIGZpcnN0IHNpbmNlIGl0IHVzZXMgQXRv
bWljU3RyaW5nIGNvbXBhcmlzb25zIGluc3RlYWQKLSAgICAvLyBvZiBjaGFyYWN0ZXIgYnkgY2hh
cmFjdGVyIHRlc3RpbmcuCi0gICAgaWYgKCFjb250YWluc0ludGVybmFsKHRva2VuKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NOYW1lKHJlbW92ZVRv
a2VuKG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0ciksIHRva2VuKSk7Ci0gICAgbV9l
bGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBuZXdDbGFzc05hbWUpOwotfQotCi1ib29s
IENsYXNzTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQotewotICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbiwgZWMpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoY29udGFpbnNJbnRlcm5hbCh0b2tlbikpIHsKLSAgICAg
ICAgcmVtb3ZlSW50ZXJuYWwodG9rZW4pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIGFkZEludGVybmFsKHRva2VuKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIENs
YXNzTGlzdDo6dG9TdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX2VsZW1lbnQtPmdldEF0
dHJpYnV0ZShjbGFzc0F0dHIpOwotfQotCiB2b2lkIENsYXNzTGlzdDo6cmVzZXQoY29uc3QgU3Ry
aW5nJiBuZXdDbGFzc05hbWUpCiB7CiAgICAgaWYgKG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5R
dWlya3NNb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NsYXNzTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9DbGFzc0xpc3QuaAppbmRleCA5OTJmYWQ0NzRjNjNkNzVm
MThiOWVlZmI1NjQ4NjYwZjZiMzgxMGVkLi43NjRlYmY1MmU4MWFhOWMwYmY4NWVhZmM0ZTBjNzU3
YmQ2Y2ZlNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NsYXNzTGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2xhc3NMaXN0LmgKQEAgLTI2LDExICsyNiwxNyBAQAog
I2RlZmluZSBDbGFzc0xpc3RfaAogCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCisjaW5jbHVk
ZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNwYWNlU3Bs
aXRTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CisKIGNsYXNzIEVsZW1lbnQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CkBA
IC00MiwzMCArNDgsMjYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENs
YXNzTGlzdChlbGVtZW50KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlZigpOwotICAg
IHZpcnR1YWwgdm9pZCBkZXJlZigpOworICAgIHZpcnR1YWwgdm9pZCByZWYoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcgaXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IEF0
b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRk
KGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFs
IGJvb2wgdG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcgaXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIEVsZW1lbnQq
IGVsZW1lbnQoKSB7IHJldHVybiBtX2VsZW1lbnQ7IH0KKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGVs
ZW1lbnQoKSBPVkVSUklERSB7IHJldHVybiBtX2VsZW1lbnQ7IH0KIAogICAgIHZvaWQgcmVzZXQo
Y29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgQ2xhc3NMaXN0KEVsZW1lbnQqKTsKIAot
ICAgIHZvaWQgYWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgYm9vbCBjb250
YWluc0ludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwotICAgIHZvaWQgcmVtb3Zl
SW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5z
SW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CiAKICAgICBjb25z
dCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIEF0
b21pY1N0cmluZyB2YWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZWxlbWVudC0+ZmFz
dEdldEF0dHJpYnV0ZShjbGFzc0F0dHIpOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIE9WRVJSSURFIHsgbV9lbGVtZW50LT5zZXRBdHRyaWJ1
dGUoY2xhc3NBdHRyLCB2YWx1ZSk7IH0KKwogICAgIEVsZW1lbnQqIG1fZWxlbWVudDsKICAgICBT
cGFjZVNwbGl0U3RyaW5nIG1fY2xhc3NOYW1lc0ZvclF1aXJrc01vZGU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmNwcAppbmRleCAzYTg2ZTljMDAwMjQ0
Mjk4ZDI0YWRjYzNkMTA1YzFlZDQyNDc0OWYwLi40ZWYwZjdmNTFhNTAwMjg1ODJiODA0ZDUzN2Ez
YWNiOWUyNDk1ZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxl
VG9rZW5MaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5M
aXN0LmNwcApAQCAtNDQsNTUgKzQ0LDQ2IEBAIGNvbnN0IEF0b21pY1N0cmluZyBET01TZXR0YWJs
ZVRva2VuTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICByZXR1cm4gbV90b2tl
bnNbaW5kZXhdOwogfQogCi1ib29sIERPTVNldHRhYmxlVG9rZW5MaXN0Ojpjb250YWlucyhjb25z
dCBBdG9taWNTdHJpbmcmIHRva2VuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK2Jvb2wgRE9N
U2V0dGFibGVUb2tlbkxpc3Q6OmNvbnRhaW5zSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiB0
b2tlbikgY29uc3QKIHsKLSAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBtX3Rva2Vucy5jb250YWlucyh0b2tlbik7CiB9
CiAKLXZvaWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIHRv
a2VuLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmFkZChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBp
ZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSB8fCBtX3Rva2Vucy5jb250YWlucyh0b2tlbikp
Ci0gICAgICAgIHJldHVybjsKLSAgICBhZGRJbnRlcm5hbCh0b2tlbik7CisgICAgRE9NVG9rZW5M
aXN0OjphZGQodG9rZW5zLCBlYyk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2Vu
cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV90b2tlbnMuaXNOdWxsKCkpCisgICAgICAg
ICAgICBtX3Rva2Vucy5zZXQodG9rZW5zW2ldLCBmYWxzZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1fdG9rZW5zLmFkZCh0b2tlbnNbaV0pOworICAgIH0KIH0KIAogdm9pZCBET01TZXR0
YWJsZVRva2VuTGlzdDo6YWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKIHsK
LSAgICBtX3ZhbHVlID0gYWRkVG9rZW4obV92YWx1ZSwgdG9rZW4pOworICAgIERPTVRva2VuTGlz
dDo6YWRkSW50ZXJuYWwodG9rZW4pOwogICAgIGlmIChtX3Rva2Vucy5pc051bGwoKSkKICAgICAg
ICAgbV90b2tlbnMuc2V0KHRva2VuLCBmYWxzZSk7CiAgICAgZWxzZQogICAgICAgICBtX3Rva2Vu
cy5hZGQodG9rZW4pOwogfQogCi12b2lkIERPTVNldHRhYmxlVG9rZW5MaXN0OjpyZW1vdmUoY29u
c3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERPTVNldHRh
YmxlVG9rZW5MaXN0OjpyZW1vdmUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHRva2VucywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBlYykgfHwgIW1f
dG9rZW5zLmNvbnRhaW5zKHRva2VuKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlbW92ZUludGVy
bmFsKHRva2VuKTsKKyAgICBET01Ub2tlbkxpc3Q6OnJlbW92ZSh0b2tlbnMsIGVjKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2Vucy5zaXplKCk7ICsraSkKKyAgICAgICAgbV90b2tl
bnMucmVtb3ZlKHRva2Vuc1tpXSk7CiB9CiAKIHZvaWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OnJl
bW92ZUludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4pCiB7Ci0gICAgbV92YWx1ZSA9
IHJlbW92ZVRva2VuKG1fdmFsdWUsIHRva2VuKTsKKyAgICBET01Ub2tlbkxpc3Q6OnJlbW92ZUlu
dGVybmFsKHRva2VuKTsKICAgICBtX3Rva2Vucy5yZW1vdmUodG9rZW4pOwogfQogCi1ib29sIERP
TVNldHRhYmxlVG9rZW5MaXN0Ojp0b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBlYykpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV90b2tlbnMuY29udGFpbnModG9rZW4pKSB7
Ci0gICAgICAgIHJlbW92ZUludGVybmFsKHRva2VuKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICBhZGRJbnRlcm5hbCh0b2tlbik7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZv
aWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit2
b2lkIERPTVNldHRhYmxlVG9rZW5MaXN0OjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQogewogICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICBtX3Rva2Vucy5zZXQodmFsdWUsIGZh
bHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaAppbmRleCAw
YjIzYzZhYjIyOWZhNjU1Y2UzODg4MTk0ZDg5ZTM3Y2JjZTk5M2UxLi5mMzM4ZGMzMmJmNjliYzE3
NDcxNDhkZTQ2NTI0NWFhMTQxZTFiMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVNldHRhYmxlVG9rZW5MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0
YWJsZVRva2VuTGlzdC5oCkBAIC00NCwyOCArNDQsMjggQEAgcHVibGljOgogICAgIH0KICAgICB2
aXJ0dWFsIH5ET01TZXR0YWJsZVRva2VuTGlzdCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZigp
IHsgUmVmQ291bnRlZDxET01TZXR0YWJsZVRva2VuTGlzdD46OnJlZigpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRlcmVmKCkgeyBSZWZDb3VudGVkPERPTVNldHRhYmxlVG9rZW5MaXN0Pjo6ZGVyZWYo
KTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWYoKSBPVkVSUklERSB7IFJlZkNvdW50ZWQ8RE9NU2V0
dGFibGVUb2tlbkxpc3Q+OjpyZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIE9WRVJS
SURFIHsgUmVmQ291bnRlZDxET01TZXR0YWJsZVRva2VuTGlzdD46OmRlcmVmKCk7IH0KIAotICAg
IHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV90b2tlbnMuc2l6ZSgp
OyB9Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IEF0b21pY1N0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IEF0
b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIGJvb2wgdG9nZ2xlKGNv
bnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyB0
b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIHZhbHVlKCk7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdG9rZW5zLnNpemUoKTsgfQorICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IE9W
RVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGFkZChjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEV4
Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworCisgICAgdmlydHVhbCBB
dG9taWNTdHJpbmcgdmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3ZhbHVlOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwog
Ci0gICAgU3RyaW5nIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIGNvbnN0
IFNwYWNlU3BsaXRTdHJpbmcmIHRva2VucygpIGNvbnN0IHsgcmV0dXJuIG1fdG9rZW5zOyB9Ci0g
ICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBET01TZXR0
YWJsZVRva2VuTGlzdCgpOwogCi0gICAgdm9pZCByZW1vdmVJbnRlcm5hbChjb25zdCBBdG9taWNT
dHJpbmcmKTsKLSAgICB2b2lkIGFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAg
IHZpcnR1YWwgdm9pZCBhZGRJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW50ZXJuYWwoY29uc3QgQXRv
bWljU3RyaW5nJikgT1ZFUlJJREU7CiAKLSAgICBTdHJpbmcgbV92YWx1ZTsKKyAgICBBdG9taWNT
dHJpbmcgbV92YWx1ZTsKICAgICBTcGFjZVNwbGl0U3RyaW5nIG1fdG9rZW5zOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCmluZGV4IDcxMzJiMTE2OWRkOTMxZjJmZmQwYTFk
ODQzMzNlY2UyZmJlYTE0MjQuLjUzM2IxZjEwMzY3OTI2MWZiYjQ1YWVmNmY5OGUyNDRhYzg1N2E2
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKQEAgLTQ5LDIzICs0OSwxMzgg
QEAgYm9vbCBET01Ub2tlbkxpc3Q6OnZhbGlkYXRlVG9rZW4oY29uc3QgQXRvbWljU3RyaW5nJiB0
b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRE9N
VG9rZW5MaXN0Ojp2YWxpZGF0ZVRva2Vucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2Vucy5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW5zW2ldLCBlYykp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgRE9NVG9rZW5MaXN0Ojpjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcmIHRva2Vu
LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9r
ZW4sIGVjKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjb250YWluc0ludGVy
bmFsKHRva2VuKTsKK30KKwordm9pZCBET01Ub2tlbkxpc3Q6OmFkZChjb25zdCBBdG9taWNTdHJp
bmcmIHRva2VuLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB0b2tl
bnM7CisgICAgdG9rZW5zLmFwcGVuZCh0b2tlbi5zdHJpbmcoKSk7CisgICAgYWRkKHRva2Vucywg
ZWMpOworfQorCit2b2lkIERPTVRva2VuTGlzdDo6YWRkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0
b2tlbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGZpbHRlcmVk
VG9rZW5zOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG9rZW5zLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbnNbaV0sIGVjKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKCFjb250YWluc0ludGVybmFsKHRva2Vuc1tpXSkpCisgICAg
ICAgICAgICBmaWx0ZXJlZFRva2Vucy5hcHBlbmQodG9rZW5zW2ldKTsKKyAgICB9CisKKyAgICBp
ZiAoZmlsdGVyZWRUb2tlbnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRW
YWx1ZShhZGRUb2tlbnModmFsdWUoKSwgZmlsdGVyZWRUb2tlbnMpKTsKK30KKwordm9pZCBET01U
b2tlbkxpc3Q6OnJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB0b2tlbnM7CisgICAgdG9rZW5zLmFwcGVuZCh0
b2tlbi5zdHJpbmcoKSk7CisgICAgcmVtb3ZlKHRva2VucywgZWMpOworfQorCit2b2lkIERPTVRv
a2VuTGlzdDo6cmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmICghdmFsaWRhdGVUb2tlbnModG9rZW5zLCBlYykpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIENoZWNrIHVzaW5nIGNvbnRhaW5zSW50ZXJuYWwgZmlyc3Qgc2lu
Y2UgaXQgaXMgYSBsb3QgZmFzdGVyIHRoYW4gZ29pbmcKKyAgICAvLyB0aHJvdWdoIHRoZSBzdHJp
bmcgY2hhcmFjdGVyIGJ5IGNoYXJhY3Rlci4KKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KGNvbnRhaW5zSW50ZXJuYWwodG9rZW5zW2ldKSkgeworICAgICAgICAgICAgZm91bmQgPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZm91bmQp
CisgICAgICAgIHNldFZhbHVlKHJlbW92ZVRva2Vucyh2YWx1ZSgpLCB0b2tlbnMpKTsKK30KKwor
Ym9vbCBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNvbnRhaW5zSW50ZXJuYWwodG9rZW4pKSB7
CisgICAgICAgIHJlbW92ZUludGVybmFsKHRva2VuKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICBhZGRJbnRlcm5hbCh0b2tlbik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgRE9NVG9rZW5MaXN0OjphZGRJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQor
eworICAgIGlmICghY29udGFpbnNJbnRlcm5hbCh0b2tlbikpCisgICAgICAgIHNldFZhbHVlKGFk
ZFRva2VuKHZhbHVlKCksIHRva2VuKSk7Cit9CisKK3ZvaWQgRE9NVG9rZW5MaXN0OjpyZW1vdmVJ
bnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQoreworICAgIC8vIENoZWNrIHVzaW5n
IGNvbnRhaW5zIGZpcnN0IHNpbmNlIGl0IHVzZXMgQXRvbWljU3RyaW5nIGNvbXBhcmlzb25zIGlu
c3RlYWQKKyAgICAvLyBvZiBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyIHRlc3RpbmcuCisgICAgaWYg
KCFjb250YWluc0ludGVybmFsKHRva2VuKSkKKyAgICAgICAgcmV0dXJuOworICAgIHNldFZhbHVl
KHJlbW92ZVRva2VuKHZhbHVlKCksIHRva2VuKSk7Cit9CisKIFN0cmluZyBET01Ub2tlbkxpc3Q6
OmFkZFRva2VuKGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXQsIGNvbnN0IEF0b21pY1N0cmluZyYg
dG9rZW4pCiB7Ci0gICAgaWYgKGlucHV0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRva2Vu
OworICAgIFZlY3RvcjxTdHJpbmc+IHRva2VuczsKKyAgICB0b2tlbnMuYXBwZW5kKHRva2VuLnN0
cmluZygpKTsKKyAgICByZXR1cm4gYWRkVG9rZW5zKGlucHV0LCB0b2tlbnMpOworfQorCitTdHJp
bmcgRE9NVG9rZW5MaXN0OjphZGRUb2tlbnMoY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHRva2VucykKK3sKKyAgICBib29sIG5lZWRzU3BhY2UgPSBmYWxz
ZTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChpbnB1
dCk7Ci0gICAgaWYgKCFpc0hUTUxTcGFjZShpbnB1dFtpbnB1dC5sZW5ndGgoKSAtIDFdKSkKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBpZiAoIWlucHV0LmlzRW1wdHkoKSkgewor
ICAgICAgICBidWlsZGVyLmFwcGVuZChpbnB1dCk7CisgICAgICAgIG5lZWRzU3BhY2UgPSAhaXNI
VE1MU3BhY2UoaW5wdXRbaW5wdXQubGVuZ3RoKCkgLSAxXSk7CisgICAgfQorCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG5lZWRz
U3BhY2UpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCh0b2tlbnNbaV0pOworICAgICAgICBuZWVkc1NwYWNlID0gdHJ1ZTsKKyAgICB9CiAK
LSAgICBidWlsZGVyLmFwcGVuZCh0b2tlbik7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKIH0KIAogU3RyaW5nIERPTVRva2VuTGlzdDo6cmVtb3ZlVG9rZW4oY29uc3QgQXRvbWljU3Ry
aW5nJiBpbnB1dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKIHsKKyAgICBWZWN0b3I8U3Ry
aW5nPiB0b2tlbnM7CisgICAgdG9rZW5zLmFwcGVuZCh0b2tlbi5zdHJpbmcoKSk7CisgICAgcmV0
dXJuIHJlbW92ZVRva2VucyhpbnB1dCwgdG9rZW5zKTsKK30KKworU3RyaW5nIERPTVRva2VuTGlz
dDo6cmVtb3ZlVG9rZW5zKGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB0b2tlbnMpCit7CiAgICAgLy8gQWxnb3JpdGhtIGRlZmluZWQgYXQgaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbW9u
LW1pY3Jvc3ludGF4ZXMuaHRtbCNyZW1vdmUtYS10b2tlbi1mcm9tLWEtc3RyaW5nCisgICAgLy8g
TmV3IHNwZWMgaXMgYXQgaHR0cDovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI3JlbW92ZS1hLXRva2Vu
LWZyb20tYS1zdHJpbmcKIAogICAgIHVuc2lnbmVkIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3Ro
KCk7CiAgICAgU3RyaW5nQnVpbGRlciBvdXRwdXQ7IC8vIDMKQEAgLTg1LDcgKzIwMCw3IEBAIFN0
cmluZyBET01Ub2tlbkxpc3Q6OnJlbW92ZVRva2VuKGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXQs
IGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAgICAgICAgIHMuYXBwZW5kKGlucHV0W3Bvc2l0aW9u
KytdKTsKIAogICAgICAgICAvLyBTdGVwIDgKLSAgICAgICAgaWYgKHMudG9TdHJpbmdQcmVzZXJ2
ZUNhcGFjaXR5KCkgPT0gdG9rZW4pIHsKKyAgICAgICAgaWYgKHRva2Vucy5jb250YWlucyhzLnRv
U3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpKSkgewogICAgICAgICAgICAgLy8gU3RlcCA4LjEKICAg
ICAgICAgICAgIHdoaWxlIChwb3NpdGlvbiA8IGlucHV0TGVuZ3RoICYmIGlzSFRNTFNwYWNlKGlu
cHV0W3Bvc2l0aW9uXSkpCiAgICAgICAgICAgICAgICAgKytwb3NpdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVRva2VuTGlzdC5oCmluZGV4IGZkMTEwYjdmZmQwNGY2MDljMjAzM2VkMzJhM2IyMTY5ODhh
ZGQzMzEuLjRiMjVkY2U1ZTNjODk3MjRmYTU1M2IwYjcxNDY3ZTUxYTU2MzJhOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9ET01Ub2tlbkxpc3QuaApAQCAtNDUsMTggKzQ1LDMyIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgY29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB0b2dnbGUoY29uc3QgQXRv
bWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyB0b1N0
cmluZygpIGNvbnN0ID0gMDsKKworICAgIGJvb2wgY29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5n
JiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGQoY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhZGQoY29uc3QgQXRvbWlj
U3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmUoY29uc3Qg
QXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgdG9nZ2xlKGNvbnN0IEF0
b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIEF0b21pY1N0cmluZyB0b1N0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIHZhbHVlKCk7IH0KIAogICAgIHZpcnR1YWwgRWxlbWVudCogZWxl
bWVudCgpIHsgcmV0dXJuIDA7IH0KIAogcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgQXRvbWljU3Ry
aW5nIHZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBB
dG9taWNTdHJpbmcmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkSW50ZXJuYWwoY29uc3Qg
QXRvbWljU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zSW50ZXJuYWwoY29uc3Qg
QXRvbWljU3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbnRlcm5h
bChjb25zdCBBdG9taWNTdHJpbmcmKTsKKwogICAgIHN0YXRpYyBib29sIHZhbGlkYXRlVG9rZW4o
Y29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBib29sIHZh
bGlkYXRlVG9rZW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHN0YXRpYyBTdHJpbmcgYWRkVG9rZW4oY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgQXRvbWlj
U3RyaW5nJik7CisgICAgc3RhdGljIFN0cmluZyBhZGRUb2tlbnMoY29uc3QgQXRvbWljU3RyaW5n
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICAgICBzdGF0aWMgU3RyaW5nIHJlbW92ZVRva2Vu
KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHN0YXRpYyBT
dHJpbmcgcmVtb3ZlVG9rZW5zKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRv
a2VuTGlzdC5pZGwKaW5kZXggY2Y1N2UxYWVlZjk2ZTI5Njc1MDBlZTE3ZTUwZjQyZmQwODljNjcy
Yi4uODVlZjEwOTJjNzFhMTE5MzJhZDBlN2E1NmNhNDNhNTU1YWJkMDhhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVG9rZW5MaXN0LmlkbApAQCAtMzEsOCArMzEsOCBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAgICAg
W1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9NU3RyaW5nIGl0ZW0oaW4gdW5zaWdu
ZWQgbG9uZyBpbmRleCk7CiAgICAgICAgIGJvb2xlYW4gY29udGFpbnMoaW4gRE9NU3RyaW5nIHRv
a2VuKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCBhZGQoaW4gRE9NU3RyaW5n
IHRva2VuKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCByZW1vdmUoaW4gRE9N
U3RyaW5nIHRva2VuKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBhZGQoaW4g
RE9NU3RyaW5nLi4uIHRva2VucykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQg
cmVtb3ZlKGluIERPTVN0cmluZy4uLiB0b2tlbnMpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
ICAgICBib29sZWFuIHRvZ2dsZShpbiBET01TdHJpbmcgdG9rZW4pIHJhaXNlcyhET01FeGNlcHRp
b24pOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZB
U0NSSVBUCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZTA4YTBjYzg2ZjEwMTE5OGRlZDhkNmE4MDVmNGU0ZWJhNDE4MmUyMy4u
ZTJmN2I2NWVjOGY1MTI2ZTMxM2NhMzAxMjgyNWI4MTAwNTFlZTg2NiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDEyLTA5LTI2ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgRE9NNDogQWRkIHN1cHBvcnQgZm9yIHJlc3QgcGFyYW1ldGVycyB0byBET01Ub2tl
bkxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3
MzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBhZGRzIHN1cHBvcnQgZm9yIHJlc3QgcGFyYW1hdGVycyB0byBET01Ub2tlbkxpc3QgYWRkIGFu
ZCByZW1vdmUuCisgICAgICAgIGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb210b2tlbmxp
c3QKKworICAgICAgICBUaGUgY29kZSBnZW5lcmF0b3IgaGFzIGJlZW4gdXBkYXRlZCB0byB1bmRl
cnN0YW5kIHZhcmlhZGljIG1ldGhvZHMuCisgICAgICAgIFdoZW4gYSBtZXRob2QgaGFzIGEgcmVz
dCBwYXJhbWV0ZXIgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIGNvbGxlY3RlZAorICAgICAg
ICBpbnRvIGEgV1RGOjpWZWN0b3IuCisKKyAgICAgICAgRE9NVG9rZW5MaXN0LCBET01TZXR0YWJs
ZVRva2VuTGlzdCBhbmQgQ2xhc3NMaXN0IHdlcmUgcmVzdHJ1Y3R1cmVkIGEgYml0IHRvCisgICAg
ICAgIGFsbG93IGNvZGUgdG8gYmUgc2hhcmVkIGJldHRlci4KKworICAgICAgICAqIGZhc3QvZG9t
L0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtcXVpcmtzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L2RvbS9IVE1MRWxlbWVudC9zY3JpcHQtdGVzdHMvY2xhc3MtbGlzdC5qczoKKyAgICAgICAg
KGVsZW1lbnQuY2xhc3NMaXN0LmFkZCk6CisgICAgICAgIChjcmVhdGVFbGVtZW50KToKKyAgICAg
ICAgKHNob3VsZEJlRXF1YWxUb1N0cmluZyk6CisgICAgICAgIChlbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUpOgorCiAyMDEyLTA5LTI3ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBDaHJvbWl1bSBleHBlY3RhdGlvbnMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvY2xhc3MtbGlzdC1leHBl
Y3RlZC50eHQKaW5kZXggNzE2NGQ0YmY4YmIyMjc5NDYyNDgzOTEzOTAyM2MxNjI5YzBjOGNiNy4u
ZTQxZGQ4OGFlYjBlNjYyNTBkNzU0N2U4NDllNjBjNjYzYjEyMDFjYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvY2xhc3MtbGlzdC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvY2xhc3MtbGlzdC1leHBlY3RlZC50
eHQKQEAgLTMxLDEwICszMSw4IEBAIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJycp
IHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKIFBBU1MgZWxlbWVudC5j
bGFzc0xpc3QuY29udGFpbnMoJ3ggeScpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRo
IGNvZGUgNQogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJycpIHRocmV3IGV4cGVjdGVkIERP
TUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCd4IHkn
KSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDUKLVBBU1MgZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1
bWVudHMuCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnJykgdGhyZXcgZXhwZWN0ZWQg
RE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
J3ggeScpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQotUEFTUyBlbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5v
dWdoIGFyZ3VtZW50cy4KIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCcnKSB0aHJldyBl
eHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEyCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0
LnRvZ2dsZSgneCB5JykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1CiBQ
QVNTIGVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IE5vdCBlbm91Z2ggYXJndW1lbnRzLgpAQCAtNzQsNiArNzIsMjYgQEAgUEFTUyBlbGVtZW50LmNs
YXNzTGlzdC5jb25zdHJ1Y3RvciBpcyBET01Ub2tlbkxpc3QKIFBBU1MgZWxlbWVudC5jbGFzc0xp
c3QgPT09IGVsZW1lbnQuY2xhc3NMaXN0IGlzIHRydWUKIFBBU1MgZG9jdW1lbnQuYm9keS5jbGFz
c0xpc3QuY29udGFpbnMoIkZBSUwiKSBpcyB0cnVlCiBQQVNTIGRvY3VtZW50LmJvZHkuY2xhc3NO
YW1lIGlzICIiCitWYXJpYWRpYyBjYWxscworUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBi
IgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBiIGMiCitQQVNTIGVsZW1lbnQuY2xhc3NO
YW1lIGlzICJhIGIgYyBudWxsIGQgdW5kZWZpbmVkIDAgZmFsc2UiCitQQVNTIGVsZW1lbnQuY2xh
c3NOYW1lIGlzICJhIGIgYSIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhJywgJ2InLCAn
JykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgorUEFTUyBlbGVtZW50
LmNsYXNzTmFtZSBpcyAiIgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2EnLCAnYicsICdj
IGQnKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDUKK1BBU1MgZWxlbWVu
dC5jbGFzc05hbWUgaXMgIiIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCkgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCitQQVNTIG9ic2VydmVyLnRha2VSZWNvcmRzKCkubGVuZ3RoIGlzIDEK
K1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImIgZCAgIgorUEFTUyBlbGVtZW50LmNsYXNzTmFt
ZSBpcyAiZCAgIgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBiIGMiCitQQVNTIGVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgnYScsICdiJywgJycpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2Vw
dGlvbiB3aXRoIGNvZGUgMTIKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiIKK1BBU1Mg
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhJywgJ2InLCAnYyBkJykgdGhyZXcgZXhwZWN0ZWQg
RE9NRXhjZXB0aW9uIHdpdGggY29kZSA1CitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIi
CitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBvYnNlcnZlci50YWtlUmVjb3JkcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtcXVpcmtzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtcXVpcmtzLWV4cGVj
dGVkLnR4dAppbmRleCA3MTY0ZDRiZjhiYjIyNzk0NjI0ODM5MTM5MDIzYzE2MjljMGM4Y2I3Li5l
NDFkZDg4YWViMGU2NjI1MGQ3NTQ3ZTg0OWU2MGM2NjNiMTIwMWNhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LXF1aXJrcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvY2xhc3MtbGlzdC1xdWly
a3MtZXhwZWN0ZWQudHh0CkBAIC0zMSwxMCArMzEsOCBAQCBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0
LmNvbnRhaW5zKCcnKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEyCiBQ
QVNTIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCd4IHknKSB0aHJldyBleHBlY3RlZCBET01F
eGNlcHRpb24gd2l0aCBjb2RlIDUKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCcnKSB0aHJl
dyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEyCiBQQVNTIGVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgneCB5JykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1Ci1Q
QVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5v
dCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJycpIHRo
cmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKIFBBU1MgZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKCd4IHknKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2Rl
IDUKLVBBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnRvZ2ds
ZSgnJykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgogUEFTUyBlbGVt
ZW50LmNsYXNzTGlzdC50b2dnbGUoJ3ggeScpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3
aXRoIGNvZGUgNQogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KQEAgLTc0LDYgKzcyLDI2IEBAIFBB
U1MgZWxlbWVudC5jbGFzc0xpc3QuY29uc3RydWN0b3IgaXMgRE9NVG9rZW5MaXN0CiBQQVNTIGVs
ZW1lbnQuY2xhc3NMaXN0ID09PSBlbGVtZW50LmNsYXNzTGlzdCBpcyB0cnVlCiBQQVNTIGRvY3Vt
ZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJGQUlMIikgaXMgdHJ1ZQogUEFTUyBkb2N1bWVu
dC5ib2R5LmNsYXNzTmFtZSBpcyAiIgorVmFyaWFkaWMgY2FsbHMKK1BBU1MgZWxlbWVudC5jbGFz
c05hbWUgaXMgImEgYiIKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiBjIgorUEFTUyBl
bGVtZW50LmNsYXNzTmFtZSBpcyAiYSBiIGMgbnVsbCBkIHVuZGVmaW5lZCAwIGZhbHNlIgorUEFT
UyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBiIGEiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgnYScsICdiJywgJycpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIK
K1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgIiIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCdhJywgJ2InLCAnYyBkJykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1
CitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICIiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBvYnNlcnZlci50YWtlUmVjb3Jkcygp
Lmxlbmd0aCBpcyAxCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJiIGQgICIKK1BBU1MgZWxl
bWVudC5jbGFzc05hbWUgaXMgImQgICIKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiBj
IgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2EnLCAnYicsICcnKSB0aHJldyBleHBl
Y3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEyCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlz
ICJhIGIiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnYScsICdiJywgJ2MgZCcpIHRo
cmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQorUEFTUyBlbGVtZW50LmNsYXNz
TmFtZSBpcyAiYSBiIgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1Mgb2JzZXJ2ZXIudGFrZVJlY29yZHMoKS5sZW5ndGggaXMgMQog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9zY3JpcHQtdGVzdHMvY2xhc3Mt
bGlzdC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L3NjcmlwdC10ZXN0cy9j
bGFzcy1saXN0LmpzCmluZGV4IDMyMTkwYmI3YTUyNzNlOTg2YjZkYzc3OGE3NjIxNTRjMjlhZTc3
Y2EuLjRlZjJhNWM2ZTU1MTcyNTI4N2M2M2UwZmMzMjczMjRkMWQ1ZGZjMGMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L3NjcmlwdC10ZXN0cy9jbGFzcy1saXN0
LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L3NjcmlwdC10ZXN0cy9j
bGFzcy1saXN0LmpzCkBAIC0xNTQsOSArMTU0LDYgQEAgc2hvdWxkVGhyb3dET01FeGNlcHRpb24o
ZnVuY3Rpb24oKSB7CiB9LCBET01FeGNlcHRpb24uSU5WQUxJRF9DSEFSQUNURVJfRVJSKTsKIAog
Y3JlYXRlRWxlbWVudCgnJyk7Ci1zaG91bGRUaHJvdygiZWxlbWVudC5jbGFzc0xpc3QuYWRkKCki
KTsKLQotY3JlYXRlRWxlbWVudCgnJyk7CiBzaG91bGRUaHJvd0RPTUV4Y2VwdGlvbihmdW5jdGlv
bigpIHsKICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJycpOwogfSwgRE9NRXhjZXB0aW9u
LlNZTlRBWF9FUlIpOwpAQCAtMTY2LDggKzE2Myw3IEBAIHNob3VsZFRocm93RE9NRXhjZXB0aW9u
KGZ1bmN0aW9uKCkgewogICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgneCB5Jyk7CiB9LCBE
T01FeGNlcHRpb24uSU5WQUxJRF9DSEFSQUNURVJfRVJSKTsKIAotY3JlYXRlRWxlbWVudCgnJyk7
Ci1zaG91bGRUaHJvdygiZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCkiKTsKKwogCiBjcmVhdGVF
bGVtZW50KCcnKTsKIHNob3VsZFRocm93RE9NRXhjZXB0aW9uKGZ1bmN0aW9uKCkgewpAQCAtMjY1
LDMgKzI2MSw3MiBAQCBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ0ZBSUwnKTsKIHNob3Vs
ZEJlVHJ1ZSgnZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoIkZBSUwiKScpOwogZG9j
dW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdGQUlMJyk7CiBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2RvY3VtZW50LmJvZHkuY2xhc3NOYW1lJywgJycpOworCisvLyBWYXJpYWRpYworCitkZWJ1
ZygnVmFyaWFkaWMgY2FsbHMnKTsKKworY3JlYXRlRWxlbWVudCgnJyk7CitlbGVtZW50LmNsYXNz
TGlzdC5hZGQoJ2EnLCAnYicpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNz
TmFtZScsICdhIGInKTsKKworZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhJywgJ2InLCAnYycpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNzTmFtZScsICdhIGIgYycpOworCitl
bGVtZW50LmNsYXNzTGlzdC5hZGQobnVsbCwge3RvU3RyaW5nOiBmdW5jdGlvbigpIHsgcmV0dXJu
ICdkJyB9fSwgdW5kZWZpbmVkLCAwLCBmYWxzZSk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vs
ZW1lbnQuY2xhc3NOYW1lJywgJ2EgYiBjIG51bGwgZCB1bmRlZmluZWQgMCBmYWxzZScpOworCitj
cmVhdGVFbGVtZW50KCcnKTsKK2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYScsICdiJywgJ2EnKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZWxlbWVudC5jbGFzc05hbWUnLCAnYSBiIGEnKTsKKwor
Y3JlYXRlRWxlbWVudCgnJyk7CitzaG91bGRUaHJvd0RPTUV4Y2VwdGlvbihmdW5jdGlvbigpIHsK
KyAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2EnLCAnYicsICcnKTsKK30sIERPTUV4Y2VwdGlv
bi5TWU5UQVhfRVJSKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZWxlbWVudC5jbGFzc05hbWUn
LCAnJyk7CisKK3Nob3VsZFRocm93RE9NRXhjZXB0aW9uKGZ1bmN0aW9uKCkgeworICAgIGVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgnYScsICdiJywgJ2MgZCcpOworfSwgRE9NRXhjZXB0aW9uLklOVkFM
SURfQ0hBUkFDVEVSX0VSUik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VsZW1lbnQuY2xhc3NO
YW1lJywgJycpOworCitjcmVhdGVFbGVtZW50KCcnKTsKK3Nob3VsZE5vdFRocm93KCdlbGVtZW50
LmNsYXNzTGlzdC5hZGQoKScpOworCitjcmVhdGVFbGVtZW50KCcnKTsKK3ZhciBvYnNlcnZlciA9
IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30pOworb2JzZXJ2ZXIub2Jz
ZXJ2ZShlbGVtZW50LCB7YXR0cmlidXRlczogdHJ1ZX0pOworZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCdhJywgJ2MnKTsKK3Nob3VsZEJlKCdvYnNlcnZlci50YWtlUmVjb3JkcygpLmxlbmd0aCcsICcx
Jyk7CisKKworY3JlYXRlRWxlbWVudCgnYSBiIGMgZCAgJyk7CitlbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoJ2EnLCAnYycpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNzTmFt
ZScsICdiIGQgICcpOworCitlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2InLCAnYicpOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNzTmFtZScsICdkICAnKTsKKworY3JlYXRl
RWxlbWVudCgnYSBiIGMgbnVsbCBkIHVuZGVmaW5lZCAwIGZhbHNlJyk7CitlbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUobnVsbCwge3RvU3RyaW5nOiBmdW5jdGlvbigpIHsgcmV0dXJuICdkJyB9fSwg
dW5kZWZpbmVkLCAwLCBmYWxzZSk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VsZW1lbnQuY2xh
c3NOYW1lJywgJ2EgYiBjJyk7CisKK2NyZWF0ZUVsZW1lbnQoJ2EgYicpOworc2hvdWxkVGhyb3dE
T01FeGNlcHRpb24oZnVuY3Rpb24oKSB7CisgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdh
JywgJ2InLCAnJyk7Cit9LCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2VsZW1lbnQuY2xhc3NOYW1lJywgJ2EgYicpOworCitzaG91bGRUaHJvd0RPTUV4
Y2VwdGlvbihmdW5jdGlvbigpIHsKKyAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2EnLCAn
YicsICdjIGQnKTsKK30sIERPTUV4Y2VwdGlvbi5JTlZBTElEX0NIQVJBQ1RFUl9FUlIpOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNzTmFtZScsICdhIGInKTsKKworc2hvdWxk
Tm90VGhyb3coJ2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgpJyk7CisKK2NyZWF0ZUVsZW1lbnQo
J2EgYiBjJyk7CitvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9u
KCkge30pOworb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCB7YXR0cmlidXRlczogdHJ1ZX0pOwor
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhJywgJ2MnKTsKK3Nob3VsZEJlKCdvYnNlcnZlci50
YWtlUmVjb3JkcygpLmxlbmd0aCcsICcxJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166017</attachid>
            <date>2012-09-27 09:20:13 -0700</date>
            <delta_ts>2012-09-27 11:05:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97335-20120927121930.patch</filename>
            <type>text/plain</type>
            <size>66333</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNjMjdmZWI5NmZjNGUw
MTNkMjZiNzMyZmRlOWNlNGRjMGZjZjNkMi4uNzllMzYxNDNhMzJkYTBhMWI0MzBmMTcyOTcyZDMy
NDBlM2IzODliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wOS0yNiAgRXJp
ayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERPTTQ6IEFkZCBzdXBw
b3J0IGZvciByZXN0IHBhcmFtZXRlcnMgdG8gRE9NVG9rZW5MaXN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzMzNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciByZXN0
IHBhcmFtYXRlcnMgdG8gRE9NVG9rZW5MaXN0IGFkZCBhbmQgcmVtb3ZlLgorICAgICAgICBodHRw
Oi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tdG9rZW5saXN0CisKKyAgICAgICAgVGhlIGNvZGUg
Z2VuZXJhdG9yIGhhcyBiZWVuIHVwZGF0ZWQgdG8gdW5kZXJzdGFuZCB2YXJpYWRpYyBtZXRob2Rz
LgorICAgICAgICBXaGVuIGEgbWV0aG9kIGhhcyBhIHJlc3QgcGFyYW1ldGVyIHRoZSByZW1haW5p
bmcgYXJndW1lbnRzIGFyZSBjb2xsZWN0ZWQKKyAgICAgICAgaW50byBhIFdURjo6VmVjdG9yLgor
CisgICAgICAgIERPTVRva2VuTGlzdCwgRE9NU2V0dGFibGVUb2tlbkxpc3QgYW5kIENsYXNzTGlz
dCB3ZXJlIHJlc3RydWN0dXJlZCBhIGJpdCB0bworICAgICAgICBhbGxvdyBjb2RlIHRvIGJlIHNo
YXJlZCBiZXR0ZXIuCisKKyAgICAgICAgVXBkYXRlZCBleGlzdGluZyB0ZXN0cyBhbmQgaW5jbHVk
ZXMgbmV3IGJpbmRpbmcgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZlQXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b05hdGl2ZUFyZ3VtZW50cyk6IFNpbWlsYXIgdG8gdG9O
YXRpdmVBcnJheSBidXQgZXh0cmFjdHMgdGhlIGFyZ3VtZW50cyBpbnN0ZWFkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVB
cmd1bWVudHNDb3VudENoZWNrKTogVXBkYXRlZCB0byB0cmVhdCByZXN0IHBhcmFtYXRlcnMgYXMg
b3B0aW9uYWwuCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6IEdlbmVyYXRlIGNv
ZGUgZm9yIHJlc3QgcGFyYW1zLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvblBhcmFtZXRlcnNDaGVjayk6IFVw
ZGF0ZWQgdG8gdHJlYXQgcmVzdCBwYXJhbWF0ZXJzIGFzIG9wdGlvbmFsLgorICAgICAgICAoR2Vu
ZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjayk6ICBHZW5lcmF0ZSBjb2RlIGZvciByZXN0IHBhcmFtcy4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKHBhcnNlT3B0aW9uYWxPclJl
cXVpcmVkQXJndW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJl
LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5j
cHA6CisgICAgICAgIChXZWJET01UZXN0T2JqOjp2YXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAg
ICAgIChXZWJET01UZXN0T2JqOjp2YXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJE
T01UZXN0T2JqOjp2YXJpYWRpY05vZGVNZXRob2QpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAod2Via2l0X2RvbV90
ZXN0X29ial92YXJpYWRpY19zdHJpbmdfbWV0aG9kKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9vYmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3ZhcmlhZGljX25vZGVfbWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJs
ZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZh
cmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAgICAgICgtW0RPTVRlc3RPYmogdmFyaWFkaWNTdHJp
bmdNZXRob2Q6dGFpbDpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiB2YXJpYWRpY0RvdWJsZU1l
dGhvZDp0YWlsOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHZhcmlhZGljTm9kZU1ldGhvZDp0
YWlsOl0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY1N0cmluZ01ldGhvZENhbGxiYWNr
KToKKyAgICAgICAgKFRlc3RPYmpWOEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjp2YXJpYWRpY0RvdWJsZU1ldGhvZENhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRob2RDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE9ialRl
bXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvTmF0aXZlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjp0b05hdGl2ZUFyZ3VtZW50cyk6IFNpbWlsYXIgdG8gdG9OYXRpdmVBcnJheSBidXQgZXh0
cmFjdHMgdGhlIGFyZ3VtZW50cyBpbnN0ZWFkLgorICAgICAgICAqIGh0bWwvQ2xhc3NMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTGlzdDo6Q2xhc3NMaXN0KToKKyAgICAgICAgKiBo
dG1sL0NsYXNzTGlzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDbGFzc0xpc3Qp
OgorICAgICAgICAqIGh0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NU2V0dGFibGVUb2tlbkxpc3Q6OmNvbnRhaW5zSW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NU2V0dGFibGVUb2tlbkxpc3Q6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01TZXR0YWJsZVRva2VuTGlzdDo6YWRkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
U2V0dGFibGVUb2tlbkxpc3Q6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01TZXR0YWJs
ZVRva2VuTGlzdDo6cmVtb3ZlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2V0dGFi
bGVUb2tlbkxpc3Q6OnNldFZhbHVlKToKKyAgICAgICAgKiBodG1sL0RPTVNldHRhYmxlVG9rZW5M
aXN0Lmg6CisgICAgICAgIChET01TZXR0YWJsZVRva2VuTGlzdCk6CisgICAgICAgICogaHRtbC9E
T01Ub2tlbkxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojp2YWxpZGF0
ZVRva2Vucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2Vu
TGlzdDo6Y29udGFpbnMpOiBNb3ZlZCBpbXBsZW1lbnRhdGlvbiB0byBiYXNlIGNsYXNzIHRvIGFs
bG93IGNvZGUgc2hhcmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6YWRkKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnJlbW92ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojp0b2dnbGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6YWRkSW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRva2VuTGlzdDo6cmVtb3ZlSW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRva2VuTGlzdDo6YWRkVG9rZW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRPTVRva2VuTGlzdDo6YWRkVG9rZW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlz
dDo6cmVtb3ZlVG9rZW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6
cmVtb3ZlVG9rZW5zKToKKyAgICAgICAgKiBodG1sL0RPTVRva2VuTGlzdC5oOgorICAgICAgICAo
RE9NVG9rZW5MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6dG9TdHJpbmcp
OgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmlkbDoKKwogMjAxMi0wOS0yNyAgRXJpayBB
cnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgcmVn
dWxhciBleHByZXNzaW9ucyBmcm9tIElETFN0cnVjdHVyZS5wbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA3NTMyYjc5M2U3MjhkMGQ4YmMxYWUyZDVjM2Uy
YTEyZTkwOTcxMzkwLi4xZWZhNGIzMDRmNjJiNzAxNWVhMWU1ZGU3MWMyZWM4ZGU0YmM1ODBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMzUzLDcgKzM1
Myw3IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAKICAgICB0ZW1wbGF0ZTw+CiAg
ICAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPFN0cmluZz4gewotICAgICAgICBzdGF0aWMgaW5s
aW5lIGJvb2wgYXJyYXlOYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1Zh
bHVlIGpzVmFsdWUsIFN0cmluZyYgaW5kZXhlZFZhbHVlKQorICAgICAgICBzdGF0aWMgaW5saW5l
IGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1Zh
bHVlLCBTdHJpbmcmIGluZGV4ZWRWYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgaW5kZXhl
ZFZhbHVlID0ganNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTM2Miw3ICszNjIsNyBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQ
b2xpY3kgewogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czx1
bnNpZ25lZCBsb25nPiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhcnJheU5hdGl2ZVZh
bHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgdW5zaWduZWQg
bG9uZyYgaW5kZXhlZFZhbHVlKQorICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFs
dWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCB1bnNpZ25lZCBs
b25nJiBpbmRleGVkVmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghanNWYWx1ZS5p
c051bWJlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3Nyw3ICszNzcs
NyBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogCiAgICAgdGVtcGxhdGU8PgogICAg
IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxmbG9hdD4gewotICAgICAgICBzdGF0aWMgaW5saW5l
IGJvb2wgYXJyYXlOYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IGpzVmFsdWUsIGZsb2F0JiBpbmRleGVkVmFsdWUpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgYm9v
bCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUs
IGZsb2F0JiBpbmRleGVkVmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGluZGV4ZWRWYWx1
ZSA9IGpzVmFsdWUudG9GbG9hdChleGVjKTsKICAgICAgICAgICAgIHJldHVybiAhZXhlYy0+aGFk
RXhjZXB0aW9uKCk7CkBAIC00MDAsNyArNDAwLDI1IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBv
bGljeSB7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CiAgICAgICAgICAgICBUIGluZGV4VmFsdWU7Ci0gICAgICAgICAgICBpZiAoIVRyYWl0c1R5cGU6
OmFycmF5TmF0aXZlVmFsdWUoZXhlYywgb2JqZWN0LT5nZXQoZXhlYywgaSksIGluZGV4VmFsdWUp
KQorICAgICAgICAgICAgaWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShleGVjLCBvYmplY3Qt
PmdldChleGVjLCBpKSwgaW5kZXhWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3Rv
cjxUPigpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpbmRleFZhbHVlKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBU
PgorICAgIFZlY3RvcjxUPiB0b05hdGl2ZUFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
c2l6ZV90IHN0YXJ0SW5kZXggPSAwKQorICAgIHsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGV4
ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICAgICAgQVNTRVJUKHN0YXJ0SW5kZXggPD0gbGVuZ3Ro
KTsKKworICAgICAgICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICB0eXBlZGVmIE5hdGl2ZVZh
bHVlVHJhaXRzPFQ+IFRyYWl0c1R5cGU7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0
SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgVCBpbmRleFZhbHVlOworICAg
ICAgICAgICAgaWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShleGVjLCBleGVjLT5hcmd1bWVu
dChpKSwgaW5kZXhWYWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxUPigpOwog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpbmRleFZhbHVlKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRl
eCA2NTkxNGI1Njg3N2Y2NWNhMWQ5MGNmNjk1NTI2YzFjZjY2NWQ5MTIwLi5lMmUyNjk3YTQ3ODFl
NjUxOWViMzY2NzVlNTM0NTEwYmJiOTJiYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTMwOCw2ICsxMzA4LDcgQEAg
c3ViIEdlbmVyYXRlRnVuY3Rpb25QYXJhbWV0ZXJzQ2hlY2sKICAgICBteSBAb3JFeHByZXNzaW9u
ID0gKCk7CiAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSAwOwogICAgIG15IEBuZWVkZWRBcmd1bWVu
dHMgPSAoKTsKKyAgICBteSAkaGFzVmFyaWFkaWMgPSAwOwogICAgIG15ICRudW1NYW5kYXRvcnlQ
YXJhbXMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CiAKICAgICBmb3JlYWNoIG15ICRwYXJh
bWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewpAQCAtMTMxNywxMSArMTMxOCwxNyBA
QCBzdWIgR2VuZXJhdGVGdW5jdGlvblBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgcHVzaChA
bmVlZGVkQXJndW1lbnRzLCBAdXNlZEFyZ3VtZW50cyk7CiAgICAgICAgICAgICAkbnVtTWFuZGF0
b3J5UGFyYW1zLS07CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmlzVmFyaWFk
aWMpIHsKKyAgICAgICAgICAgICRoYXNWYXJpYWRpYyA9IDE7CisgICAgICAgICAgICBsYXN0Owor
ICAgICAgICB9CiAgICAgICAgICRudW1QYXJhbWV0ZXJzKys7CiAgICAgfQotICAgIG15ICgkZXhw
cmVzc2lvbiwgQHVzZWRBcmd1bWVudHMpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNz
aW9uKCRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb24pOwotICAgIHB1c2goQG9yRXhwcmVzc2lvbiwg
JGV4cHJlc3Npb24pOwotICAgIHB1c2goQG5lZWRlZEFyZ3VtZW50cywgQHVzZWRBcmd1bWVudHMp
OworICAgIGlmICghJGhhc1ZhcmlhZGljKSB7CisgICAgICAgIG15ICgkZXhwcmVzc2lvbiwgQHVz
ZWRBcmd1bWVudHMpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uKCRudW1QYXJh
bWV0ZXJzLCAkZnVuY3Rpb24pOworICAgICAgICBwdXNoKEBvckV4cHJlc3Npb24sICRleHByZXNz
aW9uKTsKKyAgICAgICAgcHVzaChAbmVlZGVkQXJndW1lbnRzLCBAdXNlZEFyZ3VtZW50cyk7Cisg
ICAgfQogICAgIHJldHVybiAoJG51bU1hbmRhdG9yeVBhcmFtcywgam9pbigiIHx8ICIsIEBvckV4
cHJlc3Npb24pLCBAbmVlZGVkQXJndW1lbnRzKTsKIH0KIApAQCAtMjYwNCw3ICsyNjExLDcgQEAg
c3ViIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjawogCiAgICAgbXkgJG51bU1hbmRhdG9yeVBh
cmFtcyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKICAgICBmb3JlYWNoIG15ICRwYXJhbSAo
cmV2ZXJzZShAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pKSB7Ci0gICAgICAgIGlmICgkcGFyYW0t
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7CisgICAgICAgIGlmICgkcGFyYW0t
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9IG9yICRwYXJhbS0+aXNWYXJpYWRpYykg
ewogICAgICAgICAgICAgJG51bU1hbmRhdG9yeVBhcmFtcy0tOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgbGFzdDsKQEAgLTI3MDcsMTMgKzI3MTQsMzggQEAgc3ViIEdlbmVyYXRlUGFy
YW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJl
ZlB0cjwkYXJnVHlwZT4gJG5hbWUgPSAke2NhbGxiYWNrQ2xhc3NOYW1lfTo6Y3JlYXRlKGFzT2Jq
ZWN0KGV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCkpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYgKCRwYXJhbWV0ZXItPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDbGFtcCJ9KSB7Ci0gICAgICAgICAgICAgICAgbXkgJG5hdGl2
ZVZhbHVlID0gIiR7bmFtZX1OYXRpdmVWYWx1ZSI7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICRhcmdUeXBlICRuYW1lID0gMDtcbiIpOwotICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBkb3VibGUgJG5hdGl2ZVZhbHVlID0gZXhlYy0+YXJn
dW1lbnQoJGFyZ3NJbmRleCkudG9OdW1iZXIoZXhlYyk7XG4iKTsKKyAgICAgICAgICAgIG15ICRu
YXRpdmVWYWx1ZSA9ICIke25hbWV9TmF0aXZlVmFsdWUiOworICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICRhcmdUeXBlICRuYW1lID0gMDtcbiIpOworICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGRvdWJsZSAkbmF0aXZlVmFsdWUgPSBleGVjLT5hcmd1bWVu
dCgkYXJnc0luZGV4KS50b051bWJlcihleGVjKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSlcbiIpOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpO1xuXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBpZiAoIWlzbmFuKCRuYXRpdmVWYWx1ZSkpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgJG5hbWUgPSBjbGFtcFRvPCRhcmdUeXBlPigkbmF0aXZlVmFsdWUp
O1xuXG4iKTsKKyAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykgeworICAg
ICAgICAgICAgbXkgJG5hdGl2ZUVsZW1lbnRUeXBlOworICAgICAgICAgICAgaWYgKCRhcmdUeXBl
IGVxICJET01TdHJpbmciKSB7CisgICAgICAgICAgICAgICAgJG5hdGl2ZUVsZW1lbnRUeXBlID0g
IlN0cmluZyI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRuYXRpdmVF
bGVtZW50VHlwZSA9IEdldE5hdGl2ZVR5cGUoJGFyZ1R5cGUpOworICAgICAgICAgICAgICAgIGlm
ICgkbmF0aXZlRWxlbWVudFR5cGUgPX4gLz4kLykgeworICAgICAgICAgICAgICAgICAgICAkbmF0
aXZlRWxlbWVudFR5cGUgLj0gIiAiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCFJc05hdGl2ZVR5cGUoJGFyZ1R5cGUpKSB7CisgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+
ICRuYW1lO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGZv
ciAodW5zaWduZWQgaSA9ICRhcmdzSW5kZXg7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsr
aSkge1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50KGkpLmluaGVyaXRzKCZKUyR7YXJnVHlwZX06OnNfaW5mbykpXG4i
KTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUuYXBwZW5kKHRvJGFyZ1R5cGUoZXhlYy0+YXJndW1l
bnQoaSkpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9
XG4iKQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4gJG5hbWUgPSB0b05hdGl2ZUFy
Z3VtZW50czwkbmF0aXZlRWxlbWVudFR5cGU+KGV4ZWMsICRhcmdzSW5kZXgpO1xuIik7CisgICAg
ICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgdHlwZSBjb252ZXJzaW9uIHN1Y2NlZWRlZC4KICAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuXG4iKTsKLSAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFpc25hbigkbmF0aXZlVmFsdWUp
KVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFt
ZSA9IGNsYW1wVG88JGFyZ1R5cGU+KCRuYXRpdmVWYWx1ZSk7XG5cbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTtcbiIpOworICAgICAgICAgICAgfQorCiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAjIElmIHRoZSAiU3RyaWN0VHlwZUNoZWNraW5nIiBleHRlbmRlZCBhdHRyaWJ1
dGUgaXMgcHJlc2VudCwgYW5kIHRoZSBhcmd1bWVudCdzIHR5cGUgaXMgYW4KICAgICAgICAgICAg
ICMgaW50ZXJmYWNlIHR5cGUsIHRoZW4gaWYgdGhlIGluY29taW5nIHZhbHVlIGRvZXMgbm90IGlt
cGxlbWVudCB0aGF0IGludGVyZmFjZSwgYSBUeXBlRXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggODZkM2ViNjhlOWIy
NzAwNDk0NzE2YTdiNWI1MzIwMWYxMTJmNjg0OS4uODgwMzQ0NDMzMzUxZmI3NzExMDg4MTQzY2Ex
M2M2ZjI3N2MwOWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE0MDUsMTUgKzE0MDUsMjIgQEAgc3ViIEdlbmVyYXRl
RnVuY3Rpb25QYXJhbWV0ZXJzQ2hlY2sKIAogICAgIG15IEBvckV4cHJlc3Npb24gPSAoKTsKICAg
ICBteSAkbnVtUGFyYW1ldGVycyA9IDA7CisgICAgbXkgJGhhc1ZhcmlhZGljID0gMDsKICAgICBt
eSAkbnVtTWFuZGF0b3J5UGFyYW1zID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwogICAgIGZv
cmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CiAgICAgICAg
IGlmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewogICAg
ICAgICAgICAgcHVzaChAb3JFeHByZXNzaW9uLCBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJl
c3Npb24oJG51bVBhcmFtZXRlcnMsICRmdW5jdGlvbikpOwogICAgICAgICAgICAgJG51bU1hbmRh
dG9yeVBhcmFtcy0tOwogICAgICAgICB9CisgICAgICAgIGlmICgkcGFyYW1ldGVyLT5pc1Zhcmlh
ZGljKSB7CisgICAgICAgICAgICAkaGFzVmFyaWFkaWMgPSAxOworICAgICAgICAgICAgbGFzdDsK
KyAgICAgICAgfQogICAgICAgICAkbnVtUGFyYW1ldGVycysrOwogICAgIH0KLSAgICBwdXNoKEBv
ckV4cHJlc3Npb24sIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbigkbnVtUGFyYW1l
dGVycywgJGZ1bmN0aW9uKSk7CisgICAgaWYgKCEkaGFzVmFyaWFkaWMpIHsKKyAgICAgICAgcHVz
aChAb3JFeHByZXNzaW9uLCBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24oJG51bVBh
cmFtZXRlcnMsICRmdW5jdGlvbikpOworICAgIH0KICAgICByZXR1cm4gKCRudW1NYW5kYXRvcnlQ
YXJhbXMsIGpvaW4oIiB8fCAiLCBAb3JFeHByZXNzaW9uKSk7CiB9CiAKQEAgLTE2MjQsMTIgKzE2
MzEsMTIgQEAgc3ViIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjawogICAgIG15ICRkYXRhTm9k
ZSA9IHNoaWZ0OwogCiAgICAgbXkgJG51bU1hbmRhdG9yeVBhcmFtcyA9IDA7Ci0gICAgbXkgJG9w
dGlvbmFsU2VlbiA9IDA7CisgICAgbXkgJGFsbG93Tm9uT3B0aW9uYWwgPSAxOwogICAgIGZvcmVh
Y2ggbXkgJHBhcmFtIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKLSAgICAgICAgaWYgKCRw
YXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKLSAgICAgICAgICAgICRv
cHRpb25hbFNlZW4gPSAxOworICAgICAgICBpZiAoJHBhcmFtLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiT3B0aW9uYWwifSBvciAkcGFyYW0tPmlzVmFyaWFkaWMpIHsKKyAgICAgICAgICAgICRhbGxv
d05vbk9wdGlvbmFsID0gMDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRpZSAiQW4g
YXJndW1lbnQgbXVzdCBub3QgYmUgZGVjbGFyZWQgdG8gYmUgb3B0aW9uYWwgdW5sZXNzIGFsbCBz
dWJzZXF1ZW50IGFyZ3VtZW50cyB0byB0aGUgb3BlcmF0aW9uIGFyZSBhbHNvIG9wdGlvbmFsLiIg
aWYgJG9wdGlvbmFsU2VlbjsKKyAgICAgICAgICAgIGRpZSAiQW4gYXJndW1lbnQgbXVzdCBub3Qg
YmUgZGVjbGFyZWQgdG8gYmUgb3B0aW9uYWwgdW5sZXNzIGFsbCBzdWJzZXF1ZW50IGFyZ3VtZW50
cyB0byB0aGUgb3BlcmF0aW9uIGFyZSBhbHNvIG9wdGlvbmFsLiIgaWYgISRhbGxvd05vbk9wdGlv
bmFsOwogICAgICAgICAgICAgJG51bU1hbmRhdG9yeVBhcmFtcysrOwogICAgICAgICB9CiAgICAg
fQpAQCAtMTc2MCw2ICsxNzY3LDIzIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGVjID0gVFlQRV9NSVNN
QVRDSF9FUlI7XG4iOwogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAg
ICAgIGdvdG8gZmFpbDtcbiI7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0g
IiAgICB9XG4iOworICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7Cisg
ICAgICAgICAgICBteSAkbmF0aXZlRWxlbWVudFR5cGUgPSBHZXROYXRpdmVUeXBlKCRwYXJhbWV0
ZXItPnR5cGUpOworICAgICAgICAgICAgaWYgKCRuYXRpdmVFbGVtZW50VHlwZSA9fiAvPiQvKSB7
CisgICAgICAgICAgICAgICAgJG5hdGl2ZUVsZW1lbnRUeXBlIC49ICIgIjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgbXkgJGFyZ1R5cGUgPSBHZXRUeXBlRnJvbVNpZ25hdHVyZSgkcGFy
YW1ldGVyKTsKKyAgICAgICAgICAgIGlmIChJc1dyYXBwZXJUeXBlKCRhcmdUeXBlKSkgeworICAg
ICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIFZlY3RvcjwkbmF0aXZl
RWxlbWVudFR5cGU+ICRwYXJhbWV0ZXJOYW1lO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBmb3IgKGludCBpID0gJHBhcmFtSW5kZXg7IGkgPCBhcmdz
Lkxlbmd0aCgpOyArK2kpIHtcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3Ry
aW5nIC49ICIgICAgICAgIGlmICghVjgke2FyZ1R5cGV9OjpIYXNJbnN0YW5jZShhcmdzW2ldKSlc
biI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpO1xuIjsKKyAgICAg
ICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgJHBhcmFtZXRlck5h
bWUuYXBwZW5kKFY4JHthcmdUeXBlfTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChhcmdzW2ldKSkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICB9XG4iOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBFWENFUFRJT05fQkxPQ0soVmVjdG9yPCRuYXRp
dmVFbGVtZW50VHlwZT4sICRwYXJhbWV0ZXJOYW1lLCB0b05hdGl2ZUFyZ3VtZW50czwkbmF0aXZl
RWxlbWVudFR5cGU+KGFyZ3MsICRwYXJhbUluZGV4KSk7XG4iOworICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2lmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLykgewogICAgICAgICAg
ICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihhcmdzLCAkcGFyYW1JbmRleCwgJHBhcmFtZXRlckRlZmF1bHRQb2xpY3kpIiwg
ImFyZ3MuR2V0SXNvbGF0ZSgpIik7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcg
Lj0gIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJHBhcmFtZXRlciwgJG5hdGl2ZVR5cGUs
ICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4gIlxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggYmI4YTBmMGY3MTJkYjE0ZjU0ZmY4NTFjYmFj
YzQ4ZWQ3N2U5ZjczZC4uMTlmYjY0OTVjMzFiMWZiNTZkN2U2YTlmMTUwZGI5NTk4MmM3NDcxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTEy
NDYsNyArMTI0Niw3IEBAIHN1YiBwYXJzZU9wdGlvbmFsT3JSZXF1aXJlZEFyZ3VtZW50CiAgICAg
ICAgICMgUmVtb3ZlIGFsbCAiPyIgaWYgZXhpc3RzLCBlLmcuICJvYmplY3Q/W10/IiAtPiAib2Jq
ZWN0W10iLgogICAgICAgICAkdHlwZSA9fiBzL1w/Ly9nOwogICAgICAgICAkcGFyYW1EYXRhTm9k
ZS0+dHlwZSgkdHlwZSk7Ci0gICAgICAgICRzZWxmLT5wYXJzZUVsbGlwc2lzKCk7CisgICAgICAg
ICRwYXJhbURhdGFOb2RlLT5pc1ZhcmlhZGljKCRzZWxmLT5wYXJzZUVsbGlwc2lzKCkpOwogICAg
ICAgICAkcGFyYW1EYXRhTm9kZS0+bmFtZSgkc2VsZi0+cGFyc2VBcmd1bWVudE5hbWUoKSk7CiAg
ICAgICAgIHJldHVybiAkcGFyYW1EYXRhTm9kZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtCmluZGV4IDFlYjhhMTQ1NDBmOGI3NTIy
ZTQ0N2IzMmQzMWI5MTZmNjViOWJiYjYuLmZmNjI4NzI1ZWI5MGY1NDY2NzNmZDE2NDFlZjFkYzVh
YzI2Y2RmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
U3RydWN0dXJlLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3Ry
dWN0dXJlLnBtCkBAIC02Nyw3ICs2Nyw4IEBAIHN0cnVjdCggZG9tU2lnbmF0dXJlID0+IHsKICAg
ICBuYW1lID0+ICckJywgICAgICAjIFZhcmlhYmxlIG5hbWUKICAgICB0eXBlID0+ICckJywgICAg
ICAjIFZhcmlhYmxlIHR5cGUKICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVu
ZGVkIGF0dHJpYnV0ZXMKLSAgICBpc051bGxhYmxlID0+ICckJyAjIElzIHZhcmlhYmxlIHR5cGUg
TnVsbGFibGUgKFQ/KQorICAgIGlzTnVsbGFibGUgPT4gJyQnLCAjIElzIHZhcmlhYmxlIHR5cGUg
TnVsbGFibGUgKFQ/KQorICAgIGlzVmFyaWFkaWMgPT4gJyQnICMgSXMgdmFyaWFibGUgdmFyaWFk
aWMgKGxvbmcuLi4gbnVtYmVycykKIH0pOwogCiAjIFVzZWQgdG8gcmVwcmVzZW50IHN0cmluZyBj
b25zdGFudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9DUFAvV2ViRE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCmluZGV4IDUzMTgxZDRhOTA1MjNmMjU0YzgyNWU1
NjljN2FmZDA4ODg2OGI4ZTAuLjhiMTg1ZTUxMDI3NTg3MDc0NGI2NzllM2UwMjhkMTU5N2U5YTJh
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcApAQCAtMjYsMTIgKzI2LDE0IEBACiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJTVkdQb2ludC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRlc3RPYmouaCIKICNpbmNsdWRlICJXZWJET01E
aWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV2ViRE9NRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJE
T01JREJLZXkuaCIKKyNpbmNsdWRlICJXZWJET01Ob2RlLmgiCiAjaW5jbHVkZSAiV2ViRE9NU1ZH
UG9pbnQuaCIKICNpbmNsdWRlICJXZWJET01TdHJpbmcuaCIKICNpbmNsdWRlICJXZWJET01hLmgi
CkBAIC05NjUsNiArOTY3LDMwIEBAIFdlYkRPTWJvb2wgV2ViRE9NVGVzdE9iajo6c3RyaWN0RnVu
Y3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nJiBzdHIsIGZsb2F0IGEsIGludCBiCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAordm9pZCBXZWJET01UZXN0T2JqOjp2YXJpYWRpY1N0cmluZ01ldGhvZChj
b25zdCBXZWJET01TdHJpbmcmIGhlYWQsIGNvbnN0IFdlYkRPTVN0cmluZyYgdGFpbCkKK3sKKyAg
ICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT52YXJpYWRpY1N0
cmluZ01ldGhvZChoZWFkLCB0YWlsKTsKK30KKwordm9pZCBXZWJET01UZXN0T2JqOjp2YXJpYWRp
Y0RvdWJsZU1ldGhvZChkb3VibGUgaGVhZCwgZG91YmxlIHRhaWwpCit7CisgICAgaWYgKCFpbXBs
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+dmFyaWFkaWNEb3VibGVNZXRob2Qo
aGVhZCwgdGFpbCk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9iajo6dmFyaWFkaWNOb2RlTWV0aG9k
KGNvbnN0IFdlYkRPTU5vZGUmIGhlYWQsIGNvbnN0IFdlYkRPTU5vZGUmIHRhaWwpCit7CisgICAg
aWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+dmFyaWFkaWNOb2Rl
TWV0aG9kKHRvV2ViQ29yZShoZWFkKSwgdG9XZWJDb3JlKHRhaWwpKTsKK30KKwogV2ViQ29yZTo6
VGVzdE9iaiogdG9XZWJDb3JlKGNvbnN0IFdlYkRPTVRlc3RPYmomIHdyYXBwZXIpCiB7CiAgICAg
cmV0dXJuIHdyYXBwZXIuaW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAppbmRleCA1ZDlhOWFjMDAyODFk
YzkwODkzMDFkNmU3YTViNTI3OGY0ZGFhZDA0Li4zMWM4MzhiZDZiMzAzOGMyNmU2ODI0YjUxMDhh
YmMwMjA2NDk4MmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBX
ZWJET01EaWN0aW9uYXJ5OwogY2xhc3MgV2ViRE9NRG9jdW1lbnQ7CiBjbGFzcyBXZWJET01FdmVu
dExpc3RlbmVyOwogY2xhc3MgV2ViRE9NSURCS2V5OworY2xhc3MgV2ViRE9NTm9kZTsKIGNsYXNz
IFdlYkRPTVNWR1BvaW50OwogY2xhc3MgV2ViRE9NU3RyaW5nOwogY2xhc3MgV2ViRE9NVGVzdE9i
ajsKQEAgLTE5MCw2ICsxOTEsOSBAQCBwdWJsaWM6CiAgICAgV2ViRE9NU1ZHUG9pbnQgaW1tdXRh
YmxlUG9pbnRGdW5jdGlvbigpOwogICAgIHZvaWQgYmFuYW5hKCk7CiAgICAgV2ViRE9NYm9vbCBz
dHJpY3RGdW5jdGlvbihjb25zdCBXZWJET01TdHJpbmcmIHN0ciwgZmxvYXQgYSwgaW50IGIpOwor
ICAgIHZvaWQgdmFyaWFkaWNTdHJpbmdNZXRob2QoY29uc3QgV2ViRE9NU3RyaW5nJiBoZWFkLCBj
b25zdCBXZWJET01TdHJpbmcmIHRhaWwpOworICAgIHZvaWQgdmFyaWFkaWNEb3VibGVNZXRob2Qo
ZG91YmxlIGhlYWQsIGRvdWJsZSB0YWlsKTsKKyAgICB2b2lkIHZhcmlhZGljTm9kZU1ldGhvZChj
b25zdCBXZWJET01Ob2RlJiBoZWFkLCBjb25zdCBXZWJET01Ob2RlJiB0YWlsKTsKIAogICAgIFdl
YkNvcmU6OlRlc3RPYmoqIGltcGwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
T2JqLmNwcAppbmRleCAyZDAzZGFlOWE4ZGJmYTcwNWExZTRkYzU4YjY1NjM5MjEwOGI3ODUyLi5j
MTI2NGJkZTViNTU3OTM3ZTQzNDc1NzI5NGRiMzEzZjRkNmQxOWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0T2JqLmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIndlYmtpdC9X
ZWJLaXRET01Eb2N1bWVudFByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NSURC
S2V5LmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTUlEQktleVByaXZhdGUuaCIKKyNpbmNs
dWRlICJ3ZWJraXQvV2ViS2l0RE9NTm9kZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01O
b2RlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01TVkdQb2ludC5oIgogI2lu
Y2x1ZGUgIndlYmtpdC9XZWJLaXRET01TVkdQb2ludFByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJr
aXQvV2ViS2l0RE9NU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCkBAIC0xNDU0LDYgKzE0NTYsNDkg
QEAgd2Via2l0X2RvbV90ZXN0X29ial9zdHJpY3RfZnVuY3Rpb24oV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgY29uc3QgZ2NoYXIqIHN0ciwgZ2YKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lk
Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX3N0cmluZ19tZXRob2QoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIGhlYWQsIGNvbnN0IGdjaGFyKiB0YWlsKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7CisgICAgZ19yZXR1cm5faWZfZmFpbChoZWFkKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHRh
aWwpOworICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZEhlYWQgPSBXVEY6OlN0cmluZzo6ZnJvbVVU
RjgoaGVhZCk7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkVGFpbCA9IFdURjo6U3RyaW5nOjpm
cm9tVVRGOCh0YWlsKTsKKyAgICBpdGVtLT52YXJpYWRpY1N0cmluZ01ldGhvZChjb252ZXJ0ZWRI
ZWFkLCBjb252ZXJ0ZWRUYWlsKTsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0X29ial92YXJp
YWRpY19kb3VibGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdkb3VibGUgaGVhZCwg
Z2RvdWJsZSB0YWlsKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+dmFyaWFkaWNEb3VibGVNZXRob2Qo
aGVhZCwgdGFpbCk7Cit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfbm9k
ZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NTm9kZSogaGVhZCwgV2Vi
S2l0RE9NTm9kZSogdGFpbCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaGVhZCk7
CisgICAgZ19yZXR1cm5faWZfZmFpbCh0YWlsKTsKKyAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0
ZWRIZWFkID0gMDsKKyAgICBpZiAoaGVhZCkgeworICAgICAgICBjb252ZXJ0ZWRIZWFkID0gV2Vi
S2l0Ojpjb3JlKGhlYWQpOworICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZEhlYWQp
OworICAgIH0KKyAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRUYWlsID0gMDsKKyAgICBpZiAo
dGFpbCkgeworICAgICAgICBjb252ZXJ0ZWRUYWlsID0gV2ViS2l0Ojpjb3JlKHRhaWwpOworICAg
ICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZFRhaWwpOworICAgIH0KKyAgICBpdGVtLT52
YXJpYWRpY05vZGVNZXRob2QoY29udmVydGVkSGVhZCwgY29udmVydGVkVGFpbCk7Cit9CisKIGds
b25nCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfbG9uZ19hdHRyKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKaW5kZXggOWQ5
MDVhZDJiMTk4MTI5OWQ5ZWY1YmEzNDBkYTc1MjIyNjRiMjdkZS4uMTc2ZDViMDBmNGQ0NTJjNTIx
MDVjZGUxNThhNjkyNGIyYzgzYTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaApA
QCAtNDg2LDYgKzQ4Niw0MiBAQCBXRUJLSVRfQVBJIFdlYktpdERPTWJvb2wqCiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX3N0cmljdF9mdW5jdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBn
Y2hhciogc3RyLCBnZmxvYXQgYSwgZ2xvbmcgYiwgR0Vycm9yKiogZXJyb3IpOwogCiAvKioKKyAq
IHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfc3RyaW5nX21ldGhvZDoKKyAqIEBzZWxmOiBB
ICNXZWJLaXRET01UZXN0T2JqCisgKiBAaGVhZDogQSAjZ2NoYXIKKyAqIEB0YWlsOiBBICNnY2hh
cgorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21f
dGVzdF9vYmpfdmFyaWFkaWNfc3RyaW5nX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBj
b25zdCBnY2hhciogaGVhZCwgY29uc3QgZ2NoYXIqIHRhaWwpOworCisvKioKKyAqIHdlYmtpdF9k
b21fdGVzdF9vYmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZDoKKyAqIEBzZWxmOiBBICNXZWJLaXRE
T01UZXN0T2JqCisgKiBAaGVhZDogQSAjZ2RvdWJsZQorICogQHRhaWw6IEEgI2dkb3VibGUKKyAq
CisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3ZhcmlhZGljX2RvdWJsZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2RvdWJs
ZSBoZWFkLCBnZG91YmxlIHRhaWwpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFy
aWFkaWNfbm9kZV9tZXRob2Q6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGhl
YWQ6IEEgI1dlYktpdERPTU5vZGUKKyAqIEB0YWlsOiBBICNXZWJLaXRET01Ob2RlCisgKgorICog
UmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial92
YXJpYWRpY19ub2RlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01Ob2Rl
KiBoZWFkLCBXZWJLaXRET01Ob2RlKiB0YWlsKTsKKworLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF9yZWFkX29ubHlfbG9uZ19hdHRyOgogICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RP
YmoKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCmluZGV4IDc3ZDQwNDRlNDg5ZTU2OGE2YWM0Y2M4NGExNzUwNmZhNTcx
ZWZhNGIuLmFkY2ExMjkzYzU3Y2NmMDVjMjVjZDEyYzI2YjZmNTZiYjVhNjg2NTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTRmxvYXQzMkFycmF5LmgiCisjaW5jbHVk
ZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTU1ZH
UG9pbnQuaCIKICNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGUuaCIKQEAgLTMyMSw2ICszMjIsOSBA
QCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1
ZXNbXSA9CiAgICAgeyAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIsIERvbnREZWxldGUgfCBKU0M6
OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbiksIChpbnRwdHJfdCkwLCBO
b0ludHJpbnNpYyB9LAogICAgIHsgIm9yYW5nZSIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9u
LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3JhbmdlKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAic3Ry
aWN0RnVuY3Rpb24iLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1
bmN0aW9uKSwgKGludHB0cl90KTMsIE5vSW50cmluc2ljIH0sCisgICAgeyAidmFyaWFkaWNTdHJp
bmdNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3Ry
aW5nTWV0aG9kKSwgKGludHB0cl90KTIsIE5vSW50cmluc2ljIH0sCisgICAgeyAidmFyaWFkaWNE
b3VibGVNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGlj
RG91YmxlTWV0aG9kKSwgKGludHB0cl90KTIsIE5vSW50cmluc2ljIH0sCisgICAgeyAidmFyaWFk
aWNOb2RlTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y05vZGVNZXRob2QpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMgfSwKICAgICB7IDAsIDAsIDAs
IDAsIE5vSW50cmluc2ljIH0KIH07CiAKQEAgLTI1OTcsNiArMjYwMSw2OSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rp
b24oRXhlY1N0YXRlKgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZh
cmlhZGljU3RyaW5nTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNP
YmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2Fz
dDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgY29uc3QgU3RyaW5nJiBoZWFkKE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgp
ID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIFZlY3RvcjxTdHJpbmc+IHRhaWwgPSB0b05hdGl2ZUFyZ3VtZW50czxTdHJpbmc+
KGV4ZWMsIDEpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBpbXBsLT52YXJpYWRpY1N0cmlu
Z01ldGhvZChoZWFkLCB0YWlsKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhp
c1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9iaiogaW1w
bCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBkb3VibGUgaGVh
ZChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRv
TnVtYmVyKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgVmVjdG9yPGRvdWJsZT4g
dGFpbCA9IHRvTmF0aXZlQXJndW1lbnRzPGRvdWJsZT4oZXhlYywgMSk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIGltcGwtPnZhcmlhZGljRG91YmxlTWV0aG9kKGhlYWQsIHRhaWwpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVN
ZXRob2QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6
OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFs
dWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RP
Ymo6OnNfaW5mbyk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGV4ZWMpKTsKKyAgICBOb2RlKiBoZWFkKHRvTm9kZShNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIFZlY3RvcjxOb2RlKj4gdGFpbDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwg
ZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dChpKS5pbmhlcml0cygmSlNOb2RlOjpzX2luZm8pKQorICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRhaWwuYXBwZW5kKHRvTm9kZShleGVjLT5hcmd1
bWVudChpKSkpOworICAgIH0KKyAgICBpbXBsLT52YXJpYWRpY05vZGVNZXRob2QoaGVhZCwgdGFp
bCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogdm9p
ZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBKU1Rlc3RPYmoqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4o
Y2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgKaW5kZXggZjgxMGQ4MDAxNjA0Yjg2YTQyOWZhODhiNTU0ZmJiZTU5MDE4ZTcw
OS4uOTc4ZDAxZTIyOWRjYjFkM2RkNDE2ZmQyYmZlYTM3NjRhMjYzMDU5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAt
MjE1LDYgKzIxNSw5IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uCiBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2lu
dEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoSlNDOjpFeGVjU3RhdGUqKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblN0cmljdEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01l
dGhvZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwogLy8gQXR0
cmlidXRlcwogCiBKU0M6OkpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlMb25nQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCmlu
ZGV4IDk1NjMzNTkxZTdmYjM3MGI4ZGRiNjBhYTc2NDUxMjdkZGQ3Y2IxMWIuLmQ5MDY2YjhhYTQ2
MmUyMjE4MDNhMjdiZGFjOTdmODg0ZDUzNWE2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKQEAgLTMxLDYgKzMx
LDcgQEAKIEBjbGFzcyBET01EaWN0aW9uYXJ5OwogQGNsYXNzIERPTURvY3VtZW50OwogQGNsYXNz
IERPTUlEQktleTsKK0BjbGFzcyBET01Ob2RlOwogQGNsYXNzIERPTVNWR0RvY3VtZW50OwogQGNs
YXNzIERPTVNWR1BvaW50OwogQGNsYXNzIERPTVRlc3RPYmo7CkBAIC0xNzMsNiArMTc0LDkgQEAg
ZW51bSB7CiAtIChET01TVkdQb2ludCAqKWltbXV0YWJsZVBvaW50RnVuY3Rpb247CiAtICh2b2lk
KW9yYW5nZTsKIC0gKERPTWJvb2wgKilzdHJpY3RGdW5jdGlvbjooTlNTdHJpbmcgKilzdHIgYToo
ZmxvYXQpYSBiOihpbnQpYjsKKy0gKHZvaWQpdmFyaWFkaWNTdHJpbmdNZXRob2Q6KE5TU3RyaW5n
ICopaGVhZCB0YWlsOihOU1N0cmluZyAqKXRhaWw7CistICh2b2lkKXZhcmlhZGljRG91YmxlTWV0
aG9kOihkb3VibGUpaGVhZCB0YWlsOihkb3VibGUpdGFpbDsKKy0gKHZvaWQpdmFyaWFkaWNOb2Rl
TWV0aG9kOihET01Ob2RlICopaGVhZCB0YWlsOihET01Ob2RlICopdGFpbDsKIEBlbmQKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5tbQppbmRleCAzZGQwZTdhZjBjYTY3OWM4MWE3NmZmYzYxZDQwYTNjYTZh
OTU3NjA5Li40ZmRjNjFhMDJhZTA5N2E4MThiOGZhODc4Y2FjZGI2YTRlYmRmNTBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2Jq
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPYmoubW0KQEAgLTU4LDYgKzU4LDcgQEAKICNpbXBvcnQgIklEQktleS5oIgogI2ltcG9ydCAi
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW1wb3J0ICJLVVJMLmgiCisjaW1wb3J0ICJOb2Rl
LmgiCiAjaW1wb3J0ICJPYmpDRXZlbnRMaXN0ZW5lci5oIgogI2ltcG9ydCAiU1ZHRG9jdW1lbnQu
aCIKICNpbXBvcnQgIlNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oIgpAQCAtMTA0Niw2ICsxMDQ3
LDI0IEBAIC0gKERPTWJvb2wgKilzdHJpY3RGdW5jdGlvbjooTlNTdHJpbmcgKilzdHIgYTooZmxv
YXQpYSBiOihpbnQpYgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy0gKHZvaWQpdmFyaWFkaWNT
dHJpbmdNZXRob2Q6KE5TU3RyaW5nICopaGVhZCB0YWlsOihOU1N0cmluZyAqKXRhaWwKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+dmFyaWFk
aWNTdHJpbmdNZXRob2QoaGVhZCwgdGFpbCk7Cit9CisKKy0gKHZvaWQpdmFyaWFkaWNEb3VibGVN
ZXRob2Q6KGRvdWJsZSloZWFkIHRhaWw6KGRvdWJsZSl0YWlsCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnZhcmlhZGljRG91YmxlTWV0aG9k
KGhlYWQsIHRhaWwpOworfQorCistICh2b2lkKXZhcmlhZGljTm9kZU1ldGhvZDooRE9NTm9kZSAq
KWhlYWQgdGFpbDooRE9NTm9kZSAqKXRhaWwKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+dmFyaWFkaWNOb2RlTWV0aG9kKGNvcmUoaGVhZCks
IGNvcmUodGFpbCkpOworfQorCiBAZW5kCiAKIFdlYkNvcmU6OlRlc3RPYmoqIGNvcmUoRE9NVGVz
dE9iaiAqd3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T2JqLmlkbAppbmRleCAzMmI0ZjE4MDE1YWNkODI1Zjg5MmIzYTRhYzE1Y2UyM2NkOGU3
YWRhLi43NDg0NWE3ZWRlMzBlNDFiMjNiYjdmMGMyYmE0NTEwNTg3NTY4YWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0yNjIs
NSArMjYyLDkgQEAgbW9kdWxlIHRlc3QgewogICAgICAgICBbUmVmbGVjdD1DT05TVF9JTVBMXSBj
b25zdCB1bnNpZ25lZCBzaG9ydCBDT05TVF9KQVZBU0NSSVBUID0gMTU7CiAKICAgICAgICAgYXR0
cmlidXRlIFtSZXBsYWNlYWJsZV0gbG9uZyByZXBsYWNlYWJsZUF0dHJpYnV0ZTsKKworICAgICAg
ICB2b2lkIHZhcmlhZGljU3RyaW5nTWV0aG9kKGluIERPTVN0cmluZyBoZWFkLCBpbiBET01TdHJp
bmcuLi4gdGFpbCk7CisgICAgICAgIHZvaWQgdmFyaWFkaWNEb3VibGVNZXRob2QoaW4gZG91Ymxl
IGhlYWQsIGluIGRvdWJsZS4uLiB0YWlsKTsKKyAgICAgICAgdm9pZCB2YXJpYWRpY05vZGVNZXRo
b2QoaW4gTm9kZSBoZWFkLCBpbiBOb2RlLi4uIHRhaWwpOwogICAgIH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmlu
ZGV4IDM4ZTZmMTM4ZTQ1NGZjMjIzZGVhNWIwODE0ZGQ4NDE4ZmUxNTk5MjAuLjY3MzNiMjYyNTg1
OGNmZGNhZmE0ZWExYTlmNWEwNjljNGMxYmMxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC00NSw2ICs0NSw3
IEBACiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgog
I2luY2x1ZGUgIlY4RmxvYXQzMkFycmF5LmgiCisjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVk
ZSAiVjhTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlY4U1ZHUG9pbnQuaCIKICNpbmNsdWRlICJW
OFNjcmlwdFByb2ZpbGUuaCIKQEAgLTE4OTAsNiArMTg5MSw0NyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHN0cmljdEZ1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7
CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFyaWFkaWNTdHJpbmdNZXRob2RD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9N
LlRlc3RPYmoudmFyaWFkaWNTdHJpbmdNZXRob2QiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8
IDEpCisgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQ
YXJhbWV0ZXI8PiwgaGVhZCwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFZlY3RvcjxTdHJpbmc+LCB0YWls
LCB0b05hdGl2ZUFyZ3VtZW50czxTdHJpbmc+KGFyZ3MsIDEpKTsKKyAgICBpbXAtPnZhcmlhZGlj
U3RyaW5nTWV0aG9kKGhlYWQsIHRhaWwpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworfQor
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhcmlhZGljRG91YmxlTWV0aG9kQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0
T2JqLnZhcmlhZGljRG91YmxlTWV0aG9kIik7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQor
ICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soZG91YmxlLCBoZWFkLCBzdGF0aWNfY2FzdDxkb3Vi
bGU+KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkt
Pk51bWJlclZhbHVlKCkpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soVmVjdG9yPGRvdWJsZT4sIHRh
aWwsIHRvTmF0aXZlQXJndW1lbnRzPGRvdWJsZT4oYXJncywgMSkpOworICAgIGltcC0+dmFyaWFk
aWNEb3VibGVNZXRob2QoaGVhZCwgdGFpbCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Cit9
CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFyaWFkaWNOb2RlTWV0aG9kQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0
T2JqLnZhcmlhZGljTm9kZU1ldGhvZCIpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRl
KCkpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKE5vZGUqLCBoZWFkLCBWOE5vZGU6Okhhc0luc3RhbmNl
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8g
VjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOworICAgIFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiB0YWlsOworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJncy5M
ZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmICghVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzW2ld
KSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgICAgIHRhaWwuYXBwZW5kKFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChhcmdzW2ldKSkpOworICAgIH0KKyAgICBpbXAtPnZhcmlhZGljTm9kZU1l
dGhvZChoZWFkLCB0YWlsKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgVGVzdE9ialY4SW50ZXJuYWwKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJh
dGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RPYmpBdHRyc1tdID0gewpAQCAtMjA3MSw2ICsy
MTEzLDggQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNr
IFY4VGVzdE9iakNhbGxiYWNrc1tdID0gewogICAgIHsiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIs
IFRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEZ1bmN0aW9uQ2FsbGJhY2t9LAogICAg
IHsib3JhbmdlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om9yYW5nZUNhbGxiYWNrfSwKICAgICB7InN0
cmljdEZ1bmN0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZ1bmN0aW9uQ2FsbGJhY2t9
LAorICAgIHsidmFyaWFkaWNTdHJpbmdNZXRob2QiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dmFyaWFk
aWNTdHJpbmdNZXRob2RDYWxsYmFja30sCisgICAgeyJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIsIFRl
c3RPYmpWOEludGVybmFsOjp2YXJpYWRpY0RvdWJsZU1ldGhvZENhbGxiYWNrfSwKIH07CiAKIHN0
YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDb25zdGFudCBWOFRlc3RPYmpD
b25zdHNbXSA9IHsKQEAgLTIyMjIsNiArMjI2NiwxMiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJz
aQogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ1QXJndltjb252
ZXJ0NUFyZ2NdID0geyBWOGU6OkdldFJhd1RlbXBsYXRlKCkgfTsKICAgICB2ODo6SGFuZGxlPHY4
OjpTaWduYXR1cmU+IGNvbnZlcnQ1U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2Ms
IGNvbnZlcnQ1QXJnYywgY29udmVydDVBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiY29udmVydDUiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2Jq
VjhJbnRlcm5hbDo6Y29udmVydDVDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDVTaWdu
YXR1cmUpKTsKKworICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3ZhcmlhZGljTm9kZU1ldGhvZCcK
KyAgICBjb25zdCBpbnQgdmFyaWFkaWNOb2RlTWV0aG9kQXJnYyA9IDI7CisgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdmFyaWFkaWNOb2RlTWV0aG9kQXJndlt2YXJpYWRpY05v
ZGVNZXRob2RBcmdjXSA9IHsgVjhOb2RlOjpHZXRSYXdUZW1wbGF0ZSgpLCBWOE5vZGU6OkdldFJh
d1RlbXBsYXRlKCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHZhcmlhZGljTm9k
ZU1ldGhvZFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCB2YXJpYWRpY05vZGVN
ZXRob2RBcmdjLCB2YXJpYWRpY05vZGVNZXRob2RBcmd2KTsKKyAgICBwcm90by0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgidmFyaWFkaWNOb2RlTWV0aG9kIiksIHY4OjpGdW5jdGlvblRlbXBs
YXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljTm9kZU1ldGhvZENhbGxiYWNrLCB2
OFVuZGVmaW5lZCgpLCB2YXJpYWRpY05vZGVNZXRob2RTaWduYXR1cmUpKTsKICAgICBWOERPTUNv
bmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKGRlc2MsIHByb3RvLCBWOFRlc3RP
YmpDb25zdHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0T2JqQ29uc3RzKSk7CiAKICAgICAvLyBD
dXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmgKaW5kZXggMGM5ZWU0ZjRjYTE4YTBjODBjNmUyYjM1YTI3NjcxODQ0NzBmMmViZi4uNTU2ZjY4
NjY0MjZkMjdkZTY2YzZkNzE4N2JhYzEzMjhlMWNhM2Q1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmgKQEAgLTE4MiwyOCArMTgyLDI5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIHRlbXBsYXRlPD4KICAgICBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8U3RyaW5n
PiB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGFycmF5TmF0aXZlVmFsdWUoY29uc3Qg
djg6OkxvY2FsPHY4OjpBcnJheT4mIGFycmF5LCBzaXplX3QgaSkKKyAgICAgICAgc3RhdGljIGlu
bGluZSBTdHJpbmcgbmF0aXZlVmFsdWUoY29uc3Qgdjg6OkhhbmRsZTx2ODo6VmFsdWU+JiB2YWx1
ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRvV2ViQ29yZVN0cmluZyhhcnJheS0+
R2V0KGkpKTsKKyAgICAgICAgICAgIHJldHVybiB0b1dlYkNvcmVTdHJpbmcodmFsdWUpOwogICAg
ICAgICB9CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4KICAgICBzdHJ1Y3QgTmF0aXZlVmFsdWVU
cmFpdHM8ZmxvYXQ+IHsKLSAgICAgICAgc3RhdGljIGlubGluZSBmbG9hdCBhcnJheU5hdGl2ZVZh
bHVlKGNvbnN0IHY4OjpMb2NhbDx2ODo6QXJyYXk+JiBhcnJheSwgc2l6ZV90IGkpCisgICAgICAg
IHN0YXRpYyBpbmxpbmUgZmxvYXQgbmF0aXZlVmFsdWUoY29uc3Qgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+JiB2YWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0PihhcnJheS0+R2V0KHY4SW50ZWdlcihpKSktPk51bWJlclZhbHVlKCkpOworICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZS0+TnVtYmVyVmFsdWUoKSk7CiAgICAg
ICAgIH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0cnVjdCBOYXRpdmVWYWx1ZVRy
YWl0czxkb3VibGU+IHsKLSAgICAgICAgc3RhdGljIGlubGluZSBkb3VibGUgYXJyYXlOYXRpdmVW
YWx1ZShjb25zdCB2ODo6TG9jYWw8djg6OkFycmF5PiYgYXJyYXksIHNpemVfdCBpKQorICAgICAg
ICBzdGF0aWMgaW5saW5lIGRvdWJsZSBuYXRpdmVWYWx1ZShjb25zdCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4mIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZG91YmxlPihhcnJheS0+R2V0KHY4SW50ZWdlcihpKSktPk51bWJlclZhbHVlKCkpOworICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUtPk51bWJlclZhbHVlKCkpOwog
ICAgICAgICB9CiAgICAgfTsKIAorCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CiAgICAgVmVjdG9y
PFQ+IHRvTmF0aXZlQXJyYXkodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogICAgIHsKQEAg
LTIxNSwxMiArMjE2LDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdjhWYWx1ZSh2ODo6TG9jYWw8djg6OlZhbHVlPjo6TmV3KHZhbHVlKSk7CiAg
ICAgICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46
OkNhc3QodjhWYWx1ZSk7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBhcnJheS0+TGVuZ3RoKCk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoVHJhaXRzVHlwZTo6YXJyYXlOYXRpdmVWYWx1ZShhcnJheSwgaSkp
OwotICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFRyYWl0c1R5cGU6Om5hdGl2ZVZhbHVlKGFycmF5
LT5HZXQoaSkpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVD4KKyAgICBWZWN0b3I8VD4gdG9OYXRpdmVBcmd1bWVudHMoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncywgc2l6ZV90IHN0YXJ0SW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQo
c3RhcnRJbmRleCA8PSBhcmdzLkxlbmd0aCgpKTsKKyAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsK
KyAgICAgICAgdHlwZWRlZiBOYXRpdmVWYWx1ZVRyYWl0czxUPiBUcmFpdHNUeXBlOworICAgICAg
ICBzaXplX3QgbGVuZ3RoID0gYXJncy5MZW5ndGgoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IHN0YXJ0SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
VHJhaXRzVHlwZTo6bmF0aXZlVmFsdWUoYXJnc1tpXSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAorCiAgICAgLy8gVmFsaWRhdGVzIHRoYXQgdGhlIHBhc3NlZCBvYmplY3QgaXMg
YSBzZXF1ZW5jZSB0eXBlIHBlciBXZWJJREwgc3BlYwogICAgIC8vIGh0dHA6Ly93d3cudzMub3Jn
L1RSLzIwMTIvV0QtV2ViSURMLTIwMTIwMjA3LyNlcy1zZXF1ZW5jZQogICAgIGlubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFNlcXVlbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSwgdWludDMyX3QmIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2xh
c3NMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2xhc3NMaXN0LmNwcAppbmRleCBhMzI1
YTEyMjZhYTlhNDViNDU1NGNiYjllZWU3MDI3Mjg4NGFkMGM3Li41ZmYzYmRhZjYwMmZjNDdmYjUz
MjZiYWQ5M2M3NjNhNmMyYjU1ZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Ns
YXNzTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DbGFzc0xpc3QuY3BwCkBAIC0y
NSwyMSArMjUsMTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDbGFzc0xpc3Qu
aCIKIAotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotCiBDbGFzc0xpc3Q6OkNsYXNzTGlzdChF
bGVtZW50KiBlbGVtZW50KQogICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCiB7CiAgICAgaWYgKG1f
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpCi0gICAgICAgIG1fY2xhc3NOYW1l
c0ZvclF1aXJrc01vZGUuc2V0KG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0ciksIGZh
bHNlKTsKKyAgICAgICAgbV9jbGFzc05hbWVzRm9yUXVpcmtzTW9kZS5zZXQodmFsdWUoKSwgZmFs
c2UpOwogfQogCiB2b2lkIENsYXNzTGlzdDo6cmVmKCkKQEAgLTY0LDcxICs2MCwxMSBAQCBjb25z
dCBBdG9taWNTdHJpbmcgQ2xhc3NMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAg
IHJldHVybiBjbGFzc05hbWVzKClbaW5kZXhdOwogfQogCi1ib29sIENsYXNzTGlzdDo6Y29udGFp
bnMoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17
Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBlYykpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gY29udGFpbnNJbnRlcm5hbCh0b2tlbik7Ci19Ci0KIGJvb2wgQ2xhc3NM
aXN0Ojpjb250YWluc0ludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4pIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fZWxlbWVudC0+aGFzQ2xhc3MoKSAmJiBjbGFzc05hbWVzKCkuY29udGFp
bnModG9rZW4pOwogfQogCi12b2lkIENsYXNzTGlzdDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYg
dG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tl
biwgZWMpKQotICAgICAgICByZXR1cm47Ci0gICAgYWRkSW50ZXJuYWwodG9rZW4pOwotfQotCi12
b2lkIENsYXNzTGlzdDo6YWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKLXsK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG9sZENsYXNzTmFtZShtX2VsZW1lbnQtPmdldEF0dHJp
YnV0ZShjbGFzc0F0dHIpKTsKLSAgICBpZiAob2xkQ2xhc3NOYW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCB0b2tlbik7Ci0gICAgZWxzZSBp
ZiAoIWNvbnRhaW5zSW50ZXJuYWwodG9rZW4pKSB7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmV3Q2xhc3NOYW1lKGFkZFRva2VuKG9sZENsYXNzTmFtZSwgdG9rZW4pKTsKLSAgICAgICAg
bV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBuZXdDbGFzc05hbWUpOwotICAgIH0K
LX0KLQotdm9pZCBDbGFzc0xpc3Q6OnJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBF
eGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIHJlbW92ZUludGVybmFsKHRva2VuKTsKLX0KLQotdm9pZCBD
bGFzc0xpc3Q6OnJlbW92ZUludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4pCi17Ci0g
ICAgLy8gQ2hlY2sgdXNpbmcgY29udGFpbnMgZmlyc3Qgc2luY2UgaXQgdXNlcyBBdG9taWNTdHJp
bmcgY29tcGFyaXNvbnMgaW5zdGVhZAotICAgIC8vIG9mIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIg
dGVzdGluZy4KLSAgICBpZiAoIWNvbnRhaW5zSW50ZXJuYWwodG9rZW4pKQotICAgICAgICByZXR1
cm47Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc05hbWUocmVtb3ZlVG9rZW4obV9l
bGVtZW50LT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSwgdG9rZW4pKTsKLSAgICBtX2VsZW1lbnQt
PnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIG5ld0NsYXNzTmFtZSk7Ci19Ci0KLWJvb2wgQ2xhc3NM
aXN0Ojp0b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMp
Ci17Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBlYykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmIChjb250YWluc0ludGVybmFsKHRva2VuKSkgewotICAgICAgICByZW1v
dmVJbnRlcm5hbCh0b2tlbik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgYWRk
SW50ZXJuYWwodG9rZW4pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgQ2xhc3NMaXN0
Ojp0b1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZWxlbWVudC0+Z2V0QXR0cmlidXRl
KGNsYXNzQXR0cik7Ci19Ci0KIHZvaWQgQ2xhc3NMaXN0OjpyZXNldChjb25zdCBTdHJpbmcmIG5l
d0NsYXNzTmFtZSkKIHsKICAgICBpZiAobV9lbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01v
ZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2xhc3NMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0NsYXNzTGlzdC5oCmluZGV4IDk5MmZhZDQ3NGM2M2Q3NWYxOGI5ZWVm
YjU2NDg2NjBmNmIzODEwZWQuLjc2NGViZjUyZTgxYWE5YzBiZjg1ZWFmYzRlMGM3NTdiZDZjZmU0
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2xhc3NMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9DbGFzc0xpc3QuaApAQCAtMjYsMTEgKzI2LDE3IEBACiAjZGVmaW5l
IENsYXNzTGlzdF9oCiAKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKKyNpbmNsdWRlICJFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
KwogY2xhc3MgRWxlbWVudDsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKQEAgLTQyLDMw
ICs0OCwyNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2xhc3NMaXN0
KGVsZW1lbnQpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmKCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRlcmVmKCk7CisgICAgdmlydHVhbCB2b2lkIHJlZigpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkZXJlZigpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBsZW5n
dGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyBpdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoY29uc3QgQXRvbWljU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhZGQoY29uc3Qg
QXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUo
Y29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgYm9vbCB0
b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwg
U3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyBpdGVtKHVuc2ln
bmVkIGluZGV4KSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVu
dCgpIHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgp
IE9WRVJSSURFIHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCiAgICAgdm9pZCByZXNldChjb25zdCBT
dHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBDbGFzc0xpc3QoRWxlbWVudCopOwogCi0gICAgdm9p
ZCBhZGRJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICBib29sIGNvbnRhaW5zSW50
ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCByZW1vdmVJbnRlcm5h
bChjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNJbnRlcm5h
bChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKIAogICAgIGNvbnN0IFNwYWNl
U3BsaXRTdHJpbmcmIGNsYXNzTmFtZXMoKSBjb25zdDsKIAorICAgIHZpcnR1YWwgQXRvbWljU3Ry
aW5nIHZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9lbGVtZW50LT5mYXN0R2V0QXR0
cmlidXRlKGNsYXNzQXR0cik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkgT1ZFUlJJREUgeyBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFz
c0F0dHIsIHZhbHVlKTsgfQorCiAgICAgRWxlbWVudCogbV9lbGVtZW50OwogICAgIFNwYWNlU3Bs
aXRTdHJpbmcgbV9jbGFzc05hbWVzRm9yUXVpcmtzTW9kZTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuY3BwCmluZGV4IDNhODZlOWMwMDAyNDQyOThkMjRh
ZGNjM2QxMDVjMWVkNDI0NzQ5ZjAuLjRlZjBmN2Y1MWE1MDAyODU4MmI4MDRkNTM3YTNhY2I5ZTI0
OTVlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuY3Bw
CkBAIC00NCw1NSArNDQsNDYgQEAgY29uc3QgQXRvbWljU3RyaW5nIERPTVNldHRhYmxlVG9rZW5M
aXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIHJldHVybiBtX3Rva2Vuc1tpbmRl
eF07CiB9CiAKLWJvb2wgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmNvbnRhaW5zKGNvbnN0IEF0b21p
Y1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorYm9vbCBET01TZXR0YWJs
ZVRva2VuTGlzdDo6Y29udGFpbnNJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKSBj
b25zdAogewotICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbiwgZWMpKQotICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1fdG9rZW5zLmNvbnRhaW5zKHRva2VuKTsKIH0KIAotdm9p
ZCBET01TZXR0YWJsZVRva2VuTGlzdDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6YWRkKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB0b2tlbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghdmFs
aWRhdGVUb2tlbih0b2tlbiwgZWMpIHx8IG1fdG9rZW5zLmNvbnRhaW5zKHRva2VuKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGFkZEludGVybmFsKHRva2VuKTsKKyAgICBET01Ub2tlbkxpc3Q6OmFk
ZCh0b2tlbnMsIGVjKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG9rZW5zLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGlmIChtX3Rva2Vucy5pc051bGwoKSkKKyAgICAgICAgICAgIG1f
dG9rZW5zLnNldCh0b2tlbnNbaV0sIGZhbHNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV90b2tlbnMuYWRkKHRva2Vuc1tpXSk7CisgICAgfQogfQogCiB2b2lkIERPTVNldHRhYmxlVG9r
ZW5MaXN0OjphZGRJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQogewotICAgIG1f
dmFsdWUgPSBhZGRUb2tlbihtX3ZhbHVlLCB0b2tlbik7CisgICAgRE9NVG9rZW5MaXN0OjphZGRJ
bnRlcm5hbCh0b2tlbik7CiAgICAgaWYgKG1fdG9rZW5zLmlzTnVsbCgpKQogICAgICAgICBtX3Rv
a2Vucy5zZXQodG9rZW4sIGZhbHNlKTsKICAgICBlbHNlCiAgICAgICAgIG1fdG9rZW5zLmFkZCh0
b2tlbik7CiB9CiAKLXZvaWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OnJlbW92ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHRva2VuLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRE9NU2V0dGFibGVUb2tl
bkxpc3Q6OnJlbW92ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSB8fCAhbV90b2tlbnMu
Y29udGFpbnModG9rZW4pKQotICAgICAgICByZXR1cm47Ci0gICAgcmVtb3ZlSW50ZXJuYWwodG9r
ZW4pOworICAgIERPTVRva2VuTGlzdDo6cmVtb3ZlKHRva2VucywgZWMpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdG9rZW5zLnNpemUoKTsgKytpKQorICAgICAgICBtX3Rva2Vucy5yZW1v
dmUodG9rZW5zW2ldKTsKIH0KIAogdm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6cmVtb3ZlSW50
ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKIHsKLSAgICBtX3ZhbHVlID0gcmVtb3Zl
VG9rZW4obV92YWx1ZSwgdG9rZW4pOworICAgIERPTVRva2VuTGlzdDo6cmVtb3ZlSW50ZXJuYWwo
dG9rZW4pOwogICAgIG1fdG9rZW5zLnJlbW92ZSh0b2tlbik7CiB9CiAKLWJvb2wgRE9NU2V0dGFi
bGVUb2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChtX3Rva2Vucy5jb250YWlucyh0b2tlbikpIHsKLSAgICAg
ICAgcmVtb3ZlSW50ZXJuYWwodG9rZW4pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIGFkZEludGVybmFsKHRva2VuKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBET01T
ZXR0YWJsZVRva2VuTGlzdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgRE9N
U2V0dGFibGVUb2tlbkxpc3Q6OnNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7
CiAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAgIG1fdG9rZW5zLnNldCh2YWx1ZSwgZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oCmluZGV4IDBiMjNjNmFi
MjI5ZmE2NTVjZTM4ODgxOTRkODllMzdjYmNlOTkzZTEuLmYzMzhkYzMyYmY2OWJjMTc0NzE0OGRl
NDY1MjQ1YWExNDFlMWIxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0
dGFibGVUb2tlbkxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9r
ZW5MaXN0LmgKQEAgLTQ0LDI4ICs0NCwyOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwg
fkRPTVNldHRhYmxlVG9rZW5MaXN0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgeyBSZWZD
b3VudGVkPERPTVNldHRhYmxlVG9rZW5MaXN0Pjo6cmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWYoKSB7IFJlZkNvdW50ZWQ8RE9NU2V0dGFibGVUb2tlbkxpc3Q+OjpkZXJlZigpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHJlZigpIE9WRVJSSURFIHsgUmVmQ291bnRlZDxET01TZXR0YWJsZVRv
a2VuTGlzdD46OnJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgT1ZFUlJJREUgeyBS
ZWZDb3VudGVkPERPTVNldHRhYmxlVG9rZW5MaXN0Pjo6ZGVyZWYoKTsgfQogCi0gICAgdmlydHVh
bCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3Rva2Vucy5zaXplKCk7IH0KLSAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgQXRvbWljU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgYm9vbCB0b2dnbGUoY29uc3QgQXRv
bWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90b2tlbnMuc2l6ZSgpOyB9CisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QgT1ZFUlJJREU7
CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRXhjZXB0aW9u
Q29kZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0
cmluZyB2YWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAKLSAgICBT
dHJpbmcgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgY29uc3QgU3BhY2VT
cGxpdFN0cmluZyYgdG9rZW5zKCkgY29uc3QgeyByZXR1cm4gbV90b2tlbnM7IH0KLSAgICB2b2lk
IHNldFZhbHVlKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIERPTVNldHRhYmxlVG9r
ZW5MaXN0KCk7CiAKLSAgICB2b2lkIHJlbW92ZUludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYp
OwotICAgIHZvaWQgYWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgdmlydHVh
bCB2b2lkIGFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBjb250YWluc0ludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbnRlcm5hbChjb25zdCBBdG9taWNTdHJp
bmcmKSBPVkVSUklERTsKIAotICAgIFN0cmluZyBtX3ZhbHVlOworICAgIEF0b21pY1N0cmluZyBt
X3ZhbHVlOwogICAgIFNwYWNlU3BsaXRTdHJpbmcgbV90b2tlbnM7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTVRva2VuTGlzdC5jcHAKaW5kZXggNzEzMmIxMTY5ZGQ5MzFmMmZmZDBhMWQ4NDMzM2Vj
ZTJmYmVhMTQyNC4uNTMzYjFmMTAzNjc5MjYxZmJiNDVhZWY2Zjk4ZTI0NGFjODU3YTZlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcApAQCAtNDksMjMgKzQ5LDEzOCBAQCBib29s
IERPTVRva2VuTGlzdDo6dmFsaWRhdGVUb2tlbihjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBET01Ub2tlbkxp
c3Q6OnZhbGlkYXRlVG9rZW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG9rZW5zLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbnNbaV0sIGVjKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBET01Ub2tlbkxpc3Q6OmNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAoreworICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbiwgZWMp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNvbnRhaW5zSW50ZXJuYWwodG9r
ZW4pOworfQorCit2b2lkIERPTVRva2VuTGlzdDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgdG9r
ZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHRva2VuczsKKyAg
ICB0b2tlbnMuYXBwZW5kKHRva2VuLnN0cmluZygpKTsKKyAgICBhZGQodG9rZW5zLCBlYyk7Cit9
CisKK3ZvaWQgRE9NVG9rZW5MaXN0OjphZGQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHRva2Vucywg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZmlsdGVyZWRUb2tlbnM7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2Vuc1tpXSwgZWMpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAoIWNvbnRhaW5zSW50ZXJuYWwodG9rZW5zW2ldKSkKKyAgICAgICAgICAg
IGZpbHRlcmVkVG9rZW5zLmFwcGVuZCh0b2tlbnNbaV0pOworICAgIH0KKworICAgIGlmIChmaWx0
ZXJlZFRva2Vucy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNldFZhbHVlKGFk
ZFRva2Vucyh2YWx1ZSgpLCBmaWx0ZXJlZFRva2VucykpOworfQorCit2b2lkIERPTVRva2VuTGlz
dDo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIFZlY3RvcjxTdHJpbmc+IHRva2VuczsKKyAgICB0b2tlbnMuYXBwZW5kKHRva2VuLnN0
cmluZygpKTsKKyAgICByZW1vdmUodG9rZW5zLCBlYyk7Cit9CisKK3ZvaWQgRE9NVG9rZW5MaXN0
OjpyZW1vdmUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHRva2VucywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKCF2YWxpZGF0ZVRva2Vucyh0b2tlbnMsIGVjKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gQ2hlY2sgdXNpbmcgY29udGFpbnNJbnRlcm5hbCBmaXJzdCBzaW5jZSBpdCBp
cyBhIGxvdCBmYXN0ZXIgdGhhbiBnb2luZworICAgIC8vIHRocm91Z2ggdGhlIHN0cmluZyBjaGFy
YWN0ZXIgYnkgY2hhcmFjdGVyLgorICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHRva2Vucy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoY29udGFp
bnNJbnRlcm5hbCh0b2tlbnNbaV0pKSB7CisgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChmb3VuZCkKKyAgICAg
ICAgc2V0VmFsdWUocmVtb3ZlVG9rZW5zKHZhbHVlKCksIHRva2VucykpOworfQorCitib29sIERP
TVRva2VuTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbiwgZWMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoY29udGFpbnNJbnRlcm5hbCh0b2tlbikpIHsKKyAgICAg
ICAgcmVtb3ZlSW50ZXJuYWwodG9rZW4pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIGFkZEludGVybmFsKHRva2VuKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBET01U
b2tlbkxpc3Q6OmFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4pCit7CisgICAg
aWYgKCFjb250YWluc0ludGVybmFsKHRva2VuKSkKKyAgICAgICAgc2V0VmFsdWUoYWRkVG9rZW4o
dmFsdWUoKSwgdG9rZW4pKTsKK30KKwordm9pZCBET01Ub2tlbkxpc3Q6OnJlbW92ZUludGVybmFs
KGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4pCit7CisgICAgLy8gQ2hlY2sgdXNpbmcgY29udGFp
bnMgZmlyc3Qgc2luY2UgaXQgdXNlcyBBdG9taWNTdHJpbmcgY29tcGFyaXNvbnMgaW5zdGVhZAor
ICAgIC8vIG9mIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIgdGVzdGluZy4KKyAgICBpZiAoIWNvbnRh
aW5zSW50ZXJuYWwodG9rZW4pKQorICAgICAgICByZXR1cm47CisgICAgc2V0VmFsdWUocmVtb3Zl
VG9rZW4odmFsdWUoKSwgdG9rZW4pKTsKK30KKwogU3RyaW5nIERPTVRva2VuTGlzdDo6YWRkVG9r
ZW4oY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikK
IHsKLSAgICBpZiAoaW5wdXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdG9rZW47CisgICAg
VmVjdG9yPFN0cmluZz4gdG9rZW5zOworICAgIHRva2Vucy5hcHBlbmQodG9rZW4uc3RyaW5nKCkp
OworICAgIHJldHVybiBhZGRUb2tlbnMoaW5wdXQsIHRva2Vucyk7Cit9CisKK1N0cmluZyBET01U
b2tlbkxpc3Q6OmFkZFRva2Vucyhjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0LCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdG9rZW5zKQoreworICAgIGJvb2wgbmVlZHNTcGFjZSA9IGZhbHNlOwogCiAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKGlucHV0KTsKLSAg
ICBpZiAoIWlzSFRNTFNwYWNlKGlucHV0W2lucHV0Lmxlbmd0aCgpIC0gMV0pKQotICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOworICAgIGlmICghaW5wdXQuaXNFbXB0eSgpKSB7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGlucHV0KTsKKyAgICAgICAgbmVlZHNTcGFjZSA9ICFpc0hUTUxTcGFj
ZShpbnB1dFtpbnB1dC5sZW5ndGgoKSAtIDFdKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHRva2Vucy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobmVlZHNTcGFjZSkK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KHRva2Vuc1tpXSk7CisgICAgICAgIG5lZWRzU3BhY2UgPSB0cnVlOworICAgIH0KIAotICAgIGJ1
aWxkZXIuYXBwZW5kKHRva2VuKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQog
CiBTdHJpbmcgRE9NVG9rZW5MaXN0OjpyZW1vdmVUb2tlbihjb25zdCBBdG9taWNTdHJpbmcmIGlu
cHV0LCBjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQogeworICAgIFZlY3RvcjxTdHJpbmc+IHRv
a2VuczsKKyAgICB0b2tlbnMuYXBwZW5kKHRva2VuLnN0cmluZygpKTsKKyAgICByZXR1cm4gcmVt
b3ZlVG9rZW5zKGlucHV0LCB0b2tlbnMpOworfQorCitTdHJpbmcgRE9NVG9rZW5MaXN0OjpyZW1v
dmVUb2tlbnMoY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHRva2VucykKK3sKICAgICAvLyBBbGdvcml0aG0gZGVmaW5lZCBhdCBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9jb21tb24tbWljcm9z
eW50YXhlcy5odG1sI3JlbW92ZS1hLXRva2VuLWZyb20tYS1zdHJpbmcKKyAgICAvLyBOZXcgc3Bl
YyBpcyBhdCBodHRwOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jcmVtb3ZlLWEtdG9rZW4tZnJvbS1h
LXN0cmluZwogCiAgICAgdW5zaWduZWQgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKICAg
ICBTdHJpbmdCdWlsZGVyIG91dHB1dDsgLy8gMwpAQCAtODUsNyArMjAwLDcgQEAgU3RyaW5nIERP
TVRva2VuTGlzdDo6cmVtb3ZlVG9rZW4oY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dCwgY29uc3Qg
QXRvbWljU3RyaW5nJgogICAgICAgICAgICAgcy5hcHBlbmQoaW5wdXRbcG9zaXRpb24rK10pOwog
CiAgICAgICAgIC8vIFN0ZXAgOAotICAgICAgICBpZiAocy50b1N0cmluZ1ByZXNlcnZlQ2FwYWNp
dHkoKSA9PSB0b2tlbikgeworICAgICAgICBpZiAodG9rZW5zLmNvbnRhaW5zKHMudG9TdHJpbmdQ
cmVzZXJ2ZUNhcGFjaXR5KCkpKSB7CiAgICAgICAgICAgICAvLyBTdGVwIDguMQogICAgICAgICAg
ICAgd2hpbGUgKHBvc2l0aW9uIDwgaW5wdXRMZW5ndGggJiYgaXNIVE1MU3BhY2UoaW5wdXRbcG9z
aXRpb25dKSkKICAgICAgICAgICAgICAgICArK3Bvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9r
ZW5MaXN0LmgKaW5kZXggZmQxMTBiN2ZmZDA0ZjYwOWMyMDMzZWQzMmEzYjIxNjk4OGFkZDMzMS4u
NGIyNWRjZTVlM2M4OTcyNGZhNTUzYjBiNzE0NjdlNTFhNTYzMmE5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVRva2VuTGlzdC5oCkBAIC00NSwxOCArNDUsMzIgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBj
b250YWlucyhjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHRvZ2dsZShjb25zdCBBdG9taWNTdHJp
bmcmLCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkg
Y29uc3QgPSAwOworCisgICAgYm9vbCBjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkZChjb25zdCBBdG9taWNTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlbW92ZShjb25zdCBBdG9taWNT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCB0b2dnbGUoY29uc3QgQXRvbWljU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgQXRvbWljU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gdmFsdWUoKTsgfQogCiAgICAgdmlydHVhbCBFbGVtZW50KiBlbGVtZW50KCkg
eyByZXR1cm4gMDsgfQogCiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgdmFs
dWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0
cmluZyYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRJbnRlcm5hbChjb25zdCBBdG9taWNT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNJbnRlcm5hbChjb25zdCBBdG9taWNT
dHJpbmcmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUludGVybmFsKGNvbnN0
IEF0b21pY1N0cmluZyYpOworCiAgICAgc3RhdGljIGJvb2wgdmFsaWRhdGVUb2tlbihjb25zdCBB
dG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIGJvb2wgdmFsaWRhdGVU
b2tlbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBFeGNlcHRpb25Db2RlJik7CiAgICAgc3RhdGlj
IFN0cmluZyBhZGRUb2tlbihjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBBdG9taWNTdHJpbmcm
KTsKKyAgICBzdGF0aWMgU3RyaW5nIGFkZFRva2Vucyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHN0YXRpYyBTdHJpbmcgcmVtb3ZlVG9rZW4oY29uc3Qg
QXRvbWljU3RyaW5nJiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGljIFN0cmluZyBy
ZW1vdmVUb2tlbnMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVG9rZW5MaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0
LmlkbAppbmRleCBjZjU3ZTFhZWVmOTZlMjk2NzUwMGVlMTdlNTBmNDJmZDA4OWM2NzJiLi44NWVm
MTA5MmM3MWExMTkzMmFkMGU3YTU2Y2E0M2E1NTVhYmQwOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01Ub2tlbkxpc3QuaWRsCkBAIC0zMSw4ICszMSw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgICAgICBbVHJlYXRS
ZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSBET01TdHJpbmcgaXRlbShpbiB1bnNpZ25lZCBsb25n
IGluZGV4KTsKICAgICAgICAgYm9vbGVhbiBjb250YWlucyhpbiBET01TdHJpbmcgdG9rZW4pIHJh
aXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICB2b2lkIGFkZChpbiBET01TdHJpbmcgdG9rZW4p
IHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICB2b2lkIHJlbW92ZShpbiBET01TdHJpbmcg
dG9rZW4pIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIGFkZChpbiBET01TdHJp
bmcuLi4gdG9rZW5zKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCByZW1vdmUo
aW4gRE9NU3RyaW5nLi4uIHRva2VucykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIGJv
b2xlYW4gdG9nZ2xlKGluIERPTVN0cmluZyB0b2tlbikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAK
ICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YTRlNDI4MDYwMjQxMTlmZmE0YzI2MjcyYzM4ODI1NDIzOGJmZTIyLi5lZDVmZGZk
ZWQ4M2FiMDFkYmEwMDI2NTBhNGFhYmQxYTRiMGQ3NzQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTItMDktMjYgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBET000OiBBZGQgc3VwcG9ydCBmb3IgcmVzdCBwYXJhbWV0ZXJzIHRvIERPTVRva2VuTGlzdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMg
c3VwcG9ydCBmb3IgcmVzdCBwYXJhbWF0ZXJzIHRvIERPTVRva2VuTGlzdCBhZGQgYW5kIHJlbW92
ZS4KKyAgICAgICAgaHR0cDovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbXRva2VubGlzdAorCisg
ICAgICAgIFRoZSBjb2RlIGdlbmVyYXRvciBoYXMgYmVlbiB1cGRhdGVkIHRvIHVuZGVyc3RhbmQg
dmFyaWFkaWMgbWV0aG9kcy4KKyAgICAgICAgV2hlbiBhIG1ldGhvZCBoYXMgYSByZXN0IHBhcmFt
ZXRlciB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgY29sbGVjdGVkCisgICAgICAgIGludG8g
YSBXVEY6OlZlY3Rvci4KKworICAgICAgICBET01Ub2tlbkxpc3QsIERPTVNldHRhYmxlVG9rZW5M
aXN0IGFuZCBDbGFzc0xpc3Qgd2VyZSByZXN0cnVjdHVyZWQgYSBiaXQgdG8KKyAgICAgICAgYWxs
b3cgY29kZSB0byBiZSBzaGFyZWQgYmV0dGVyLgorCisgICAgICAgICogZmFzdC9kb20vSFRNTEVs
ZW1lbnQvY2xhc3MtbGlzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTEVs
ZW1lbnQvY2xhc3MtbGlzdC1xdWlya3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxFbGVtZW50L3NjcmlwdC10ZXN0cy9jbGFzcy1saXN0LmpzOgorICAgICAgICAoZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKToKKyAgICAgICAgKGNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKToKKyAgICAgICAgKGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSk6
CisKIDIwMTItMDktMjcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBbUXRdIGZhc3QvcHJvZmlsZXIvYXBwbHkuaHRtbCBmYWlscyB3aXRoIExMSW50IG9u
IDMyIGJpdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvY2xh
c3MtbGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9j
bGFzcy1saXN0LWV4cGVjdGVkLnR4dAppbmRleCA3MTY0ZDRiZjhiYjIyNzk0NjI0ODM5MTM5MDIz
YzE2MjljMGM4Y2I3Li5lNDFkZDg4YWViMGU2NjI1MGQ3NTQ3ZTg0OWU2MGM2NjNiMTIwMWNhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1saXN0LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9jbGFzcy1s
aXN0LWV4cGVjdGVkLnR4dApAQCAtMzEsMTAgKzMxLDggQEAgUEFTUyBlbGVtZW50LmNsYXNzTGlz
dC5jb250YWlucygnJykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgog
UEFTUyBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygneCB5JykgdGhyZXcgZXhwZWN0ZWQgRE9N
RXhjZXB0aW9uIHdpdGggY29kZSA1CiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnJykgdGhy
ZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgogUEFTUyBlbGVtZW50LmNsYXNz
TGlzdC5hZGQoJ3ggeScpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQot
UEFTUyBlbGVtZW50LmNsYXNzTGlzdC5hZGQoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBO
b3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCcnKSB0
aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEyCiBQQVNTIGVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZSgneCB5JykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29k
ZSA1Ci1QQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyBlbGVtZW50LmNsYXNzTGlzdC50b2dn
bGUoJycpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKIFBBU1MgZWxl
bWVudC5jbGFzc0xpc3QudG9nZ2xlKCd4IHknKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24g
d2l0aCBjb2RlIDUKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCkBAIC03NCw2ICs3MiwyNiBAQCBQ
QVNTIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnN0cnVjdG9yIGlzIERPTVRva2VuTGlzdAogUEFTUyBl
bGVtZW50LmNsYXNzTGlzdCA9PT0gZWxlbWVudC5jbGFzc0xpc3QgaXMgdHJ1ZQogUEFTUyBkb2N1
bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygiRkFJTCIpIGlzIHRydWUKIFBBU1MgZG9jdW1l
bnQuYm9keS5jbGFzc05hbWUgaXMgIiIKK1ZhcmlhZGljIGNhbGxzCitQQVNTIGVsZW1lbnQuY2xh
c3NOYW1lIGlzICJhIGIiCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIgYyIKK1BBU1Mg
ZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiBjIG51bGwgZCB1bmRlZmluZWQgMCBmYWxzZSIKK1BB
U1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImEgYiBhIgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5h
ZGQoJ2EnLCAnYicsICcnKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDEy
CitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICIiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgnYScsICdiJywgJ2MgZCcpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUg
NQorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiIgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5h
ZGQoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgb2JzZXJ2ZXIudGFrZVJlY29yZHMo
KS5sZW5ndGggaXMgMQorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYiBkICAiCitQQVNTIGVs
ZW1lbnQuY2xhc3NOYW1lIGlzICJkICAiCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIg
YyIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhJywgJ2InLCAnJykgdGhyZXcgZXhw
ZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBp
cyAiYSBiIgorUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2EnLCAnYicsICdjIGQnKSB0
aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2RlIDUKK1BBU1MgZWxlbWVudC5jbGFz
c05hbWUgaXMgImEgYiIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCkgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCitQQVNTIG9ic2VydmVyLnRha2VSZWNvcmRzKCkubGVuZ3RoIGlzIDEK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvY2xhc3MtbGlzdC1xdWlya3Mt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvY2xhc3MtbGlz
dC1xdWlya3MtZXhwZWN0ZWQudHh0CmluZGV4IDcxNjRkNGJmOGJiMjI3OTQ2MjQ4MzkxMzkwMjNj
MTYyOWMwYzhjYjcuLmU0MWRkODhhZWIwZTY2MjUwZDc1NDdlODQ5ZTYwYzY2M2IxMjAxY2EgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2NsYXNzLWxpc3QtcXVp
cmtzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9j
bGFzcy1saXN0LXF1aXJrcy1leHBlY3RlZC50eHQKQEAgLTMxLDEwICszMSw4IEBAIFBBU1MgZWxl
bWVudC5jbGFzc0xpc3QuY29udGFpbnMoJycpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3
aXRoIGNvZGUgMTIKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3ggeScpIHRocmV3
IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgNQogUEFTUyBlbGVtZW50LmNsYXNzTGlz
dC5hZGQoJycpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKIFBBU1Mg
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCd4IHknKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24g
d2l0aCBjb2RlIDUKLVBBU1MgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgnJykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSAxMgogUEFT
UyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3ggeScpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2Vw
dGlvbiB3aXRoIGNvZGUgNQotUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1MgZWxlbWVudC5j
bGFzc0xpc3QudG9nZ2xlKCcnKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRpb24gd2l0aCBjb2Rl
IDEyCiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgneCB5JykgdGhyZXcgZXhwZWN0ZWQg
RE9NRXhjZXB0aW9uIHdpdGggY29kZSA1CiBQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgpAQCAtNzQs
NiArNzIsMjYgQEAgUEFTUyBlbGVtZW50LmNsYXNzTGlzdC5jb25zdHJ1Y3RvciBpcyBET01Ub2tl
bkxpc3QKIFBBU1MgZWxlbWVudC5jbGFzc0xpc3QgPT09IGVsZW1lbnQuY2xhc3NMaXN0IGlzIHRy
dWUKIFBBU1MgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoIkZBSUwiKSBpcyB0cnVl
CiBQQVNTIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lIGlzICIiCitWYXJpYWRpYyBjYWxscworUEFT
UyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiYSBiIgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAi
YSBiIGMiCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIgYyBudWxsIGQgdW5kZWZpbmVk
IDAgZmFsc2UiCitQQVNTIGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIgYSIKK1BBU1MgZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCdhJywgJ2InLCAnJykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9u
IHdpdGggY29kZSAxMgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiIgorUEFTUyBlbGVtZW50
LmNsYXNzTGlzdC5hZGQoJ2EnLCAnYicsICdjIGQnKSB0aHJldyBleHBlY3RlZCBET01FeGNlcHRp
b24gd2l0aCBjb2RlIDUKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgIiIKK1BBU1MgZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG9ic2VydmVy
LnRha2VSZWNvcmRzKCkubGVuZ3RoIGlzIDEKK1BBU1MgZWxlbWVudC5jbGFzc05hbWUgaXMgImIg
ZCAgIgorUEFTUyBlbGVtZW50LmNsYXNzTmFtZSBpcyAiZCAgIgorUEFTUyBlbGVtZW50LmNsYXNz
TmFtZSBpcyAiYSBiIGMiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnYScsICdiJywg
JycpIHRocmV3IGV4cGVjdGVkIERPTUV4Y2VwdGlvbiB3aXRoIGNvZGUgMTIKK1BBU1MgZWxlbWVu
dC5jbGFzc05hbWUgaXMgImEgYiIKK1BBU1MgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhJywg
J2InLCAnYyBkJykgdGhyZXcgZXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHdpdGggY29kZSA1CitQQVNT
IGVsZW1lbnQuY2xhc3NOYW1lIGlzICJhIGIiCitQQVNTIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZSgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBvYnNlcnZlci50YWtlUmVjb3Jkcygp
Lmxlbmd0aCBpcyAxCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L3Njcmlw
dC10ZXN0cy9jbGFzcy1saXN0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQv
c2NyaXB0LXRlc3RzL2NsYXNzLWxpc3QuanMKaW5kZXggMzIxOTBiYjdhNTI3M2U5ODZiNmRjNzc4
YTc2MjE1NGMyOWFlNzdjYS4uNGVmMmE1YzZlNTUxNzI1Mjg3YzYzZTBmYzMyNzMyNGQxZDVkZmMw
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvc2NyaXB0LXRl
c3RzL2NsYXNzLWxpc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQv
c2NyaXB0LXRlc3RzL2NsYXNzLWxpc3QuanMKQEAgLTE1NCw5ICsxNTQsNiBAQCBzaG91bGRUaHJv
d0RPTUV4Y2VwdGlvbihmdW5jdGlvbigpIHsKIH0sIERPTUV4Y2VwdGlvbi5JTlZBTElEX0NIQVJB
Q1RFUl9FUlIpOwogCiBjcmVhdGVFbGVtZW50KCcnKTsKLXNob3VsZFRocm93KCJlbGVtZW50LmNs
YXNzTGlzdC5hZGQoKSIpOwotCi1jcmVhdGVFbGVtZW50KCcnKTsKIHNob3VsZFRocm93RE9NRXhj
ZXB0aW9uKGZ1bmN0aW9uKCkgewogICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnJyk7CiB9
LCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7CkBAIC0xNjYsOCArMTYzLDcgQEAgc2hvdWxkVGhy
b3dET01FeGNlcHRpb24oZnVuY3Rpb24oKSB7CiAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KCd4IHknKTsKIH0sIERPTUV4Y2VwdGlvbi5JTlZBTElEX0NIQVJBQ1RFUl9FUlIpOwogCi1jcmVh
dGVFbGVtZW50KCcnKTsKLXNob3VsZFRocm93KCJlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoKSIp
OworCiAKIGNyZWF0ZUVsZW1lbnQoJycpOwogc2hvdWxkVGhyb3dET01FeGNlcHRpb24oZnVuY3Rp
b24oKSB7CkBAIC0yNjUsMyArMjYxLDcyIEBAIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgn
RkFJTCcpOwogc2hvdWxkQmVUcnVlKCdkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygi
RkFJTCIpJyk7CiBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ0ZBSUwnKTsKIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuYm9keS5jbGFzc05hbWUnLCAnJyk7CisKKy8vIFZh
cmlhZGljCisKK2RlYnVnKCdWYXJpYWRpYyBjYWxscycpOworCitjcmVhdGVFbGVtZW50KCcnKTsK
K2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYScsICdiJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2VsZW1lbnQuY2xhc3NOYW1lJywgJ2EgYicpOworCitlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2En
LCAnYicsICdjJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VsZW1lbnQuY2xhc3NOYW1lJywg
J2EgYiBjJyk7CisKK2VsZW1lbnQuY2xhc3NMaXN0LmFkZChudWxsLCB7dG9TdHJpbmc6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gJ2QnIH19LCB1bmRlZmluZWQsIDAsIGZhbHNlKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygnZWxlbWVudC5jbGFzc05hbWUnLCAnYSBiIGMgbnVsbCBkIHVuZGVmaW5lZCAw
IGZhbHNlJyk7CisKK2NyZWF0ZUVsZW1lbnQoJycpOworZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdh
JywgJ2InLCAnYScpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVtZW50LmNsYXNzTmFtZScs
ICdhIGIgYScpOworCitjcmVhdGVFbGVtZW50KCcnKTsKK3Nob3VsZFRocm93RE9NRXhjZXB0aW9u
KGZ1bmN0aW9uKCkgeworICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYScsICdiJywgJycpOwor
fSwgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdlbGVt
ZW50LmNsYXNzTmFtZScsICcnKTsKKworc2hvdWxkVGhyb3dET01FeGNlcHRpb24oZnVuY3Rpb24o
KSB7CisgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhJywgJ2InLCAnYyBkJyk7Cit9LCBET01F
eGNlcHRpb24uSU5WQUxJRF9DSEFSQUNURVJfRVJSKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygn
ZWxlbWVudC5jbGFzc05hbWUnLCAnJyk7CisKK2NyZWF0ZUVsZW1lbnQoJycpOworc2hvdWxkTm90
VGhyb3coJ2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgpJyk7CisKK2NyZWF0ZUVsZW1lbnQoJycpOwor
dmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSk7
CitvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CitlbGVtZW50
LmNsYXNzTGlzdC5hZGQoJ2EnLCAnYycpOworc2hvdWxkQmUoJ29ic2VydmVyLnRha2VSZWNvcmRz
KCkubGVuZ3RoJywgJzEnKTsKKworCitjcmVhdGVFbGVtZW50KCdhIGIgYyBkICAnKTsKK2VsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgnYScsICdjJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Vs
ZW1lbnQuY2xhc3NOYW1lJywgJ2IgZCAgJyk7CisKK2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgn
YicsICdiJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VsZW1lbnQuY2xhc3NOYW1lJywgJ2Qg
ICcpOworCitjcmVhdGVFbGVtZW50KCdhIGIgYyBudWxsIGQgdW5kZWZpbmVkIDAgZmFsc2UnKTsK
K2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShudWxsLCB7dG9TdHJpbmc6IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gJ2QnIH19LCB1bmRlZmluZWQsIDAsIGZhbHNlKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZWxlbWVudC5jbGFzc05hbWUnLCAnYSBiIGMnKTsKKworY3JlYXRlRWxlbWVudCgnYSBiJyk7
CitzaG91bGRUaHJvd0RPTUV4Y2VwdGlvbihmdW5jdGlvbigpIHsKKyAgICBlbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoJ2EnLCAnYicsICcnKTsKK30sIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZWxlbWVudC5jbGFzc05hbWUnLCAnYSBiJyk7CisKK3No
b3VsZFRocm93RE9NRXhjZXB0aW9uKGZ1bmN0aW9uKCkgeworICAgIGVsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZSgnYScsICdiJywgJ2MgZCcpOworfSwgRE9NRXhjZXB0aW9uLklOVkFMSURfQ0hBUkFD
VEVSX0VSUik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2VsZW1lbnQuY2xhc3NOYW1lJywgJ2Eg
YicpOworCitzaG91bGROb3RUaHJvdygnZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCknKTsKKwor
Y3JlYXRlRWxlbWVudCgnYSBiIGMnKTsKK29ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIoZnVuY3Rpb24oKSB7fSk7CitvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQsIHthdHRyaWJ1
dGVzOiB0cnVlfSk7CitlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2EnLCAnYycpOworc2hvdWxk
QmUoJ29ic2VydmVyLnRha2VSZWNvcmRzKCkubGVuZ3RoJywgJzEnKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>