<?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>73162</bug_id>
          
          <creation_ts>2011-11-26 13:57:42 -0800</creation_ts>
          <short_desc>Implement [Supplemental] IDL and support it in run-bindings-tests</short_desc>
          <delta_ts>2012-01-09 18:56:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72138</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>dominicc</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>509390</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-26 13:57:42 -0800</bug_when>
    <thetext>- Implement the [Supplemental] IDL in resolve-supplemental.pl and generate-bindings.pl.
- Support the [Supplemental] IDL in run-bindings-tests.
- Add TestSupplemental.idl as a bindings-test and confirm if it works.

After this patch is landed, I will support the [Supplemental] IDL in real build scripts for all platforms (e.g. WebCore.gyp, UseJSC.make, ...).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509392</commentid>
    <comment_count>1</comment_count>
      <attachid>116665</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-26 14:39:03 -0800</bug_when>
    <thetext>Created attachment 116665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509393</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-26 14:40:28 -0800</bug_when>
    <thetext>Attachment 116665 did not pass style-queue:

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

Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:127:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.cpp:31:  wtf includes should be &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509395</commentid>
    <comment_count>3</comment_count>
      <attachid>116665</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-26 15:35:55 -0800</bug_when>
    <thetext>Comment on attachment 116665
Patch

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

&gt; Source/WebCore/bindings/scripts/generate-bindings.pl:108
&gt; +        exit 0;

Should we print a message in this case so someone looking at the build output can understand what happened?

&gt; Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp:50
&gt; +    return v8String(imp-&gt;str1());

I would have expected this line of code to be:

return v8String(TestSupplemental::str1(imp));

The idea being that in C++ we want to define the str1 function as a static member function of TestSupplemental rather than as a member function of TestInterface.  That way we don&apos;t need to mention str1 in the header or implementation file for TestInterface, only in TestSupplemental.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509399</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-26 19:01:15 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 116665 [details])
&gt; &gt; Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp:50
&gt; &gt; +    return v8String(imp-&gt;str1());
&gt; 
&gt; I would have expected this line of code to be:
&gt; 
&gt; return v8String(TestSupplemental::str1(imp));
&gt; 
&gt; The idea being that in C++ we want to define the str1 function as a static member function of TestSupplemental rather than as a member function of TestInterface.  That way we don&apos;t need to mention str1 in the header or implementation file for TestInterface, only in TestSupplemental.

Adam: Ah I got it, but let me confirm the reason just in case.

I first tried to do so (as you described above and as we discussed before) but I didn&apos;t, because I found that my current approach might be simpler. In my current approach, attributes in the TestSupplemental interface are treated as if they were described in the TestInterface interface, resulting in no header and no implementation for TestSupplemental. The advantage of this approach is that it requires no change in CodeGenerator{JS,V8,...}.pm. It just requires a change in generate-bindings.pl, since we just need to manipulate the contents of IDL files in generate-bindings.pl before CodeGenerator runs.

Is the reason why &quot;we don&apos;t need to mention str1 in the header or implementation file for TestInterface, only in TestSupplemental&quot; that str1 might be declared also in TestInterface? In other words, is the reason a name conflict?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509400</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-26 19:29:14 -0800</bug_when>
    <thetext>Consider the case of Navigator.webkitGamepads:

http://trac.webkit.org/browser/trunk/Source/WebCore/page/Navigator.idl#L66

We would like to implement the Gamepad feature without modifying any code outside of WebCore/Modules/gamepad.  With your patch, we would need to mention the word &quot;gamepad&quot; in Navigator.h because we&apos;re generating code that calls the webkitGamepads member function of Navigator.

In the approach in Comment #3, we call webkitGamepads as a static function of a class in the WebCore/Modules/gamepad directory.  That lets us not mention the word &quot;gamepad&quot; in WebCore/page/Navigator.h.

By moving the code for these features out of the &quot;core&quot; classes, we make it easier to implement new features because the new features are better contained within their modules and there&apos;s less overall complexity in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509401</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-26 19:30:20 -0800</bug_when>
    <thetext>My guess is you&apos;ll want to add an attribute to these nodes when you move them onto the main interface that indicates which supplemental interface they came from so that when we call back into WebCore proper, we&apos;ll know which class to call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509402</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-26 19:46:49 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Consider the case of Navigator.webkitGamepads:
&gt; 
&gt; http://trac.webkit.org/browser/trunk/Source/WebCore/page/Navigator.idl#L66
&gt; 
&gt; We would like to implement the Gamepad feature without modifying any code outside of WebCore/Modules/gamepad.  With your patch, we would need to mention the word &quot;gamepad&quot; in Navigator.h because we&apos;re generating code that calls the webkitGamepads member function of Navigator.
&gt; 
&gt; In the approach in Comment #3, we call webkitGamepads as a static function of a class in the WebCore/Modules/gamepad directory.  That lets us not mention the word &quot;gamepad&quot; in WebCore/page/Navigator.h.
&gt; 
&gt; By moving the code for these features out of the &quot;core&quot; classes, we make it easier to implement new features because the new features are better contained within their modules and there&apos;s less overall complexity in WebCore.

Makes sense! Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509579</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-27 23:02:23 -0800</bug_when>
    <thetext>Adam: Now I am implementing a WIP patch to confirm that &quot;the Gamepad feature without modifying any code outside of WebCore/Modules/gamepad&quot; works.

(In reply to comment #6)
&gt; My guess is you&apos;ll want to add an attribute to these nodes when you move them onto the main interface that indicates which supplemental interface they came from so that when we call back into WebCore proper, we&apos;ll know which class to call.

Your idea is something like this?

/* DOMWindowGamePad.idl */
interface [
    Conditional=GAMEPAD,
    Supplemental=DOMWindow
] DOMWindowGamePad {
    attribute [ImplementedBy=GamePad] DOMString supplementedAttr;  /* The getter and setter for supplementedAttr are redirected to class GamePad. */
}

Alternatively, how about allowing the [Supplemental] IDL to each attribute like this?

/* GamePad.idl */
interface [
    Conditional=GAMEPAD
] Gamepad {
    readonly attribute DOMString id; /* A regular attribute of GamePad */
    readonly attribute unsigned long index; /* Ditto */
    readonly attribute unsigned long long timestamp; /* Ditto */
    readonly attribute float[] axes; /* Ditto */
    readonly attribute float[] buttons; /* Ditto */
    attribute [Supplemental=DOMWindow] DOMString supplementedAttr; /* The getter and setter for supplementedAttr are redirected to this class, i.e. class GamePad. */
};

I don&apos;t know if this approach is acceptable or not because it is a bit far from the [Supplemental] spec of the Web IDL. The advantages of this approach are 

- that the [ImplementedBy] IDL is not necessary
- and that we do not need to prepare another IDL file just for describing [Supplemental] IDLs, i.e. we do not need to write the DOMWindowGamePad interface, which itself has no meaning.

WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509592</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-27 23:20:26 -0800</bug_when>
    <thetext>&gt; Adam: Now I am implementing a WIP patch to confirm that &quot;the Gamepad feature without modifying any code outside of WebCore/Modules/gamepad&quot; works.

You&apos;re going to run into a problem because Gamepad requires some storage on Navigator, but that&apos;s something we can address after we get Supplemental working.

&gt; &gt; My guess is you&apos;ll want to add an attribute to these nodes when you move them onto the main interface that indicates which supplemental interface they came from so that when we call back into WebCore proper, we&apos;ll know which class to call.
&gt; 
&gt; Your idea is something like this?

Yes, but with one small difference.

&gt; /* DOMWindowGamePad.idl */
&gt; interface [
&gt;     Conditional=GAMEPAD,
&gt;     Supplemental=DOMWindow
&gt; ] DOMWindowGamePad {
&gt;     attribute [ImplementedBy=GamePad] DOMString supplementedAttr;  /* The getter and setter for supplementedAttr are redirected to class GamePad. */
&gt; }

We don&apos;t need the ImplementedBy attribute explicitly in the IDL file.  We can add it implicitly when we merge the supplemental attributes into the main interface.  Specifically, we can imply ImplementedBy=DOMWindowGamePad, where we get the class name from the name of the interface with the supplemental attribute.

&gt; Alternatively, how about allowing the [Supplemental] IDL to each attribute like this?

I&apos;d prefer the first approach because it&apos;s the most similar to the WebIDL in the specifications.

&gt; - that the [ImplementedBy] IDL is not necessary

We don&apos;t need the ImplementedBy attribute explicitly in the IDL file.  I think it&apos;s ok to generate it internally in the Perl.

&gt; - and that we do not need to prepare another IDL file just for describing [Supplemental] IDLs, i.e. we do not need to write the DOMWindowGamePad interface, which itself has no meaning.

Yeah, this is one downside of this approach.  Let&apos;s look at the spec:

http://dvcs.w3.org/hg/webevents/raw-file/tip/gamepad.html#navigator-interface-extension

partial interface Navigator {
    readonly attribute Gamepad[] gamepads;
};

Maybe we could write something like:

partial interface [
    Conditional=GAMEPAD,
    ImplementedBy=Gamepad
] Navigator {
    readonly attribute Gamepad[] gamepads;
};</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509609</commentid>
    <comment_count>10</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-27 23:45:27 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Adam: Now I am implementing a WIP patch to confirm that &quot;the Gamepad feature without modifying any code outside of WebCore/Modules/gamepad&quot; works.
&gt; 
&gt; You&apos;re going to run into a problem because Gamepad requires some storage on Navigator, but that&apos;s something we can address after we get Supplemental working.

OK. Then I&apos;ll do it later. (although, if possible, I want to confirm that my change on Perl scripts works with real IDL files before committing the change, since I cannot see if it really works or not just by watching the run-bindings-tests results:-)
 
&gt; &gt; &gt; My guess is you&apos;ll want to add an attribute to these nodes when you move them onto the main interface that indicates which supplemental interface they came from so that when we call back into WebCore proper, we&apos;ll know which class to call.
&gt; &gt; 
&gt; &gt; Your idea is something like this?
&gt; 
&gt; Yes, but with one small difference.
&gt; 
&gt; &gt; /* DOMWindowGamePad.idl */
&gt; &gt; interface [
&gt; &gt;     Conditional=GAMEPAD,
&gt; &gt;     Supplemental=DOMWindow
&gt; &gt; ] DOMWindowGamePad {
&gt; &gt;     attribute [ImplementedBy=GamePad] DOMString supplementedAttr;  /* The getter and setter for supplementedAttr are redirected to class GamePad. */
&gt; &gt; }
&gt; 
&gt; We don&apos;t need the ImplementedBy attribute explicitly in the IDL file.  We can add it implicitly when we merge the supplemental attributes into the main interface.  Specifically, we can imply ImplementedBy=DOMWindowGamePad, where we get the class name from the name of the interface with the supplemental attribute.

Yes, but my original concern was that in most cases we might want to implement supplementedAttr not in DOMWindowGamePad.cpp but in GamePad.cpp. (If we implement it in DOMWindowGamePad.cpp, we need to newly prepare DOMWindowGamePad.cpp.) It is possible to implicitly assume the class name from the interface name but it might not be so happy in most cases. If we want to implement it in GamePad.cpp, we need to explicitly write [ImplementedBy=GamePad] anyway. Rather than writing [ImplementedBy=GamePad] many times, I thought that the second approach would be better.

&gt; &gt; Alternatively, how about allowing the [Supplemental] IDL to each attribute like this?
&gt; 
&gt; I&apos;d prefer the first approach because it&apos;s the most similar to the WebIDL in the specifications.

OK. Following the spec is more important. Let&apos;s take the first approach anyway.

&gt; Let&apos;s look at the spec:
&gt; 
&gt; http://dvcs.w3.org/hg/webevents/raw-file/tip/gamepad.html#navigator-interface-extension
&gt; 
&gt; partial interface Navigator {
&gt;     readonly attribute Gamepad[] gamepads;
&gt; };
&gt; 
&gt; Maybe we could write something like:
&gt; 
&gt; partial interface [
&gt;     Conditional=GAMEPAD,
&gt;     ImplementedBy=Gamepad
&gt; ] Navigator {
&gt;     readonly attribute Gamepad[] gamepads;
&gt; };

?? Where did [Supplemental] go away?

partial interface [
    Conditional=GAMEPAD,
    Supplemental=Navigator
] DOMWindowGamePad {
    readonly attribute Gamepad[] gamepads;
};

or if we want to implement gamepads not in DOMWindowGamePad.cpp but in GamePad.cpp, we can explicitly write 

partial interface [
    Conditional=GAMEPAD,
    Supplemental=Navigator
] DOMWindowGamePad {
    readonly attribute [ImplementedBy=GamePad] Gamepad[] gamepads;
};

Am I wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509613</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-27 23:52:03 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; &gt; Adam: Now I am implementing a WIP patch to confirm that &quot;the Gamepad feature without modifying any code outside of WebCore/Modules/gamepad&quot; works.
&gt; &gt; 
&gt; &gt; You&apos;re going to run into a problem because Gamepad requires some storage on Navigator, but that&apos;s something we can address after we get Supplemental working.
&gt; 
&gt; OK. Then I&apos;ll do it later. (although, if possible, I want to confirm that my change on Perl scripts works with real IDL files before committing the change, since I cannot see if it really works or not just by watching the run-bindings-tests results:-)

We can move the function, and it&apos;s implementation.  We can just move the storage in a later patch.  WebAudio might be a better case to start with because it does not require any storage.

&gt; Yes, but my original concern was that in most cases we might want to implement supplementedAttr not in DOMWindowGamePad.cpp but in GamePad.cpp. (If we implement it in DOMWindowGamePad.cpp, we need to newly prepare DOMWindowGamePad.cpp.) It is possible to implicitly assume the class name from the interface name but it might not be so happy in most cases. If we want to implement it in GamePad.cpp, we need to explicitly write [ImplementedBy=GamePad] anyway. Rather than writing [ImplementedBy=GamePad] many times, I thought that the second approach would be better.

I think it&apos;s ok to create a DOMWindowGamepad.cpp file for the Gamepad extensions to DOMWindow.  That will make the implementation easy to find if we follow that naming convention.

&gt; ?? Where did [Supplemental] go away?

It became the &quot;partial&quot; keyword before interface.  IMHO, we should just use the Supplemental attribute.  We can change the syntax later if we want.

&gt; or if we want to implement gamepads not in DOMWindowGamePad.cpp but in GamePad.cpp, we can explicitly write 

Either way is fine.  I have a slight preference for DOMWindowGamepad.cpp because that makes it clearer what&apos;s going on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509614</commentid>
    <comment_count>12</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-27 23:56:43 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #9)
&gt; I think it&apos;s ok to create a DOMWindowGamepad.cpp file for the Gamepad extensions to DOMWindow.  That will make the implementation easy to find if we follow that naming convention.

Makes sense.

&gt; &gt; ?? Where did [Supplemental] go away?
&gt; 
&gt; It became the &quot;partial&quot; keyword before interface.  IMHO, we should just use the Supplemental attribute.  We can change the syntax later if we want.
&gt; 
&gt; &gt; or if we want to implement gamepads not in DOMWindowGamePad.cpp but in GamePad.cpp, we can explicitly write 
&gt; 
&gt; Either way is fine.  I have a slight preference for DOMWindowGamepad.cpp because that makes it clearer what&apos;s going on.

I got it. In conclusion, for the time being, I will use [ImplementedBy] IDL only inside Perl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509751</commentid>
    <comment_count>13</comment_count>
      <attachid>116738</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-28 04:56:46 -0800</bug_when>
    <thetext>Created attachment 116738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509752</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 04:58:53 -0800</bug_when>
    <thetext>Attachment 116738 did not pass style-queue:

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

Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:146:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:166:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.cpp:31:  wtf includes should be &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]
Total errors found: 3 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509895</commentid>
    <comment_count>15</comment_count>
      <attachid>116738</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 09:48:53 -0800</bug_when>
    <thetext>Comment on attachment 116738
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:575
&gt;      if ($conditional =~ /&amp;/) {
&gt; -        return &quot;ENABLE(&quot; . join(&quot;) &amp;&amp; ENABLE(&quot;, split(/&amp;/, $conditional)) . &quot;)&quot;;
&gt; +        # Avoid duplicated conditions.
&gt; +        my %conditions;
&gt; +        map { $conditions{$_} = 1 } split(/&amp;/, $conditional);
&gt; +        return &quot;ENABLE(&quot; . join(&quot;) &amp;&amp; ENABLE(&quot;, sort keys %conditions) . &quot;)&quot;;
&gt;      } elsif ($conditional =~ /\|/) {
&gt; -        return &quot;ENABLE(&quot; . join(&quot;) || ENABLE(&quot;, split(/\|/, $conditional)) . &quot;)&quot;;
&gt; +        # Avoid duplicated conditions.
&gt; +        my %conditions;
&gt; +        map { $conditions{$_} = 1 } split(/\|/, $conditional);
&gt; +        return &quot;ENABLE(&quot; . join(&quot;) || ENABLE(&quot;, sort keys %conditions) . &quot;)&quot;;

This feels copy-pasted.  Should we break this out into a helper function?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1654
&gt; +                        push(@implContent, &quot;    return ${implementedBy}::$implGetterFunctionName(castedThis, exec);\n&quot;);

This doesn&apos;t seem quite right.  $implementedBy will be a WebCore-proper class, which means it shouldn&apos;t receive an ExecState.  Perhaps we should write &quot;JS${implementedBy}::$implGetterFunctionName(&quot; ?  (We can also make Custom and ImplementedBy an error to use together for now.)

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1948
&gt;                  }

Looks like you&apos;re only handling getters and setters.  It seems like we should handle normal member functions as well.  We can do that in this patch or the next patch, whichever you prefer.

&gt; Source/WebCore/bindings/scripts/generate-bindings.pl:141
&gt; +                    # Record that this attribute is implemented by $interfaceName.
&gt; +                    $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;} = $interfaceName;

Should we move this outside the inner loop?  It seems like we&apos;ll end up make this assignment many times redundantly.

&gt; Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.mm:76
&gt; +    WebCore::JSMainThreadNullState state;
&gt; +    return IMPL-&gt;str1();

This won&apos;t compile, right?  We might need to modify the other code generators as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510450</commentid>
    <comment_count>16</comment_count>
      <attachid>116880</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-28 20:47:53 -0800</bug_when>
    <thetext>Created attachment 116880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510451</commentid>
    <comment_count>17</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-28 20:49:06 -0800</bug_when>
    <thetext>Thanks for reviewing the big patch.

(In reply to comment #15)
&gt; (From update of attachment 116738 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116738&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:575
&gt; &gt;      if ($conditional =~ /&amp;/) {
&gt; &gt; -        return &quot;ENABLE(&quot; . join(&quot;) &amp;&amp; ENABLE(&quot;, split(/&amp;/, $conditional)) . &quot;)&quot;;
&gt; &gt; +        # Avoid duplicated conditions.
&gt; &gt; +        my %conditions;
&gt; &gt; +        map { $conditions{$_} = 1 } split(/&amp;/, $conditional);
&gt; &gt; +        return &quot;ENABLE(&quot; . join(&quot;) &amp;&amp; ENABLE(&quot;, sort keys %conditions) . &quot;)&quot;;
&gt; &gt;      } elsif ($conditional =~ /\|/) {
&gt; &gt; -        return &quot;ENABLE(&quot; . join(&quot;) || ENABLE(&quot;, split(/\|/, $conditional)) . &quot;)&quot;;
&gt; &gt; +        # Avoid duplicated conditions.
&gt; &gt; +        my %conditions;
&gt; &gt; +        map { $conditions{$_} = 1 } split(/\|/, $conditional);
&gt; &gt; +        return &quot;ENABLE(&quot; . join(&quot;) || ENABLE(&quot;, sort keys %conditions) . &quot;)&quot;;
&gt; 
&gt; This feels copy-pasted.  Should we break this out into a helper function?

Fixed it.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1654
&gt; &gt; +                        push(@implContent, &quot;    return ${implementedBy}::$implGetterFunctionName(castedThis, exec);\n&quot;);
&gt; 
&gt; This doesn&apos;t seem quite right.  $implementedBy will be a WebCore-proper class, which means it shouldn&apos;t receive an ExecState.  Perhaps we should write &quot;JS${implementedBy}::$implGetterFunctionName(&quot; ?  (We can also make Custom and ImplementedBy an error to use together for now.)

Fixed it.
 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1948
&gt; &gt;                  }
&gt; 
&gt; Looks like you&apos;re only handling getters and setters.  It seems like we should handle normal member functions as well.  We can do that in this patch or the next patch, whichever you prefer.

Yeah, then I&apos;d like to (1) support only getters and setters in this patch, (2) use the [Supplemental] IDL in webaudio and confirm that all platforms work (though webaudio does not require even getters and setters), (3) support normal member functions.

&gt; &gt; Source/WebCore/bindings/scripts/generate-bindings.pl:141
&gt; &gt; +                    # Record that this attribute is implemented by $interfaceName.
&gt; &gt; +                    $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;} = $interfaceName;
&gt; 
&gt; Should we move this outside the inner loop?  It seems like we&apos;ll end up make this assignment many times redundantly.

Done.
 
&gt; &gt; Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.mm:76
&gt; &gt; +    WebCore::JSMainThreadNullState state;
&gt; &gt; +    return IMPL-&gt;str1();
&gt; 
&gt; This won&apos;t compile, right?  We might need to modify the other code generators as well.

You&apos;re right. I modified CodeGenerator{GObject,CPP,ObjC}.pm as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510452</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 20:50:00 -0800</bug_when>
    <thetext>Attachment 116880 did not pass style-queue:

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

Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:147:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:167:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.cpp:32:  wtf includes should be &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]
Total errors found: 3 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510807</commentid>
    <comment_count>19</comment_count>
      <attachid>116880</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-29 08:49:29 -0800</bug_when>
    <thetext>Comment on attachment 116880
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1653
&gt; +                        $implIncludes{&quot;${implementedBy}.h&quot;} = 1;

Do we need to include the header for JS${implementedBy} ?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1842
&gt; +                                $implIncludes{&quot;${implementedBy}.h&quot;} = 1;

Same question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511204</commentid>
    <comment_count>20</comment_count>
      <attachid>117072</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-29 16:36:05 -0800</bug_when>
    <thetext>Created attachment 117072
rebased patch for commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511209</commentid>
    <comment_count>21</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-29 16:38:52 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 116880 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116880&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1653
&gt; &gt; +                        $implIncludes{&quot;${implementedBy}.h&quot;} = 1;
&gt; 
&gt; Do we need to include the header for JS${implementedBy} ?
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1842
&gt; &gt; +                                $implIncludes{&quot;${implementedBy}.h&quot;} = 1;
&gt; 
&gt; Same question.

Fixed it.

After confirming that mac build succeeds (I guess that the mac build error we observed is not related our patch), I&apos;ll commit it manually to avoid style check errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511211</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-29 16:40:08 -0800</bug_when>
    <thetext>Attachment 117072 did not pass style-queue:

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

Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:147:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:167:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.cpp:32:  wtf includes should be &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]
Total errors found: 3 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511275</commentid>
    <comment_count>23</comment_count>
      <attachid>117090</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-29 18:15:08 -0800</bug_when>
    <thetext>Created attachment 117090
to see if mac build passes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511276</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-29 18:17:55 -0800</bug_when>
    <thetext>Attachment 117090 did not pass style-queue:

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

Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:147:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:167:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.cpp:32:  wtf includes should be &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]
Total errors found: 3 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511302</commentid>
    <comment_count>25</comment_count>
      <attachid>117098</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-29 18:55:26 -0800</bug_when>
    <thetext>Created attachment 117098
Test: Ignore this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511315</commentid>
    <comment_count>26</comment_count>
      <attachid>117101</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-29 19:42:39 -0800</bug_when>
    <thetext>Created attachment 117101
rebased patch for commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511318</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-29 19:50:03 -0800</bug_when>
    <thetext>Attachment 117101 did not pass style-queue:

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

Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:147:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:167:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.cpp:32:  wtf includes should be &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]
Total errors found: 3 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511339</commentid>
    <comment_count>28</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-29 20:36:10 -0800</bug_when>
    <thetext>Committed r101445: &lt;http://trac.webkit.org/changeset/101445&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511342</commentid>
    <comment_count>29</comment_count>
      <attachid>117101</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-29 20:43:20 -0800</bug_when>
    <thetext>Comment on attachment 117101
rebased patch for commit

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm:1352
&gt; +                $getterContent = $getterContentHead . ($getterContentHead =~ /\($|, $/ ? &quot;ec&quot; : &quot;, ec&quot;) . $getterContentTail;

By the way, building an argument string in this way is dirty and error-prone. Instead, we should prepare a list @args, push all arguments into @args, and finally build an argument string by join(&quot;, &quot;, @args).

As far as I see, this refactoring is not so trivial across many places in all CodeGenerators. I&apos;ll do it when I have time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511943</commentid>
    <comment_count>30</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-11-30 11:29:34 -0800</bug_when>
    <thetext>This broke bindings generation tests:
http://build.webkit.org/builders/SnowLeopard%20Intel%20Debug%20%28Tests%29/builds/3265/steps/bindings-generation-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512696</commentid>
    <comment_count>31</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-12-01 05:00:31 -0800</bug_when>
    <thetext>Reopen because it broke run-bindings-tests on all bot: SL, GTK, Qt.
It strange for me that it fails on the Qt bot, but pass for me locally.

Could you fix it as soon as possible or roll out this patch?
I don&apos;t think if we should leave all bots red because of this ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512952</commentid>
    <comment_count>32</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-01 11:45:38 -0800</bug_when>
    <thetext>I believe this was fixed in Bug 73558.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116665</attachid>
            <date>2011-11-26 14:39:03 -0800</date>
            <delta_ts>2011-11-28 04:56:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73162-20111127073902.patch</filename>
            <type>text/plain</type>
            <size>34624</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZkNTZiYTkyMjUwMjFh
NGU4MDRhMzBiNzgxZDgwMDZlY2FjZjk1OC4uNDZhN2E5ZGE0NmVjMDNmMjJmZjMwYjJiNGYzZjY3
YTVhMTJkNTBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDExLTExLTI2ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgW1N1
cHBsZW1lbnRhbF0gSURMIGFuZCBzdXBwb3J0IGl0IGluIHJ1bi1iaW5kaW5ncy10ZXN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxNjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIE92ZXJ2aWV3Ogor
ICAgICAgICAgICAgLSBJbXBsZW1lbnQgdGhlIFtTdXBwbGVtZW50YWxdIElETCBpbiByZXNvbHZl
LXN1cHBsZW1lbnRhbC5wbCBhbmQgZ2VuZXJhdGUtYmluZGluZ3MucGwuCisgICAgICAgICAgICAt
IFN1cHBvcnQgdGhlIFtTdXBwbGVtZW50YWxdIElETCBpbiBydW4tYmluZGluZ3MtdGVzdHMuCisg
ICAgICAgICAgICAtIEFkZCBUZXN0U3VwcGxlbWVudGFsLmlkbCBhcyBhIGJpbmRpbmdzLXRlc3Qg
YW5kIGNvbmZpcm0gdGhhdCBpdCB3b3Jrcy4KKworICAgICAgICAtIFRoZSBzcGVjIGZvciB0aGUg
W1N1cHBsZW1lbnRhbF0gSURMOiBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3dlYmFwaS9XZWJJREwv
I2Rmbi1zdXBwbGVtZW50YWwtaW50ZXJmYWNlCisKKyAgICAgICAgLSBUaGlzIHBhdGNoIGFmZmVj
dHMgcnVuLWJpbmRpbmdzLXRlc3RzIHJlc3VsdHMgb25seSBhbmQgZG9lcyBub3QgYWZmZWN0IGFu
eSByZWFsIGJ1aWxkcworICAgICAgICBzaW5jZSBubyBbU3VwcGxlbWVudGFsXSBJREwgaGFzIHdy
aXR0ZW4gaW4gcmVhbCBXZWJDb3JlIElETCBmaWxlcyBmb3Igbm93LgorCisgICAgICAgIC0gQWRk
ZWQgcGVybCBzY3JpcHRzIGltcGxlbWVudCB0aGUgW1N1cHBsZW1lbnRhbF0gSURMIGFzIGZvbGxv
d3M6CisKKyAgICAgICAgICAgIFByZXZpb3VzIGJ1aWxkIGZsb3c6CisgICAgICAgICAgICAgICAg
Zm9yZWFjaCAkaWRsIChhbGwgSURMIGZpbGVzKSB7CisgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRlLWJpbmRpbmdzLnBsIGRlcGVuZHMgb24gJGlkbDsKKyAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwgcmVhZHMgJGlkbDsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dGUtYmluZGluZ3MucGwgZ2VuZXJhdGVzIC5oIGFuZCAuY3BwIGZpbGVzIGZvciAkaWRsOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTmV3IGJ1aWxkIGZsb3cgKFNlZSB0aGUgZGlz
Y3Vzc2lvbnMgaW4gYnVnIDcyMTM4IGZvciBtb3JlIGRldGFpbHMpOgorICAgICAgICAgICAgICAg
IHJlc29sdmUtc3VwcGxlbWVudGFsLnBsIGRlcGVuZHMgb24gYWxsIElETCBmaWxlczsKKyAgICAg
ICAgICAgICAgICByZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCByZWFkcyBhbGwgSURMIGZpbGVzOwor
ICAgICAgICAgICAgICAgIHJlc29sdmUtc3VwcGxlbWVudGFsLnBsIHJlc29sdmVzIHRoZSBkZXBl
bmRlbmN5IG9mIFtTdXBwbGVtZW50YWw9WFhYWF07CisgICAgICAgICAgICAgICAgcmVzb2x2ZS1z
dXBwbGVtZW50YWwucGwgb3V0cHV0cyBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXA7CisgICAg
ICAgICAgICAgICAgZm9yZWFjaCAkaWRsIChhbGwgSURMIGZpbGVzKSB7CisgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGRlcGVuZHMgb24gJGlkbCBhbmQgc3VwcGxlbWVu
dGFsX2RlcGVuZGVuY3kudG1wOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZS1iaW5kaW5n
cy5wbCByZWFkcyAkaWRsOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5w
bCByZWFkcyBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXA7CisgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyAuaCBhbmQgLmNwcCBmaWxlcyBmb3IgJGlk
bCwgaW5jbHVkaW5nIGFsbCBhdHRyaWJ1dGVzIGluIElETCBmaWxlcyB3aGljaCBhcmUgc3VwcGxl
bWVudGluZyAkaWRsOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICBUZXN0czogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Jlc29sdmUtc3VwcGxlbWVudGFsLnBsOiBBZGRlZC4gVGhpcyBwZXJsIHNjcmlw
dCByZWFkcyBhbGwgSURMIGZpbGVzLCByZXNvbHZlcyBbU3VwcGxlbWVudGFsPVhYWF0gZGVwZW5k
ZW5jaWVzLCBhbmQgdGhlbiBvdXRwdXRzIHRoZSBkZXBlbmRlbmN5IGZpbGUuIFNlZSB0aGUgY29t
bWVudCBpbiByZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCBmb3IgdGhlIGZvcm1hdCBvZiB0aGUgZGVw
ZW5kZW5jeSBmaWxlLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGlu
Z3MucGw6IFRoZSBpbnB1dCBpcyBhbiBJREwgZmlsZSB8eHwgYW5kIHRoZSBkZXBlbmRlbmN5IGZp
bGUuIFRoaXMgcGVybCBzY3JpcHQgZ2VuZXJhdGVzIC5oIGFuZCAuY3BwIGZpbGVzIGZvciB0aGUg
SURMIGZpbGUgfHh8LCBpbmNsdWRpbmcgYWxsIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBJREwgZmls
ZXMgd2hpY2ggYXJlIHN1cHBsZW1lbnRpbmcgdGhlIElETCBmaWxlIHx4fC4KKworICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFsLmlkbDogQWRkZWQuIEEgdGVz
dCBjYXNlIGZvciB0aGUgW1N1cHBsZW1lbnRhbF0gSURMLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHA6IFVwZGF0ZWQgYSBydW4tYmlu
ZGluZ3MtdGVzdHMgcmVzdWx0LgorICAgICAgICAoV2ViRE9NVGVzdEludGVyZmFjZTo6c3RyMSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNl
Lmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RJbnRlcmZhY2UuY3BwOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9p
bnRlcmZhY2VfZ2V0X3N0cjEpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9n
ZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9jbGFzc19p
bml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0SW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdElu
dGVyZmFjZVN0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3RyMik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOiBEaXR0
by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNl
Lmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJ
bnRlcmZhY2UubW06IERpdHRvLgorICAgICAgICAoLVtET01UZXN0SW50ZXJmYWNlIHN0cjFdKToK
KyAgICAgICAgKC1bRE9NVGVzdEludGVyZmFjZSBzdHIyXSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdEludGVyZmFjZUludGVybmFsOjpzdHIxQXR0ckdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOiBEaXR0by4KKwogMjAxMS0x
MS0yNiAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBG
aXggY29tcGlsYXRpb24gYWZ0ZXIgcjEwMTE1Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCmluZGV4IDU3YTM5MjgzYzNkOGU1
MTI3Yjg0NTIxZTdhODNhYjc5Y2EzMzI5ZGEuLmIwYTI5OGE1NzM1YWQ4ZjkzYzlhNDllMWYxNjBh
MzY1Njg2NWEyOWMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Z2VuZXJhdGUtYmluZGluZ3MucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbApAQCAtMzEsNiArMzEsNyBAQAogdXNlIHN0cmljdDsKIAog
dXNlIEZpbGU6OlBhdGg7Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgR2V0b3B0OjpMb25nOwog
dXNlIEN3ZDsKIApAQCAtNDcsNiArNDgsNyBAQCBteSAkcHJlZml4OwogbXkgJHByZXByb2Nlc3Nv
cjsKIG15ICR3cml0ZURlcGVuZGVuY2llczsKIG15ICR2ZXJib3NlOworbXkgJHN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlOwogCiBHZXRPcHRpb25zKCdpbmNsdWRlPXNAJyA9PiBcQGlkbERpcmVj
dG9yaWVzLAogICAgICAgICAgICAnb3V0cHV0RGlyPXMnID0+IFwkb3V0cHV0RGlyZWN0b3J5LApA
QCAtNTcsMTEgKzU5LDEyIEBAIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+IFxAaWRsRGlyZWN0
b3JpZXMsCiAgICAgICAgICAgICdwcmVmaXg9cycgPT4gXCRwcmVmaXgsCiAgICAgICAgICAgICdw
cmVwcm9jZXNzb3I9cycgPT4gXCRwcmVwcm9jZXNzb3IsCiAgICAgICAgICAgICd2ZXJib3NlJyA9
PiBcJHZlcmJvc2UsCi0gICAgICAgICAgICd3cml0ZS1kZXBlbmRlbmNpZXMnID0+IFwkd3JpdGVE
ZXBlbmRlbmNpZXMpOworICAgICAgICAgICAnd3JpdGUtZGVwZW5kZW5jaWVzJyA9PiBcJHdyaXRl
RGVwZW5kZW5jaWVzLAorICAgICAgICAgICAnc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGU9cycg
PT4gXCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSk7CiAKLW15ICRpZGxGaWxlID0gJEFSR1Zb
MF07CitteSAkdGFyZ2V0SWRsRmlsZSA9ICRBUkdWWzBdOwogCi1kaWUoJ011c3Qgc3BlY2lmeSBp
bnB1dCBmaWxlLicpIHVubGVzcyBkZWZpbmVkKCRpZGxGaWxlKTsKK2RpZSgnTXVzdCBzcGVjaWZ5
IGlucHV0IGZpbGUuJykgdW5sZXNzIGRlZmluZWQoJHRhcmdldElkbEZpbGUpOwogZGllKCdNdXN0
IHNwZWNpZnkgZ2VuZXJhdG9yJykgdW5sZXNzIGRlZmluZWQoJGdlbmVyYXRvcik7CiBkaWUoJ011
c3Qgc3BlY2lmeSBvdXRwdXQgZGlyZWN0b3J5LicpIHVubGVzcyBkZWZpbmVkKCRvdXRwdXREaXJl
Y3RvcnkpOwogZGllKCdNdXN0IHNwZWNpZnkgZGVmaW5lcycpIHVubGVzcyBkZWZpbmVkKCRkZWZp
bmVzKTsKQEAgLTY5LDE1ICs3Miw3NiBAQCBkaWUoJ011c3Qgc3BlY2lmeSBkZWZpbmVzJykgdW5s
ZXNzIGRlZmluZWQoJGRlZmluZXMpOwogaWYgKCEkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSkgewog
ICAgICRvdXRwdXRIZWFkZXJzRGlyZWN0b3J5ID0gJG91dHB1dERpcmVjdG9yeTsKIH0KKyRkZWZp
bmVzID1+IHMvXlxzK3xccyskLy9nOyAjIHRyaW0gd2hpdGVzcGFjZQorJHRhcmdldElkbEZpbGUg
PSBDd2Q6OnJlYWxwYXRoKCR0YXJnZXRJZGxGaWxlKTsKIGlmICgkdmVyYm9zZSkgewotICAgIHBy
aW50ICIkZ2VuZXJhdG9yOiAkaWRsRmlsZVxuIjsKKyAgICBwcmludCAiJGdlbmVyYXRvcjogJHRh
cmdldElkbEZpbGVcbiI7Cit9CitteSAkdGFyZ2V0SW50ZXJmYWNlTmFtZSA9IGZpbGVwYXJzZShi
YXNlbmFtZSgkdGFyZ2V0SWRsRmlsZSksICIuaWRsIik7CisKK215IEBzdXBwbGVtZW50ZWRJZGxG
aWxlczsKK2lmICgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpIHsKKyAgICAjIFRoZSBmb3Jt
YXQgb2YgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBmaWxlOgorICAgICMKKyAgICAjIERPTVdp
bmRvdy5pZGwgUC5pZGwgUS5pZGwgUi5pZGwKKyAgICAjIERvY3VtZW50LmlkbCBTLmlkbAorICAg
ICMgRXZlbnQuaWRsCisgICAgIyAuLi4KKyAgICAjCisgICAgIyBUaGUgYWJvdmUgaW5kaWNhdGVz
IHRoYXQgRE9NV2luZG93LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgUC5pZGwsIFEuaWRsIGFuZCBS
LmlkbCwKKyAgICAjIERvY3VtZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgUy5pZGwsIGFuZCBF
dmVudC5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IG5vIElETHMuCisgICAgIyBUaGUgSURMIHRoYXQg
c3VwcGxlbWVudHMgYW5vdGhlciBJREwgKGUuZy4gUC5pZGwpIG5ldmVyIGFwcGVhcnMgaW4gdGhl
IGRlcGVuZGVuY3kgZmlsZS4KKyAgICBvcGVuIEZILCAiPCAkc3VwcGxlbWVudGFsRGVwZW5kZW5j
eUZpbGUiIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlXG4i
OworICAgIG15ICRpZGxGb3VuZCA9IDA7CisgICAgd2hpbGUgKG15ICRsaW5lID0gPEZIPikgewor
ICAgICAgICBteSAoJGlkbEZpbGUsIEBmb2xsb3dpbmdJZGxGaWxlcykgPSBzcGxpdCgvXHMrLywg
JGxpbmUpOworICAgICAgICBpZiAoJGlkbEZpbGUgYW5kICRpZGxGaWxlIGVxICR0YXJnZXRJZGxG
aWxlKSB7CisgICAgICAgICAgICAkaWRsRm91bmQgPSAxOworICAgICAgICAgICAgQHN1cHBsZW1l
bnRlZElkbEZpbGVzID0gQGZvbGxvd2luZ0lkbEZpbGVzOworICAgICAgICB9CisgICAgfQorICAg
IGNsb3NlIEZIOworCisgICAgaWYgKCEkaWRsRm91bmQpIHsKKyAgICAgICAgIyBUaGUgdGFyZ2V0
IElETCBmaWxlIGlzIHN1cHBsZW1lbnRpbmcgYW5vdGhlciBJREwgZmlsZSwKKyAgICAgICAgIyBh
bmQgdGh1cyAuaCBhbmQgLmNwcCBmb3IgdGhlIHRhcmdldCBJREwgZmlsZSBzaG91bGQgbm90IGJl
IGdlbmVyYXRlZC4KKyAgICAgICAgZXhpdCAwOworICAgIH0KIH0KLSRkZWZpbmVzID1+IHMvXlxz
K3xccyskLy9nOyAjIHRyaW0gd2hpdGVzcGFjZQogCi0jIFBhcnNlIHRoZSBnaXZlbiBJREwgZmls
ZS4KKyMgUGFyc2UgdGhlIHRhcmdldCBJREwgZmlsZS4KIG15ICRwYXJzZXIgPSBJRExQYXJzZXIt
Pm5ldyghJHZlcmJvc2UpOwotbXkgJGRvY3VtZW50ID0gJHBhcnNlci0+UGFyc2UoJGlkbEZpbGUs
ICRkZWZpbmVzLCAkcHJlcHJvY2Vzc29yKTsKK215ICR0YXJnZXREb2N1bWVudCA9ICRwYXJzZXIt
PlBhcnNlKCR0YXJnZXRJZGxGaWxlLCAkZGVmaW5lcywgJHByZXByb2Nlc3Nvcik7CisKK2ZvcmVh
Y2ggbXkgJGlkbEZpbGUgKEBzdXBwbGVtZW50ZWRJZGxGaWxlcykgeworICAgIG5leHQgaWYgJGlk
bEZpbGUgZXEgJHRhcmdldElkbEZpbGU7CisKKyAgICBteSAkcGFyc2VyID0gSURMUGFyc2VyLT5u
ZXcoISR2ZXJib3NlKTsKKyAgICBteSAkZG9jdW1lbnQgPSAkcGFyc2VyLT5QYXJzZSgkaWRsRmls
ZSwgJGRlZmluZXMsICRwcmVwcm9jZXNzb3IpOworCisgICAgZm9yZWFjaCBteSAkZGF0YU5vZGUg
KEB7JGRvY3VtZW50LT5jbGFzc2VzfSkgeworICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiU3VwcGxlbWVudGFsIn0gYW5kICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlN1cHBsZW1lbnRhbCJ9IGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lKSB7CisgICAg
ICAgICAgICBteSAkdGFyZ2V0RGF0YU5vZGU7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRjbGFz
cyAoQHskdGFyZ2V0RG9jdW1lbnQtPmNsYXNzZXN9KSB7CisgICAgICAgICAgICAgICAgaWYgKCRj
bGFzcy0+bmFtZSBlcSAkdGFyZ2V0SW50ZXJmYWNlTmFtZSkgeworICAgICAgICAgICAgICAgICAg
ICAkdGFyZ2V0RGF0YU5vZGUgPSAkY2xhc3M7CisgICAgICAgICAgICAgICAgICAgIGxhc3Q7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZGllICJOb3QgZm91
bmQgYW4gaW50ZXJmYWNlICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0gaW4gJHt0YXJnZXRJbnRlcmZh
Y2VOYW1lfS5pZGwuIiB1bmxlc3MgZGVmaW5lZCAkdGFyZ2V0RGF0YU5vZGU7CisKKyAgICAgICAg
ICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7Cisg
ICAgICAgICAgICAgICAgIyBBZGQgaW50ZXJmYWNlLXdpZGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0
byBlYWNoIGF0dHJpYnV0ZS4KKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0
dHJpYnV0ZU5hbWUgKGtleXMgJXskZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlc30pIHsKKyAg
ICAgICAgICAgICAgICAgICAgbmV4dCBpZiAoJGV4dGVuZGVkQXR0cmlidXRlTmFtZSBlcSAiU3Vw
cGxlbWVudGFsIik7CisgICAgICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX0gPSAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2RlLT5hdHRyaWJ1
dGVzfSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CiAK
LSMgR2VuZXJhdGUgZGVzaXJlZCBvdXRwdXQgZm9yIGdpdmVuIElETCBmaWxlLgorIyBHZW5lcmF0
ZSBkZXNpcmVkIG91dHB1dCBmb3IgdGhlIHRhcmdldCBJREwgZmlsZS4KIG15ICRjb2RlR2VuID0g
Q29kZUdlbmVyYXRvci0+bmV3KFxAaWRsRGlyZWN0b3JpZXMsICRnZW5lcmF0b3IsICRvdXRwdXRE
aXJlY3RvcnksICRvdXRwdXRIZWFkZXJzRGlyZWN0b3J5LCAwLCAkcHJlcHJvY2Vzc29yLCAkd3Jp
dGVEZXBlbmRlbmNpZXMsICR2ZXJib3NlKTsKLSRjb2RlR2VuLT5Qcm9jZXNzRG9jdW1lbnQoJGRv
Y3VtZW50LCAkZGVmaW5lcyk7CiskY29kZUdlbi0+UHJvY2Vzc0RvY3VtZW50KCR0YXJnZXREb2N1
bWVudCwgJGRlZmluZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9yZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFiMTkwZDUzMmZmZDBm
YWY1ZjFkNmFmZmU4NzQzYTdhYTA4OTNjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwKQEAgLTAsMCArMSw5
MyBAQAorIyEvdXNyL2Jpbi9wZXJsIC13CisjCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyMgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyMgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisjCisKK3VzZSBzdHJpY3Q7CisKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBHZXRvcHQ6
Okxvbmc7Cit1c2UgQ3dkOworCit1c2UgSURMUGFyc2VyOworCitteSAkZGVmaW5lczsKK215ICRw
cmVwcm9jZXNzb3I7CitteSAkdmVyYm9zZTsKK215ICRpZGxGaWxlc0xpc3Q7CitteSAkc3VwcGxl
bWVudGFsRGVwZW5kZW5jeUZpbGU7CisKK0dldE9wdGlvbnMoJ2RlZmluZXM9cycgPT4gXCRkZWZp
bmVzLAorICAgICAgICAgICAncHJlcHJvY2Vzc29yPXMnID0+IFwkcHJlcHJvY2Vzc29yLAorICAg
ICAgICAgICAndmVyYm9zZScgPT4gXCR2ZXJib3NlLAorICAgICAgICAgICAnaWRsRmlsZXNMaXN0
PXMnID0+IFwkaWRsRmlsZXNMaXN0LAorICAgICAgICAgICAnc3VwcGxlbWVudGFsRGVwZW5kZW5j
eUZpbGU9cycgPT4gXCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSk7CisKK2RpZSgnTXVzdCBz
cGVjaWZ5ICNkZWZpbmUgbWFjcm9zIHVzaW5nIC0tZGVmaW5lcy4nKSB1bmxlc3MgZGVmaW5lZCgk
ZGVmaW5lcyk7CitkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXN1cHBs
ZW1lbnRhbERlcGVuZGVuY3lGaWxlLicpIHVubGVzcyBkZWZpbmVkKCRzdXBwbGVtZW50YWxEZXBl
bmRlbmN5RmlsZSk7CitkaWUoJ011c3Qgc3BlY2lmeSB0aGUgZmlsZSBsaXN0aW5nIGFsbCBJRExz
IHVzaW5nIC0taWRsRmlsZXNMaXN0LicpIHVubGVzcyBkZWZpbmVkKCRpZGxGaWxlc0xpc3QpOwor
CitpZiAoJHZlcmJvc2UpIHsKKyAgICBwcmludCAiUmVzb2x2aW5nIFtTdXBwbGVtZW50YWw9WFhY
XSBkZXBlbmRlbmNpZXMgaW4gYWxsIElETCBmaWxlcy5cbiI7Cit9CisKK29wZW4gRkgsICI8ICRp
ZGxGaWxlc0xpc3QiIG9yIGRpZSAiQ2Fubm90IG9wZW4gJGlkbEZpbGVzTGlzdFxuIjsKK215IEBp
ZGxGaWxlcyA9IDxGSD47CitjaG9tcChAaWRsRmlsZXMpOworY2xvc2UgRkg7CisKKyMgUGFyc2Ug
YWxsIElETCBmaWxlcy4KK215ICVkb2N1bWVudHM7CitteSAlaW50ZXJmYWNlTmFtZVRvSWRsRmls
ZTsKK2ZvcmVhY2ggbXkgJGlkbEZpbGUgKEBpZGxGaWxlcykgeworICAgIG15ICRmdWxsUGF0aCA9
IEN3ZDo6cmVhbHBhdGgoJGlkbEZpbGUpOworICAgIG15ICRwYXJzZXIgPSBJRExQYXJzZXItPm5l
dyghJHZlcmJvc2UpOworICAgICRkb2N1bWVudHN7JGZ1bGxQYXRofSA9ICRwYXJzZXItPlBhcnNl
KCRpZGxGaWxlLCAkZGVmaW5lcywgJHByZXByb2Nlc3Nvcik7CisgICAgJGludGVyZmFjZU5hbWVU
b0lkbEZpbGV7ZmlsZXBhcnNlKGJhc2VuYW1lKCRpZGxGaWxlKSwgIi5pZGwiKX0gPSAkZnVsbFBh
dGg7Cit9CisKKyMgUmVzb2x2ZXMgW1N1cHBsZW1lbnRhbD1YWFhdIGRlcGVuZGVuY2llcy4KK215
ICVzdXBwbGVtZW50YWxzOworZm9yZWFjaCBteSAkaWRsRmlsZSAoa2V5cyAlZG9jdW1lbnRzKSB7
CisgICAgJHN1cHBsZW1lbnRhbHN7JGlkbEZpbGV9ID0gW107CisgICAgZm9yZWFjaCBteSAkZGF0
YU5vZGUgKEB7JGRvY3VtZW50c3skaWRsRmlsZX0tPmNsYXNzZXN9KSB7CisgICAgICAgIGlmICgk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTdXBwbGVtZW50YWwifSkgeworICAgICAg
ICAgICAgbXkgJHRhcmdldElkbEZpbGUgPSAkaW50ZXJmYWNlTmFtZVRvSWRsRmlsZXskZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTdXBwbGVtZW50YWwifX07CisgICAgICAgICAgICBw
dXNoKEB7JHN1cHBsZW1lbnRhbHN7JHRhcmdldElkbEZpbGV9fSwgJGlkbEZpbGUpOworICAgICAg
ICAgICAgIyBUcmVhdHMgYXMgaWYgdGhpcyBJREwgZmlsZSBkb2VzIG5vdCBleGlzdC4KKyAgICAg
ICAgICAgIGRlbGV0ZSAkc3VwcGxlbWVudGFsc3skaWRsRmlsZX07CisgICAgICAgIH0KKyAgICB9
Cit9CisKKyMgT3V0cHV0cyB0aGUgZGVwZW5kZW5jeS4KKyMgVGhlIGZvcm1hdCBvZiBhIHN1cHBs
ZW1lbnRhbCBkZXBlbmRlbmN5IGZpbGU6CisjCisjIERPTVdpbmRvdy5pZGwgUC5pZGwgUS5pZGwg
Ui5pZGwKKyMgRG9jdW1lbnQuaWRsIFMuaWRsCisjIEV2ZW50LmlkbAorIyAuLi4KKyMKKyMgVGhl
IGFib3ZlIGluZGljYXRlcyB0aGF0IERPTVdpbmRvdy5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IFAu
aWRsLCBRLmlkbCBhbmQgUi5pZGwsCisjIERvY3VtZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkg
Uy5pZGwsIGFuZCBFdmVudC5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IG5vIElETHMuCisjIFRoZSBJ
REwgdGhhdCBzdXBwbGVtZW50cyBhbm90aGVyIElETCAoZS5nLiBQLmlkbCkgbmV2ZXIgYXBwZWFy
cyBpbiB0aGUgZGVwZW5kZW5jeSBmaWxlLgorb3BlbiBGSCwgIj4gJHN1cHBsZW1lbnRhbERlcGVu
ZGVuY3lGaWxlIiBvciBkaWUgIkNhbm5vdCBvcGVuICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5Rmls
ZVxuIjsKK2ZvcmVhY2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5cyAlc3VwcGxlbWVudGFscykgewor
ICAgIHByaW50IEZIICRpZGxGaWxlLCAiIEB7JHN1cHBsZW1lbnRhbHN7JGlkbEZpbGV9fVxuIjsK
K30KK2Nsb3NlIEZIOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHAKaW5kZXggN2ZhNGFm
MzUyOTI2N2JhNzJiMGE5NDEwMDc4YjZmNTAwZDU3OWIzZC4uM2NmMjliNDg3Y2RlNzZlMGI0ZmJk
ZTc5M2IzMzUzMjM0NzhmMTVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwCkBA
IC0yNCw4ICsyNCwxMSBAQAogCiAjaW5jbHVkZSAiV2ViRE9NVGVzdEludGVyZmFjZS5oIgogCisj
aW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlRlc3RJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJX
ZWJET01TdHJpbmcuaCIKICNpbmNsdWRlICJXZWJFeGNlcHRpb25IYW5kbGVyLmgiCisjaW5jbHVk
ZSAid3RmL3RleHQvQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNzQsNiArNzcsMTYgQEAgV2ViRE9NVGVzdEludGVy
ZmFjZTo6fldlYkRPTVRlc3RJbnRlcmZhY2UoKQogICAgIG1faW1wbCA9IDA7CiB9CiAKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKK1dlYkRPTVN0cmluZyBX
ZWJET01UZXN0SW50ZXJmYWNlOjpzdHIxKCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAg
ICAgICAgcmV0dXJuIFdlYkRPTVN0cmluZygpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IFdURjo6U3RyaW5nJj4oaW1wbCgpLT5zdHIxKCkpOworfQorCisjZW5kaWYKIFdlYkNvcmU6
OlRlc3RJbnRlcmZhY2UqIHRvV2ViQ29yZShjb25zdCBXZWJET01UZXN0SW50ZXJmYWNlJiB3cmFw
cGVyKQogewogICAgIHJldHVybiB3cmFwcGVyLmltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJm
YWNlLmgKaW5kZXggNWRiNWRiOGFlMDhlNWFlY2M5MmFjYWY3ZDY3MjA2ZjliOGQzN2M5Zi4uYjRl
NTVlYmI0M2JjYTBiOGUxZmJkYTE5ZDM3ZjcyMWJhMGJhYmNjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
SW50ZXJmYWNlLmgKQEAgLTQxLDYgKzQxLDkgQEAgcHVibGljOgogICAgIFdlYkRPTVRlc3RJbnRl
cmZhY2UmIG9wZXJhdG9yPShjb25zdCBXZWJET01UZXN0SW50ZXJmYWNlJik7CiAgICAgdmlydHVh
bCB+V2ViRE9NVGVzdEludGVyZmFjZSgpOwogCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCisgICAgV2ViRE9NU3RyaW5nIHN0cjEoKSBjb25zdDsKKyNlbmRp
ZgogCiAgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogaW1wbCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDcwODZjODBhZmU2NzFh
NDI3Y2I2YWU5OGMyYjFkMTcwOTYzNTE0OWEuLjdhMzU1OGU1NGMyYmI5ZWRlYjQwZGVhMjM1MDE0
YzYxY2YwMTgwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2Uu
Y3BwCkBAIC01MSw2ICs1MSwyMCBAQCBXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBraXQoV2ViQ29y
ZTo6VGVzdEludGVyZmFjZSogb2JqKQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0IC8vCiAK
K2djaGFyKgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfc3RyMShXZWJLaXRET01UZXN0
SW50ZXJmYWNlKiBzZWxmKQoreworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQorICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnY2hhciogcmVzID0gY29udmVy
dFRvVVRGOFN0cmluZyhpdGVtLT5zdHIxKCkpOworICAgIHJldHVybiByZXM7CisjZWxzZQorICAg
IHJldHVybiBOVUxMOworI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKSAqLworfQorCiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0RE9NVGVzdEludGVyZmFj
ZSwgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZSwgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkKIApA
QCAtNjksNiArODMsOSBAQCBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBjb3JlKFdlYktpdERPTVRl
c3RJbnRlcmZhY2UqIHJlcXVlc3QpCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIGVudW0gewogICAg
IFBST1BfMCwKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
KyAgICBQUk9QX1NUUjEsCisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpICovCiB9OwogCiAKQEAgLTEwMiw3ICsxMTksMTYgQEAgc3RhdGljIHZvaWQg
d2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wX2kKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcHNwZWMpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYgPSBXRUJLSVRfRE9NX1RFU1Rf
SU5URVJGQUNFKG9iamVjdCk7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29yZVNlbGYg
PSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgc3dpdGNoIChwcm9wX2lkKSB7CisjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgY2FzZSBQUk9QX1NUUjE6
CisgICAgeworICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0VG9VVEY4
U3RyaW5nKGNvcmVTZWxmLT5zdHIxKCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlm
IC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BfaWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMjUsNiArMTUxLDE1IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfY2xhc3NfaW5pdChXZWJLaXRET01U
ZXN0SW50ZXJmYWNlQ2xhc3MqIHJlCiAgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3
ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9wcm9wZXJ0eTsKICAgICBnb2JqZWN0Q2xhc3Mt
PmNvbnN0cnVjdGVkID0gd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9jb25zdHJ1Y3RlZDsKIAor
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJPUF9TVFIxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygic3RyMSIsIC8qIG5hbWUgKi8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRl
c3RfaW50ZXJmYWNlX3N0cjEiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZC1vbmx5
ICBnY2hhciogVGVzdEludGVyZmFjZS5zdHIxIiwgLyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBz
b21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLCAvKiBkZWZhdWx0ICovCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEQUJMRSkpOworI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKSAqLwogCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJ
bnRlcmZhY2UuaAppbmRleCBmOWFmODY2YWEwMWY4ZGNlMjM0OTMzODMzZjBhYWJjYjdhMmQyYTRk
Li4xM2Y2NmI3NTZiYTgzNjFhNDAyODkyYjYwMzkzNmVmYmUxYWI2OTc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5oCkBAIC00Niw2ICs0NiwxNiBAQCBzdHJ1Y3Qg
X1dlYktpdERPTVRlc3RJbnRlcmZhY2VDbGFzcyB7CiBXRUJLSVRfQVBJIEdUeXBlCiB3ZWJraXRf
ZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF90eXBlICh2b2lkKTsKIAorLyoqCisgKiB3ZWJraXRfZG9t
X3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIxOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RJbnRl
cmZhY2UKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnY2hhcioKK3dlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjEoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2Vs
Zik7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZiAvKiBXZWJLaXRET01UZXN0SW50ZXJmYWNlX2gg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggODVkODEwMGUyNzdmNWIwMzAzZjE0NGFmZGRi
M2VlOGI0YmY0YjZhNC4uNTJkYWI0NzcwNTFkOGNhY2U5ZTk5YThiZmFlNDQ5OWNkNTA3M2E5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTMwLDYgKzMwLDExIEBACiAjaW5jbHVkZSA8cnVu
dGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAorI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsMTIgKzU1LDE4IEBAIEFTU0VSVF9DTEFTU19G
SVRTX0lOX0NFTEwoSlNUZXN0SW50ZXJmYWNlKTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdEludGVyZmFjZVRhYmxlVmFsdWVzW10gPQogeworI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIHsgInN0cjEiLCBEb250RGVsZXRlIHwg
UmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0SW50ZXJmYWNlU3RyMSksIChpbnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRPUigwKSBJ
TlRSSU5TSUMoREZHOjpOb0ludHJpbnNpYykgfSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIHsgInN0cjIiLCBEb250RGVsZXRlIHwg
UmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0SW50ZXJmYWNlU3RyMiksIChpbnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRPUigwKSBJ
TlRSSU5TSUMoREZHOjpOb0ludHJpbnNpYykgfSwKKyNlbmRpZgogICAgIHsgImNvbnN0cnVjdG9y
IiwgRG9udEVudW0gfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkw
IFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZHOjpOb0ludHJpbnNpYykgfSwKICAgICB7
IDAsIDAsIDAsIDAgVEhVTktfR0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2lj
KSB9CiB9OwogCiAjdW5kZWYgVEhVTktfR0VORVJBVE9SCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTVGVzdEludGVyZmFjZVRhYmxlID0geyAyLCAxLCBKU1Rlc3RJbnRlcmZhY2VUYWJsZVZhbHVl
cywgMCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RJbnRlcmZhY2VUYWJsZSA9IHsg
OCwgNywgSlNUZXN0SW50ZXJmYWNlVGFibGVWYWx1ZXMsIDAgfTsKIC8qIEhhc2ggdGFibGUgZm9y
IGNvbnN0cnVjdG9yICovCiAjaWYgRU5BQkxFKEpJVCkKICNkZWZpbmUgVEhVTktfR0VORVJBVE9S
KGdlbmVyYXRvcikgLCBnZW5lcmF0b3IKQEAgLTE4Nyw2ICsxOTgsMjcgQEAgYm9vbCBKU1Rlc3RJ
bnRlcmZhY2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdElu
dGVyZmFjZSwgQmFzZT4oZXhlYywgJkpTVGVzdEludGVyZmFjZVRhYmxlLCB0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCitKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN0cjEoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK3sKKyAgICBK
U1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2Uq
Pihhc09iamVjdChzbG90QmFzZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBUZXN0
SW50ZXJmYWNlKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0SW50ZXJmYWNlKj4oY2FzdGVkVGhpcy0+
aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIGltcC0+c3RyMSgp
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdHIy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCit7
CisgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0SW50
ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICByZXR1cm4gY2FzdGVkVGhpcy0+c3Ry
MihleGVjKTsKK30KKworI2VuZGlmCisKIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikK
IHsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGRvbU9iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdElu
dGVyZmFjZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKaW5kZXggYmMy
YjA2N2FkM2EwZmM3YjFmYThmMWY3YmRhOTcyNWQxYTFkODIwMy4uNzBlZWZlZDU1Y2U1ZmE0YThl
NjJkYjkxM2QyMWE5OTUxMDUzMDdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaApAQCAtNTIsNiArNTIs
OSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKworICAgIC8vIEN1
c3RvbSBhdHRyaWJ1dGVzCisgICAgSlNDOjpKU1ZhbHVlIHN0cjIoSlNDOjpFeGVjU3RhdGUqKSBj
b25zdDsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsOyB9
CiAgICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgbV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9
CiAKQEAgLTEzNCw2ICsxMzcsOCBAQCBwcm90ZWN0ZWQ6CiAKIC8vIEF0dHJpYnV0ZXMKIAorSlND
OjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN0cjEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVyZmFj
ZVN0cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYpOwogSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5oCmluZGV4IGRiN2JlMjhjYjlhZDQw
OGNkNTJkODhmNzBiMTg4ZGRkODM4MjVmOTIuLjg3YWJhZWE3MzJkZjc4MzdkMWRmNzllNjNkNWM4
YTM5ZmU3OTVkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLmgKQEAgLTI4LDcgKzI4LDE1IEBA
CiAKICNpZiBXRUJLSVRfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSBXRUJLSVRfVkVSU0lPTl9MQVRF
U1QKIAorQGNsYXNzIE5TU3RyaW5nOworCiBAaW50ZXJmYWNlIERPTVRlc3RJbnRlcmZhY2UgOiBE
T01PYmplY3QKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
Ky0gKE5TU3RyaW5nICopc3RyMTsKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQorLSAoTlNTdHJpbmcgKilzdHIyOworI2VuZGlmCiBAZW5kCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KaW5kZXggYWI1OTMzMzBjODcyMGNhZThl
MWZiYzRhMWJmMTM0NDNjNThiOTBlOC4uMmI1ZGY5MTgzZGUzNzViOTlkZDAxNTMzNDkyYzE1ZDA0
ODMxOWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCkBAIC00MSw2ICs0MSw3IEBACiAj
aW1wb3J0ICJET01UZXN0SW50ZXJmYWNlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhh
bmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbXBvcnQgIktV
UkwuaCIKICNpbXBvcnQgIlRlc3RJbnRlcmZhY2UuaCIKICNpbXBvcnQgIlRocmVhZENoZWNrLmgi
CiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgpAQCAtNjgsNiArNjksMjIgQEAKICAgICBb
c3VwZXIgZmluYWxpemVdOwogfQogCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCistIChOU1N0cmluZyAqKXN0cjEKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPnN0cjEoKTsKK30KKyNlbmRp
ZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChO
U1N0cmluZyAqKXN0cjIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CisgICAgcmV0dXJuIElNUEwtPnN0cjIoKTsKK30KKyNlbmRpZgorCiBAZW5kCiAKIFdlYkNv
cmU6OlRlc3RJbnRlcmZhY2UqIGNvcmUoRE9NVGVzdEludGVyZmFjZSAqd3JhcHBlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVu
dGFsLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxl
bWVudGFsLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDE0MDZiZmJkOTk4ODExYjZkY2E2MDUwNzQ3NmU4ZWE2
YTk2NTM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFc3RyQXJnLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
Ly8gVGhpcyBJREwgZmlsZSBpcyBmb3IgdGVzdGluZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0
b3IgYW5kIGZvciB0cmFja2luZworLy8gY2hhbmdlcyBpbiBpdHMgb3VwdXQuCittb2R1bGUgdGVz
dCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMTF8Q29u
ZGl0aW9uMTIsCisgICAgICAgIFN1cHBsZW1lbnRhbD1UZXN0SW50ZXJmYWNlCisgICAgXSBUZXN0
U3VwcGxlbWVudGFsIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzdHIx
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbUdldHRlciwgT3B0aW9uYWw9Q2Fs
bFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBzdHIyOworICAgIH07Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRl
cmZhY2UuY3BwCmluZGV4IDViNDVhNmRmMzNjMTY5MmEzYWY3ZDQ1MDU3NjUzMmVjMWE4NmQzZDku
LjAxY2NjYjczMzQ2YjQ1ZmQ2ZDdlZmM1YzA2NzZiYzJkYTBhZTQ1NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRl
cmZhY2UuY3BwCkBAIC00MSw4ICs0MSwzMCBAQCBuYW1lc3BhY2UgVGVzdEludGVyZmFjZUludGVy
bmFsIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQogCisjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3RyMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00u
VGVzdEludGVyZmFjZS5zdHIxLl9nZXQiKTsKKyAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRl
c3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0cmlu
ZyhpbXAtPnN0cjEoKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKKwogfSAvLyBuYW1lc3BhY2UgVGVzdEludGVyZmFjZUludGVybmFs
CiAKK3N0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIFRlc3RJbnRlcmZhY2VBdHRyc1tdID0g
eworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIC8v
IEF0dHJpYnV0ZSAnc3RyMScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICdD
b25kaXRpb25hbCcpCisgICAgeyJzdHIxIiwgVGVzdEludGVyZmFjZUludGVybmFsOjpzdHIxQXR0
ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCisgICAgLy8gQXR0cmlidXRlICdzdHIyJyAoVHlwZTogJ3JlYWRvbmx5
IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0N1c3RvbUdldHRlciBPcHRpb25hbCBDb25kaXRpb25hbCcp
CisgICAgeyJzdHIyIiwgVjhUZXN0SW50ZXJmYWNlOjpzdHIyQWNjZXNzb3JHZXR0ZXIsIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQorfTsKKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEludGVyZmFjZTo6
Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NLlRlc3RJbnRlcmZhY2UuQ29uc3RydWN0b3IiKTsKQEAgLTgxLDcgKzEwMyw3
IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVy
ZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJlID0gY29uZmlndXJlVGVt
cGxhdGUoZGVzYywgIlRlc3RJbnRlcmZhY2UiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4oKSwgVjhUZXN0SW50ZXJmYWNlOjppbnRlcm5hbEZpZWxkQ291bnQsCi0gICAgICAg
IDAsIDAsCisgICAgICAgIFRlc3RJbnRlcmZhY2VBdHRycywgV1RGX0FSUkFZX0xFTkdUSChUZXN0
SW50ZXJmYWNlQXR0cnMpLAogICAgICAgICAwLCAwKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVs
dFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAg
ZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNr
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RJbnRlcmZhY2UuaAppbmRleCBhMDQ4YzgzNDE2YjAwOTBlM2ZiMmMyMTgxYmUwMmYy
N2E2MjdjYTBmLi5jMTVjMmQ0MjBmZGNiYThhMTgyODY2NjUzNzFkNTRiOTQ4OTYyNTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEludGVyZmFjZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV3Jh
cHBlclR5cGVJbmZvIGluZm87CiAgICAgc3RhdGljIEFjdGl2ZURPTU9iamVjdCogdG9BY3RpdmVE
T01PYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKyAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cjJBY2Nlc3NvckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYpOwogICAgIHN0YXRp
YyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFs
RmllbGRDb3VudCArIDA7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXhpc3Rp
bmdXcmFwcGVyKFRlc3RJbnRlcmZhY2UqKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhmMTlhZThiZTM3OWUzZmExYjVjODA5NzQwOTdhYTAw
ZTY1NGQ0NjAuLmU1OWQxYTQyNjcxNjU1YzlmZjJlNTk5MzAxYzRmMjYzZjU0NzMyNjkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAxMS0xMS0yNiAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSW1wbGVtZW50IFtTdXBwbGVtZW50YWxdIElETCBhbmQgc3VwcG9ydCBpdCBpbiBy
dW4tYmluZGluZ3MtdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgcnVuLWJpbmRpbmdzLXRlc3RzIHN1cHBvcnRzIHRoZSBbU3VwcGxlbWVudGFsXSBJ
REwgaW4gdGhlIGZvbGxvd2luZyB3YXkuCisgICAgICAgICAgICAoMSkgSXQgY3JlYXRlcyBhIGZp
bGUgfHh8IGxpc3RpbmcgYWxsIElETCBmaWxlcy4KKyAgICAgICAgICAgICgyKSBJdCBnZW5lcmF0
ZXMgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBmaWxlIHx5fCB1c2luZyByZXNvbHZlLXN1cHBs
ZW1lbnRhbC5wbCBhbmQgfHh8LgorICAgICAgICAgICAgKDMpIEZvciBlYWNoIElETCBmaWxlIHx6
fCwgaXQgcnVucyBnZW5lcmF0ZS1iaW5kaW5ncy5wbCB3aXRoIHx5fC4KKyAgICAgICAgICAgICAg
ICBUaGVuLCBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBnZW5lcmF0ZXMgLmggYW5kIC5jcHAgZmlsZXMg
Zm9yIHRoZSBJREwgZmlsZSB8enwsCisgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGFsbCBhdHRy
aWJ1dGVzIGluIElETCBmaWxlcyB0aGF0IGFyZSBzdXBwbGVtZW50aW5nIHRoZSBJREwgZmlsZSB8
enwuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0czoKKyAgICAgICAgKGdl
bmVyYXRlX2Zyb21faWRsKToKKyAgICAgICAgKGdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRl
bmN5KToKKyAgICAgICAgKGRldGVjdF9jaGFuZ2VzKToKKyAgICAgICAgKHJ1bl90ZXN0cyk6Cisg
ICAgICAgIChtYWluKToKKwogMjAxMS0xMS0yNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCB0aGUgYnVpbGQgYWZ0ZXIgcjEwMTE3
NC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzIGIvVG9vbHMv
U2NyaXB0cy9ydW4tYmluZGluZ3MtdGVzdHMKaW5kZXggNDA5ZmExZjE0YzliY2UyNTEwNzYxYmY1
MTc0N2FlM2UxNjYxZGMwMS4uMTIyYjI2NmNiM2YwMTc4NGU0NjQ5ZDNkYmU4ZTlkYTFlY2M4Nzdj
MSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tYmluZGluZ3MtdGVzdHMKKysrIGIvVG9v
bHMvU2NyaXB0cy9ydW4tYmluZGluZ3MtdGVzdHMKQEAgLTM4LDcgKzM4LDcgQEAgaW1wb3J0IHRl
bXBmaWxlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9y
dCBkZXRlY3Rfc2NtX3N5c3RlbQogCiAKLWRlZiBnZW5lcmF0ZV9mcm9tX2lkbChnZW5lcmF0b3Is
IGlkbF9maWxlLCBvdXRwdXRfZGlyZWN0b3J5KToKK2RlZiBnZW5lcmF0ZV9mcm9tX2lkbChnZW5l
cmF0b3IsIGlkbF9maWxlLCBvdXRwdXRfZGlyZWN0b3J5LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5j
eV9maWxlKToKICAgICBjbWQgPSBbJ3BlcmwnLCAnLXcnLAogICAgICAgICAgICAnLUlXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMnLAogICAgICAgICAgICAnV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKQEAgLTQ3LDYgKzQ3LDcgQEAgZGVmIGdlbmVyYXRlX2Zy
b21faWRsKGdlbmVyYXRvciwgaWRsX2ZpbGUsIG91dHB1dF9kaXJlY3RvcnkpOgogICAgICAgICAg
ICAnLS1kZWZpbmVzJywgJ1RFU1RJTkdfJXMnICUgZ2VuZXJhdG9yLAogICAgICAgICAgICAnLS1n
ZW5lcmF0b3InLCBnZW5lcmF0b3IsCiAgICAgICAgICAgICctLW91dHB1dERpcicsIG91dHB1dF9k
aXJlY3RvcnksCisgICAgICAgICAgICctLXN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlJywgc3Vw
cGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSwKICAgICAgICAgICAgaWRsX2ZpbGVdCiAKICAgICBw
cm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dCA9IHN1YnByb2Nlc3MuUElQRSwg
c3RkZXJyID0gc3VicHJvY2Vzcy5TVERPVVQpCkBAIC01Nyw2ICs1OCwzMSBAQCBkZWYgZ2VuZXJh
dGVfZnJvbV9pZGwoZ2VuZXJhdG9yLCBpZGxfZmlsZSwgb3V0cHV0X2RpcmVjdG9yeSk6CiAgICAg
cmV0dXJuIGV4aXRfY29kZQogCiAKK2RlZiBnZW5lcmF0ZV9zdXBwbGVtZW50YWxfZGVwZW5kZW5j
eShpbnB1dF9kaXJlY3RvcnksIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUpOgorICAgIGlk
bF9maWxlc19saXN0ID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgZm9yIGlucHV0X2ZpbGUgaW4g
b3MubGlzdGRpcihpbnB1dF9kaXJlY3RvcnkpOgorICAgICAgICAobmFtZSwgZXh0ZW5zaW9uKSA9
IG9zLnBhdGguc3BsaXRleHQoaW5wdXRfZmlsZSkKKyAgICAgICAgaWYgZXh0ZW5zaW9uICE9ICcu
aWRsJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIG9zLndyaXRlKGlkbF9maWxlc19s
aXN0WzBdLCBvcy5wYXRoLmpvaW4oaW5wdXRfZGlyZWN0b3J5LCBpbnB1dF9maWxlKSArICJcbiIp
CisgICAgb3MuY2xvc2UoaWRsX2ZpbGVzX2xpc3RbMF0pCisKKyAgICBjbWQgPSBbJ3BlcmwnLCAn
LXcnLAorICAgICAgICAgICAnLUlXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMnLAorICAgICAgICAg
ICAnV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Jlc29sdmUtc3VwcGxlbWVudGFsLnBsJywKKyAg
ICAgICAgICAgJy0taWRsRmlsZXNMaXN0JywgaWRsX2ZpbGVzX2xpc3RbMV0sCisgICAgICAgICAg
ICctLWRlZmluZXMnLCAnJywKKyAgICAgICAgICAgJy0tc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZp
bGUnLCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlXQorICAgIHByb2Nlc3MgPSBzdWJwcm9j
ZXNzLlBvcGVuKGNtZCwgc3Rkb3V0ID0gc3VicHJvY2Vzcy5QSVBFLCBzdGRlcnIgPSBzdWJwcm9j
ZXNzLlNURE9VVCkKKyAgICBleGl0X2NvZGUgPSBwcm9jZXNzLndhaXQoKQorICAgIG91dHB1dCA9
IHByb2Nlc3MuY29tbXVuaWNhdGUoKVswXQorICAgIGlmIG91dHB1dDoKKyAgICAgICAgcHJpbnQg
b3V0cHV0CisKKyAgICBvcy5yZW1vdmUoaWRsX2ZpbGVzX2xpc3RbMV0pCisgICAgcmV0dXJuIGV4
aXRfY29kZQorCisKIGRlZiBkZXRlY3RfY2hhbmdlcyhnZW5lcmF0b3IsIHdvcmtfZGlyZWN0b3J5
LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKICAgICBjaGFuZ2VzX2ZvdW5kID0gRmFsc2UKICAgICBm
b3Igb3V0cHV0X2ZpbGUgaW4gb3MubGlzdGRpcih3b3JrX2RpcmVjdG9yeSk6CkBAIC03OCw3ICsx
MDQsNyBAQCBkZWYgZGV0ZWN0X2NoYW5nZXMoZ2VuZXJhdG9yLCB3b3JrX2RpcmVjdG9yeSwgcmVm
ZXJlbmNlX2RpcmVjdG9yeSk6CiAgICAgcmV0dXJuIGNoYW5nZXNfZm91bmQKIAogCi1kZWYgcnVu
X3Rlc3RzKGdlbmVyYXRvciwgaW5wdXRfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5LCBy
ZXNldF9yZXN1bHRzKToKK2RlZiBydW5fdGVzdHMoZ2VuZXJhdG9yLCBpbnB1dF9kaXJlY3Rvcnks
IHJlZmVyZW5jZV9kaXJlY3RvcnksIHJlc2V0X3Jlc3VsdHMsIHN1cHBsZW1lbnRhbF9kZXBlbmRl
bmN5X2ZpbGUpOgogICAgIHdvcmtfZGlyZWN0b3J5ID0gcmVmZXJlbmNlX2RpcmVjdG9yeQogCiAg
ICAgcGFzc2VkID0gVHJ1ZQpAQCAtOTMsNyArMTE5LDggQEAgZGVmIHJ1bl90ZXN0cyhnZW5lcmF0
b3IsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSwgcmVzZXRfcmVzdWx0cyk6
CiAKICAgICAgICAgaWYgZ2VuZXJhdGVfZnJvbV9pZGwoZ2VuZXJhdG9yLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oaW5wdXRfZGlyZWN0b3J5LCBpbnB1dF9maWxl
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya19kaXJlY3RvcnkpOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3b3JrX2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSk6CiAgICAgICAgICAgICBw
YXNzZWQgPSBGYWxzZQogCiAgICAgICAgIGlmIHJlc2V0X3Jlc3VsdHM6CkBAIC0xMzEsMTIgKzE1
OCwyMCBAQCBkZWYgbWFpbihhcmd2KToKICAgICAgICAgJ0NQUCcKICAgICBdCiAKKyAgICBpbnB1
dF9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnc2NyaXB0
cycsICd0ZXN0JykKKyAgICBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlID0gdGVtcGZpbGUu
bWtzdGVtcCgpWzFdCisgICAgaWYgZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koaW5w
dXRfZGlyZWN0b3J5LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlKToKKyAgICAgICAgcHJp
bnQgJ0ZhaWxlZCB0byBnZW5lcmF0ZSBhIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5IGZpbGUuJwor
ICAgICAgICBvcy5yZW1vdmUoc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSkKKyAgICAgICAg
cmV0dXJuIC0xCisKICAgICBmb3IgZ2VuZXJhdG9yIGluIGdlbmVyYXRvcnM6CiAgICAgICAgIGlu
cHV0X2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbignV2ViQ29yZScsICdiaW5kaW5ncycsICdzY3Jp
cHRzJywgJ3Rlc3QnKQogICAgICAgICByZWZlcmVuY2VfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2lu
KCdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ3NjcmlwdHMnLCAndGVzdCcsIGdlbmVyYXRvcikKLSAg
ICAgICAgaWYgbm90IHJ1bl90ZXN0cyhnZW5lcmF0b3IsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJl
bmNlX2RpcmVjdG9yeSwgcmVzZXRfcmVzdWx0cyk6CisgICAgICAgIGlmIG5vdCBydW5fdGVzdHMo
Z2VuZXJhdG9yLCBpbnB1dF9kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3RvcnksIHJlc2V0X3Jl
c3VsdHMsIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUpOgogICAgICAgICAgICAgYWxsX3Rl
c3RzX3Bhc3NlZCA9IEZhbHNlCiAKKyAgICBvcy5yZW1vdmUoc3VwcGxlbWVudGFsX2RlcGVuZGVu
Y3lfZmlsZSkKICAgICBwcmludCAnJwogICAgIGlmIGFsbF90ZXN0c19wYXNzZWQ6CiAgICAgICAg
IHByaW50ICdBbGwgdGVzdHMgUEFTUyEnCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116738</attachid>
            <date>2011-11-28 04:56:46 -0800</date>
            <delta_ts>2011-11-28 20:47:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73162-20111128215645.patch</filename>
            <type>text/plain</type>
            <size>58916</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTcwZDVhMTgzNWUyZjRj
ZmUyN2U2MGU5ZDdlNWE5MmFkMWRkNzk3MC4uNzZhNDYwYzEwZGNmZmFmNzM2YWRlZDVlYzM0ZmY2
YTQ4ZTk5ODIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDExLTExLTI4ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgW1N1
cHBsZW1lbnRhbF0gSURMIGFuZCBzdXBwb3J0IGl0IGluIHJ1bi1iaW5kaW5ncy10ZXN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxNjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIE92ZXJ2aWV3Ogor
ICAgICAgICAgICAgLSBJbXBsZW1lbnQgdGhlIFtTdXBwbGVtZW50YWxdIElETCBpbiByZXNvbHZl
LXN1cHBsZW1lbnRhbC5wbCBhbmQgZ2VuZXJhdGUtYmluZGluZ3MucGwuCisgICAgICAgICAgICAt
IFN1cHBvcnQgdGhlIFtTdXBwbGVtZW50YWxdIElETCBpbiBydW4tYmluZGluZ3MtdGVzdHMuCisg
ICAgICAgICAgICAtIEFkZCBUZXN0U3VwcGxlbWVudGFsLmlkbCBhcyBhIGJpbmRpbmcgdGVzdCBh
bmQgY29uZmlybSB0aGF0IGl0IHdvcmtzLgorCisgICAgICAgIC0gVGhlIHNwZWMgZm9yIHRoZSBb
U3VwcGxlbWVudGFsXSBJREw6IGh0dHA6Ly9kZXYudzMub3JnLzIwMDYvd2ViYXBpL1dlYklETC8j
ZGZuLXN1cHBsZW1lbnRhbC1pbnRlcmZhY2UKKworICAgICAgICAtIFRoaXMgcGF0Y2ggYWZmZWN0
cyBydW4tYmluZGluZ3MtdGVzdHMgcmVzdWx0cyBvbmx5IGFuZCBkb2VzIG5vdCBhZmZlY3QgYW55
IHJlYWwgYnVpbGRzCisgICAgICAgIHNpbmNlIG5vIFtTdXBwbGVtZW50YWxdIElETCBoYXMgYmVl
biB3cml0dGVuIGluIHJlYWwgV2ViQ29yZSBJREwgZmlsZXMgZm9yIG5vdy4KKworICAgICAgICAt
IFRoaXMgcGF0Y2ggbWFrZXMgYSBjaGFuZ2Ugb24gQ29kZUdlbmVyYXRvcntKUyxWOH0ucG0KKyAg
ICAgICAgYnV0IGRvZXMgbm90IHlldCBtYWtlIHRoZSBjaGFuZ2Ugb24gQ29kZUdlbmVyYXRvcntP
YmpDLEdPYmplY3QsQ1BQfS5wbS4KKworICAgICAgICAtIEFkZGVkIHBlcmwgc2NyaXB0cyBpbXBs
ZW1lbnQgdGhlIFtTdXBwbGVtZW50YWxdIElETCBhcyBmb2xsb3dzOgorCisgICAgICAgICAgICBQ
cmV2aW91cyBidWlsZCBmbG93OgorICAgICAgICAgICAgICAgIGZvcmVhY2ggJGlkbCAoYWxsIElE
TCBmaWxlcykgeworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBkZXBl
bmRzIG9uICRpZGw7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIHJl
YWRzICRpZGw7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGdlbmVy
YXRlcyAuaCBhbmQgLmNwcCBmaWxlcyBmb3IgJGlkbDsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIE5ldyBidWlsZCBmbG93IChTZWUgdGhlIGRpc2N1c3Npb25zIGluIGJ1ZyA3MjEz
OCBmb3IgbW9yZSBkZXRhaWxzKToKKyAgICAgICAgICAgICAgICByZXNvbHZlLXN1cHBsZW1lbnRh
bC5wbCBkZXBlbmRzIG9uIGFsbCBJREwgZmlsZXM7CisgICAgICAgICAgICAgICAgcmVzb2x2ZS1z
dXBwbGVtZW50YWwucGwgcmVhZHMgYWxsIElETCBmaWxlczsKKyAgICAgICAgICAgICAgICByZXNv
bHZlLXN1cHBsZW1lbnRhbC5wbCByZXNvbHZlcyB0aGUgZGVwZW5kZW5jeSBvZiBbU3VwcGxlbWVu
dGFsPVhYWFhdOworICAgICAgICAgICAgICAgIHJlc29sdmUtc3VwcGxlbWVudGFsLnBsIG91dHB1
dHMgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kudG1wOworICAgICAgICAgICAgICAgIGZvcmVhY2gg
JGlkbCAoYWxsIElETCBmaWxlcykgeworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZS1iaW5k
aW5ncy5wbCBkZXBlbmRzIG9uICRpZGwgYW5kIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5LnRtcDsK
KyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgcmVhZHMgJGlkbDsKKyAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgcmVhZHMgc3VwcGxlbWVudGFs
X2RlcGVuZGVuY3kudG1wOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5w
bCBnZW5lcmF0ZXMgLmggYW5kIC5jcHAgZmlsZXMgZm9yICRpZGwsIGluY2x1ZGluZyBhbGwgYXR0
cmlidXRlcyBpbiBJREwgZmlsZXMgd2hpY2ggYXJlIHN1cHBsZW1lbnRpbmcgJGlkbDsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgVGVzdHM6IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
U3VwcGxlbWVudGFsLmlkbAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1i
aW5kaW5ncy5wbDogVGhlIGlucHV0IGlzIGFuIElETCBmaWxlIHx4fCBhbmQgdGhlIGRlcGVuZGVu
Y3kgZmlsZS4gZ2VuZXJhdGUtYmluZGluZ3MucGwgZ2VuZXJhdGVzIC5oIGFuZCAuY3BwIGZpbGVz
IGZvciB0aGUgSURMIGZpbGUgfHh8LCBpbmNsdWRpbmcgYWxsIHRoZSBhdHRyaWJ1dGVzIGluIHRo
ZSBJREwgZmlsZXMgd2hpY2ggYXJlIHN1cHBsZW1lbnRpbmcgdGhlIElETCBmaWxlIHx4fC4gZ2Vu
ZXJhdGUtYmluZGluZ3MucGwgYWRkZXMgdGhlIFtJbXBsZW1lbnRlZEJ5XSBJREwgdG8gdGhlIGF0
dHJpYnV0ZXMgd2l0aCB0aGUgW1N1cHBsZW1lbnRhbF0gSURMIGluIG9yZGVyIHRvIGluZGljYXRl
IHdoYXQgSURMIGlzIGltcGxlbWVudGluZyB0aGUgYXR0cmlidXRlcy4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Jlc29sdmUtc3VwcGxlbWVudGFsLnBsOiBBZGRlZC4gcmVzb2x2ZS1zdXBw
bGVtZW50YWwucGwgcmVhZHMgYWxsIElETCBmaWxlcywgcmVzb2x2ZXMgW1N1cHBsZW1lbnRhbD1Y
WFhdIGRlcGVuZGVuY2llcywgYW5kIHRoZW4gb3V0cHV0cyB0aGUgZGVwZW5kZW5jeSBmaWxlLiBT
ZWUgdGhlIGNvbW1lbnQgaW4gcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwgZm9yIHRoZSBmb3JtYXQg
b2YgdGhlIGRlcGVuZGVuY3kgZmlsZS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG06CisgICAgICAgIChHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJp
YnV0ZVZhbHVlKTogQXZvaWRzIGR1cGxpY2F0ZWQgY29uZGl0aW9ucy4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KTogSWYgYW4gYXR0cmlidXRlIGlzIFtJbXBsZW1lbnRlZEJ5XSBhbm90aGVyIElETCwgdGhlbiB3
ZSBvbWl0IHRoZSBkZWNsYXJhdGlvbiBvZiB0aGUgKGN1c3RvbSkgZ2V0dGVyIGFuZCBzZXR0ZXIu
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogSWYgYW4gYXR0cmlidXRlIGlzIFtJ
bXBsZW1lbnRlZEJ5XSBhbm90aGVyIElETCwgdGhlbiB3ZSBjYWxsIGJhY2sgdGhlIChjdXN0b20p
IGdldHRlciBhbmQgc2V0dGVyIG9mIHRoZSBJREwuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6IElmIGFuIGF0
dHJpYnV0ZSBpcyBbSW1wbGVtZW50ZWRCeV0gYW5vdGhlciBJREwsIHRoZW4gd2Ugb21pdCB0aGUg
ZGVjbGFyYXRpb24gb2YgdGhlIChjdXN0b20pIGdldHRlciBhbmQgc2V0dGVyLgorICAgICAgICAo
R2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKTogSWYgYW4gYXR0cmlidXRlIGlzIFtJbXBsZW1lbnRl
ZEJ5XSBhbm90aGVyIElETCwgdGhlbiB3ZSBjYWxsIGJhY2sgdGhlIGdldHRlciBvZiB0aGUgSURM
LgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyKTogSWYgYW4gYXR0cmlidXRlIGlz
IFtJbXBsZW1lbnRlZEJ5XSBhbm90aGVyIElETCwgdGhlbiB3ZSBjYWxsIGJhY2sgdGhlIHNldHRl
ciBvZiB0aGUgSURMLgorICAgICAgICAoR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlKTog
SWYgYW4gYXR0cmlidXRlIGlzIFtJbXBsZW1lbnRlZEJ5XSBhbm90aGVyIElETCwgdGhlbiB3ZSBj
YWxsIGJhY2sgdGhlIGN1c3RvbSBnZXR0ZXIgb3Igc2V0dGVyIG9mIHRoZSBJREwuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGw6IEFkZGVkLiBB
IHRlc3QgY2FzZSBmb3IgdGhlIFtTdXBwbGVtZW50YWxdIElETC4KKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwOiBVcGRhdGVkIGEgcnVu
LWJpbmRpbmdzLXRlc3RzIHJlc3VsdC4KKyAgICAgICAgKFdlYkRPTVRlc3RJbnRlcmZhY2U6OnN0
cjEpOgorICAgICAgICAoV2ViRE9NVGVzdEludGVyZmFjZTo6c3RyMik6CisgICAgICAgIChXZWJE
T01UZXN0SW50ZXJmYWNlOjpzZXRTdHIyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHA6IERpdHRvLgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfc3RyMSk6CisgICAgICAgICh3
ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIyKToKKyAgICAgICAgKHdlYmtpdF9kb21f
dGVzdF9pbnRlcmZhY2Vfc2V0X3N0cjIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVy
ZmFjZV9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9n
ZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9jbGFzc19p
bml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0SW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdElu
dGVyZmFjZVN0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3RyMik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdHIzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEludGVyZmFjZTo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVy
ZmFjZVN0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlU3RyMyk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOiBEaXR0
by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNl
Lmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJ
bnRlcmZhY2UubW06IERpdHRvLgorICAgICAgICAoLVtET01UZXN0SW50ZXJmYWNlIHN0cjFdKToK
KyAgICAgICAgKC1bRE9NVGVzdEludGVyZmFjZSBzdHIyXSk6CisgICAgICAgICgtW0RPTVRlc3RJ
bnRlcmZhY2Ugc2V0U3RyMjpdKToKKyAgICAgICAgKC1bRE9NVGVzdEludGVyZmFjZSBzdHIzXSk6
CisgICAgICAgICgtW0RPTVRlc3RJbnRlcmZhY2Ugc2V0U3RyMzpdKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcDogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW50ZXJuYWw6OnN0cjFBdHRyR2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3RyMkF0dHJHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZUludGVybmFsOjpzdHIyQXR0clNldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOiBEaXR0by4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmg6IERpdHRvLgor
CiAyMDExLTExLTI4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLiBGaXggbWFrZSBkaXN0Y2hlY2sgaXNzdWVzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDhi
MDhmODgzOWQ0NzIzMGQ2YjEyNzk0MzI0ZGEyNTc5ZWYyMmUyYTMuLjk3YWQzYTY4ODc3OTlmNDUw
ZjhmOWJhYWJiZjkzNzZmMDc3N2M5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTU2NCw5ICs1NjQsMTUgQEAgc3ViIEdlbmVy
YXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUKICAgICBteSAkZ2VuZXJhdG9y
ID0gc2hpZnQ7CiAgICAgbXkgJGNvbmRpdGlvbmFsID0gc2hpZnQ7CiAgICAgaWYgKCRjb25kaXRp
b25hbCA9fiAvJi8pIHsKLSAgICAgICAgcmV0dXJuICJFTkFCTEUoIiAuIGpvaW4oIikgJiYgRU5B
QkxFKCIsIHNwbGl0KC8mLywgJGNvbmRpdGlvbmFsKSkgLiAiKSI7CisgICAgICAgICMgQXZvaWQg
ZHVwbGljYXRlZCBjb25kaXRpb25zLgorICAgICAgICBteSAlY29uZGl0aW9uczsKKyAgICAgICAg
bWFwIHsgJGNvbmRpdGlvbnN7JF99ID0gMSB9IHNwbGl0KC8mLywgJGNvbmRpdGlvbmFsKTsKKyAg
ICAgICAgcmV0dXJuICJFTkFCTEUoIiAuIGpvaW4oIikgJiYgRU5BQkxFKCIsIHNvcnQga2V5cyAl
Y29uZGl0aW9ucykgLiAiKSI7CiAgICAgfSBlbHNpZiAoJGNvbmRpdGlvbmFsID1+IC9cfC8pIHsK
LSAgICAgICAgcmV0dXJuICJFTkFCTEUoIiAuIGpvaW4oIikgfHwgRU5BQkxFKCIsIHNwbGl0KC9c
fC8sICRjb25kaXRpb25hbCkpIC4gIikiOworICAgICAgICAjIEF2b2lkIGR1cGxpY2F0ZWQgY29u
ZGl0aW9ucy4KKyAgICAgICAgbXkgJWNvbmRpdGlvbnM7CisgICAgICAgIG1hcCB7ICRjb25kaXRp
b25zeyRffSA9IDEgfSBzcGxpdCgvXHwvLCAkY29uZGl0aW9uYWwpOworICAgICAgICByZXR1cm4g
IkVOQUJMRSgiIC4gam9pbigiKSB8fCBFTkFCTEUoIiwgc29ydCBrZXlzICVjb25kaXRpb25zKSAu
ICIpIjsKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gIkVOQUJMRSgiIC4gJGNvbmRpdGlv
bmFsIC4gIikiOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggY2FjMzUwYjQ5NDE1MzFiODZhNzQyYTg3MmJiMjVj
MjMwOGY0YjY5OC4uYTlkYmZiZWZjNTAzMmRjYmZkYzIyOTg1ZTMxNzdhZDcwZGE5NTA5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KQEAgLTg4OCw5ICs4ODgsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgICAg
ICBpZiAoJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5LykgewogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgc2V0IiAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAiKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbUdldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTQ0N1c3RvbUdldHRlciJ9KSB7CisgICAgICAgICAgICB9IGVsc2lmICgoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0dGVyIn0gfHwgJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tR2V0dGVy
In0pICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IEpTQzo6SlNWYWx1ZSAiIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lKSAuICIoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDtcbiIpOwotICAgICAg
ICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSlNDQ3VzdG9tU2V0dGVyIn0pIHsKKyAgICAgICAgICAgIH0gZWxzaWYgKCgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21TZXR0ZXIifSB8
fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0NDdXN0b21T
ZXR0ZXIifSkgJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifSkgewogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT50eXBl
ICF+IC9ecmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgdm9pZCBzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpO1xu
Iik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTY0OCw3ICsxNjQ4LDEzIEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbSJ9
IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdl
dHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpT
Q0N1c3RvbUdldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZShleGVjKTtc
biIpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAke2ltcGxlbWVudGVkQnl9Ojok
aW1wbEdldHRlckZ1bmN0aW9uTmFtZShjYXN0ZWRUaGlzLCBleGVjKTtcbiIpOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIGNhc3RlZFRoaXMtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKGV4
ZWMpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2lm
ICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja05vZGVT
ZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmlu
ZGluZy5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpO1xuIik7CkBAIC0xNjk5LDcgKzE3MDUsMTYgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICJpbXAuJGltcGxHZXR0ZXJGdW5jdGlv
bk5hbWUoKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBteSAkZ2V0dGVyRXhwcmVzc2lvbiA9ICJpbXAtPiIgLiAkY29kZUdlbmVyYXRvci0+R2V0dGVy
RXhwcmVzc2lvblByZWZpeChcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1
dGUpIC4gIikiOworICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGdldHRlckV4cHJlc3Npb25Q
cmVmaXggPSAkY29kZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvblByZWZpeChcJWltcGxJbmNs
dWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbXkgJGdldHRlckV4cHJlc3Npb247CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRl
ZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRnZXR0ZXJFeHByZXNz
aW9uID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7Z2V0dGVyRXhwcmVzc2lvblByZWZpeH1pbXApIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJGdldHRlckV4cHJlc3Npb24gPSAiaW1wLT4iIC4gJGdldHRlckV4cHJlc3Npb25QcmVm
aXggLiAiKSI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICAg
ICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAwLCAkaW1wbENsYXNzTmFtZSwgJGdldHRlckV4cHJlc3Npb24sICJjYXN0ZWRUaGlzIik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbENsYXNz
TmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklz
U1ZHQW5pbWF0ZWRUeXBlKCR0eXBlKSkgewpAQCAtMTcwOSw3ICsxNzI0LDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICRqc1R5cGU7XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAKKwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBtXyIgLiAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIHJlc3VsdCk7XG4iKSBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2FjaGVkQXR0cmlidXRlIn0pOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gcmVzdWx0O1xuIik7CiAKQEAgLTE4MjIsNyArMTgzNywx
MyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tU2V0dGVyIn0pIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2Fz
dDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKGV4
ZWMsIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVt
ZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHtpbXBsZW1lbnRlZEJ5fTo6c2V0JGltcGxTZXR0ZXJGdW5jdGlv
bk5hbWUoZXhlYywgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLCB2YWx1ZSk7
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwk
Y2xhc3NOYW1lKj4odGhpc09iamVjdCktPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKGV4ZWMs
IHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudExpc3RlbmVyIikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRMaXN0ZW5lci5oIn0g
PSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFVOVVNFRF9QQVJBTShleGVjKTtcbiIpOwpAQCAtMTkwNywxNyArMTkyOCwyMSBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXkgJHNldHRlckV4cHJlc3Npb25QcmVmaXggPSAkY29kZUdlbmVyYXRvci0+
U2V0dGVyRXhwcmVzc2lvblByZWZpeChcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRh
dHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpbXAtPiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JG5hdGl2ZVZhbHVlIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5
fS5oIn0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJHtpbXBsZW1lbnRlZEJ5fTo6JHtzZXR0ZXJFeHByZXNzaW9uUHJlZml4
fWltcCwgJG5hdGl2ZVZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpbXAtPiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JG5hdGl2ZVZhbHVlIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIsIGVjIikgaWYgQHskYXR0cmlidXRlLT5zZXR0
ZXJFeGNlcHRpb25zfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRh
dHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCisg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGF0
dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nOwotCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCmluZGV4IDVlMzNlYjJlOWIzMTU2NDFiMGNmYzY5MjRhNDYyMTkwNGM4MDRiZTku
LjdlMDJiZjEzNTI4NDZlMGI1ZjhhMWQ4NjEyZGE1Nzg3ZjJhY2Q4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zOTIs
MTQgKzM5MiwxNiBAQCBFTkQKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2Rl
LT5hdHRyaWJ1dGVzfSkgewogICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+bmFtZTsKICAgICAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlczsKLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4Q3VzdG9tR2V0dGVy
In0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0KLSAgICAgICAgICAgIHx8ICRhdHRyRXh0
LT57IlY4Q3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0pIHsKKyAgICAgICAgaWYgKCgk
YXR0ckV4dC0+eyJWOEN1c3RvbUdldHRlciJ9IHx8ICRhdHRyRXh0LT57IkN1c3RvbUdldHRlciJ9
IHx8CisgICAgICAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJD
dXN0b20ifSkgJiYKKyAgICAgICAgICAgICEkYXR0ckV4dC0+eyJJbXBsZW1lbnRlZEJ5In0pIHsK
ICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKICAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+ICR7bmFtZX1BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYpOwogRU5ECiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKCRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3Vz
dG9tU2V0dGVyIn0KLSAgICAgICAgICAgIHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0gfHwgJGF0
dHJFeHQtPnsiQ3VzdG9tIn0pIHsKKyAgICAgICAgaWYgKCgkYXR0ckV4dC0+eyJWOEN1c3RvbVNl
dHRlciJ9IHx8ICRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8CisgICAgICAgICAgICAgJGF0
dHJFeHQtPnsiVjhDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSkgJiYKKyAgICAgICAg
ICAgICEkYXR0ckV4dC0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKICAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsIDw8RU5EKTsKICAgICBzdGF0aWMgdm9pZCAke25hbWV9QWNjZXNzb3JTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJik7CiBFTkQKQEAgLTg3MCw4ICs4NzIsMTYgQEAgRU5ECiAKICAg
ICBteSAkZ2V0dGVyU3RyaW5nOwogICAgIGlmICgkZ2V0dGVyU3RyaW5nVXNlc0ltcCkgewotICAg
ICAgICAkZ2V0dGVyU3RyaW5nID0gImltcC0+IiAuICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHBy
ZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7
Ci0gICAgICAgICRnZXR0ZXJTdHJpbmcgLj0gImVjIiBpZiAkdXNlRXhjZXB0aW9uczsKKyAgICAg
ICAgbXkgJGdldHRlckV4cHJlc3Npb25QcmVmaXggPSAkY29kZUdlbmVyYXRvci0+R2V0dGVyRXhw
cmVzc2lvblByZWZpeChcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUp
OworICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnki
fTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiKTsK
KyAgICAgICAgICAgICRnZXR0ZXJTdHJpbmcgPSAiJHtpbXBsZW1lbnRlZEJ5fTo6JHtnZXR0ZXJF
eHByZXNzaW9uUHJlZml4fWltcCI7CisgICAgICAgICAgICAkZ2V0dGVyU3RyaW5nIC49ICIsIGVj
IiBpZiAkdXNlRXhjZXB0aW9uczsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRnZXR0
ZXJTdHJpbmcgPSAiaW1wLT4kZ2V0dGVyRXhwcmVzc2lvblByZWZpeCI7CisgICAgICAgICAgICAk
Z2V0dGVyU3RyaW5nIC49ICJlYyIgaWYgJHVzZUV4Y2VwdGlvbnM7CisgICAgICAgIH0KICAgICAg
ICAgJGdldHRlclN0cmluZyAuPSAiKSI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgJGdldHRlclN0
cmluZyA9ICJpbXBJbnN0YW5jZSI7CkBAIC04ODAsMTYgKzg5MCwxNiBAQCBFTkQKICAgICBteSAk
cmVzdWx0OwogICAgIG15ICR3cmFwcGVyOwogCi0gICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiICYmICRkYXRhTm9kZS0+bmFtZSBlcSAiRE9N
V2luZG93IikgeworICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIkV2ZW50
TGlzdGVuZXIiICYmICRkYXRhTm9kZS0+bmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICghaW1wLT5kb2N1bWVudCgpKVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTtcbiIpOwogICAgIH0KIAogICAgIGlmICgkdXNlRXhjZXB0aW9ucykgewog
ICAgICAgICBpZiAoJG5hdGl2ZVR5cGUgPX4gL15WOFBhcmFtZXRlci8pIHsKLSAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICIgLiBDb252ZXJ0VG9WOFBhcmFtZXRlcigkYXR0
cmlidXRlLT5zaWduYXR1cmUsICRuYXRpdmVUeXBlLCAidiIsICRnZXR0ZXJTdHJpbmcpIC4gIjtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gQ29udmVy
dFRvVjhQYXJhbWV0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkbmF0aXZlVHlwZSwgInYiLCAk
Z2V0dGVyU3RyaW5nKSAuICI7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVUeXBlIHYgPSAkZ2V0dGVyU3RyaW5nO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVUeXBl
IHYgPSAkZ2V0dGVyU3RyaW5nO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgR2VuZXJhdGVTZXRET01FeGNlcHRpb24oIiAgICAiKSk7CiAgICAgICAgICRy
ZXN1bHQgPSAidiI7CkBAIC0xMTExLDcgKzExMjEsMTMgQEAgRU5ECiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBteSAkc2V0dGVyRXhwcmVzc2lvblByZWZpeCA9
ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAk
aW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgIGltcC0+JHNldHRlckV4cHJlc3Npb25QcmVmaXgkcmVzdWx0Iik7CisgICAg
ICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5
In07CisgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7aW1wbGVtZW50ZWRCeX0u
aCIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJHtpbXBs
ZW1lbnRlZEJ5fTo6JHtzZXR0ZXJFeHByZXNzaW9uUHJlZml4fWltcCwgJHJlc3VsdCIpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIGltcC0+JHNldHRlckV4cHJlc3Npb25QcmVmaXgkcmVzdWx0Iik7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiwgZWMiKSBp
ZiAkdXNlRXhjZXB0aW9uczsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIik7XG4i
KTsKQEAgLTE4NjIsNyArMTg3OCwxMSBAQCBzdWIgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmli
dXRlCiAgICAgICAgICIiOwogICAgIGlmICgkY3VzdG9tQWNjZXNzb3IgZXEgMSkgewogICAgICAg
ICAjIHVzZSB0aGUgbmFtaW5nIGNvbnZlbnNpb24sIGludGVyZmFjZSArIChjYXBpdGFsaXplKSBh
dHRyIG5hbWUKLSAgICAgICAgJGN1c3RvbUFjY2Vzc29yID0gJGludGVyZmFjZU5hbWUgLiAiOjoi
IC4gJGF0dHJOYW1lOworICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAkY3VzdG9tQWNj
ZXNzb3IgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In0gLiAiOjoiIC4gJGF0dHJOYW1lOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgJGN1c3RvbUFjY2Vzc29yID0gJGludGVyZmFjZU5hbWUgLiAiOjoiIC4gJGF0dHJOYW1l
OworICAgICAgICB9CiAgICAgfQogCiAgICAgbXkgJGdldHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCmluZGV4IDU3YTM5
MjgzYzNkOGU1MTI3Yjg0NTIxZTdhODNhYjc5Y2EzMzI5ZGEuLjdmNzY5NDNhZDI4YWNkNDJhNzUx
YTYxNzgwNWI2MWRjMjkwODIxMTEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbApAQCAtMzEsNiArMzEsNyBAQAogdXNlIHN0
cmljdDsKIAogdXNlIEZpbGU6OlBhdGg7Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgR2V0b3B0
OjpMb25nOwogdXNlIEN3ZDsKIApAQCAtNDcsNiArNDgsNyBAQCBteSAkcHJlZml4OwogbXkgJHBy
ZXByb2Nlc3NvcjsKIG15ICR3cml0ZURlcGVuZGVuY2llczsKIG15ICR2ZXJib3NlOworbXkgJHN1
cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlOwogCiBHZXRPcHRpb25zKCdpbmNsdWRlPXNAJyA9PiBc
QGlkbERpcmVjdG9yaWVzLAogICAgICAgICAgICAnb3V0cHV0RGlyPXMnID0+IFwkb3V0cHV0RGly
ZWN0b3J5LApAQCAtNTcsMTEgKzU5LDEyIEBAIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+IFxA
aWRsRGlyZWN0b3JpZXMsCiAgICAgICAgICAgICdwcmVmaXg9cycgPT4gXCRwcmVmaXgsCiAgICAg
ICAgICAgICdwcmVwcm9jZXNzb3I9cycgPT4gXCRwcmVwcm9jZXNzb3IsCiAgICAgICAgICAgICd2
ZXJib3NlJyA9PiBcJHZlcmJvc2UsCi0gICAgICAgICAgICd3cml0ZS1kZXBlbmRlbmNpZXMnID0+
IFwkd3JpdGVEZXBlbmRlbmNpZXMpOworICAgICAgICAgICAnd3JpdGUtZGVwZW5kZW5jaWVzJyA9
PiBcJHdyaXRlRGVwZW5kZW5jaWVzLAorICAgICAgICAgICAnc3VwcGxlbWVudGFsRGVwZW5kZW5j
eUZpbGU9cycgPT4gXCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSk7CiAKLW15ICRpZGxGaWxl
ID0gJEFSR1ZbMF07CitteSAkdGFyZ2V0SWRsRmlsZSA9ICRBUkdWWzBdOwogCi1kaWUoJ011c3Qg
c3BlY2lmeSBpbnB1dCBmaWxlLicpIHVubGVzcyBkZWZpbmVkKCRpZGxGaWxlKTsKK2RpZSgnTXVz
dCBzcGVjaWZ5IGlucHV0IGZpbGUuJykgdW5sZXNzIGRlZmluZWQoJHRhcmdldElkbEZpbGUpOwog
ZGllKCdNdXN0IHNwZWNpZnkgZ2VuZXJhdG9yJykgdW5sZXNzIGRlZmluZWQoJGdlbmVyYXRvcik7
CiBkaWUoJ011c3Qgc3BlY2lmeSBvdXRwdXQgZGlyZWN0b3J5LicpIHVubGVzcyBkZWZpbmVkKCRv
dXRwdXREaXJlY3RvcnkpOwogZGllKCdNdXN0IHNwZWNpZnkgZGVmaW5lcycpIHVubGVzcyBkZWZp
bmVkKCRkZWZpbmVzKTsKQEAgLTY5LDE1ICs3Miw4MCBAQCBkaWUoJ011c3Qgc3BlY2lmeSBkZWZp
bmVzJykgdW5sZXNzIGRlZmluZWQoJGRlZmluZXMpOwogaWYgKCEkb3V0cHV0SGVhZGVyc0RpcmVj
dG9yeSkgewogICAgICRvdXRwdXRIZWFkZXJzRGlyZWN0b3J5ID0gJG91dHB1dERpcmVjdG9yeTsK
IH0KKyRkZWZpbmVzID1+IHMvXlxzK3xccyskLy9nOyAjIHRyaW0gd2hpdGVzcGFjZQorJHRhcmdl
dElkbEZpbGUgPSBDd2Q6OnJlYWxwYXRoKCR0YXJnZXRJZGxGaWxlKTsKIGlmICgkdmVyYm9zZSkg
ewotICAgIHByaW50ICIkZ2VuZXJhdG9yOiAkaWRsRmlsZVxuIjsKKyAgICBwcmludCAiJGdlbmVy
YXRvcjogJHRhcmdldElkbEZpbGVcbiI7Cit9CitteSAkdGFyZ2V0SW50ZXJmYWNlTmFtZSA9IGZp
bGVwYXJzZShiYXNlbmFtZSgkdGFyZ2V0SWRsRmlsZSksICIuaWRsIik7CisKK215ICRpZGxGb3Vu
ZCA9IDA7CitteSBAc3VwcGxlbWVudGVkSWRsRmlsZXM7CitpZiAoJHN1cHBsZW1lbnRhbERlcGVu
ZGVuY3lGaWxlKSB7CisgICAgIyBUaGUgZm9ybWF0IG9mIGEgc3VwcGxlbWVudGFsIGRlcGVuZGVu
Y3kgZmlsZToKKyAgICAjCisgICAgIyBET01XaW5kb3cuaWRsIFAuaWRsIFEuaWRsIFIuaWRsCisg
ICAgIyBEb2N1bWVudC5pZGwgUy5pZGwKKyAgICAjIEV2ZW50LmlkbAorICAgICMgLi4uCisgICAg
IworICAgICMgVGhlIGFib3ZlIGluZGljYXRlcyB0aGF0IERPTVdpbmRvdy5pZGwgaXMgc3VwcGxl
bWVudGVkIGJ5IFAuaWRsLCBRLmlkbCBhbmQgUi5pZGwsCisgICAgIyBEb2N1bWVudC5pZGwgaXMg
c3VwcGxlbWVudGVkIGJ5IFMuaWRsLCBhbmQgRXZlbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBu
byBJRExzLgorICAgICMgVGhlIElETCB0aGF0IHN1cHBsZW1lbnRzIGFub3RoZXIgSURMIChlLmcu
IFAuaWRsKSBuZXZlciBhcHBlYXJzIGluIHRoZSBkZXBlbmRlbmN5IGZpbGUuCisgICAgb3BlbiBG
SCwgIjwgJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlIiBvciBkaWUgIkNhbm5vdCBvcGVuICRz
dXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZVxuIjsKKyAgICB3aGlsZSAobXkgJGxpbmUgPSA8Rkg+
KSB7CisgICAgICAgIG15ICgkaWRsRmlsZSwgQGZvbGxvd2luZ0lkbEZpbGVzKSA9IHNwbGl0KC9c
cysvLCAkbGluZSk7CisgICAgICAgIGlmICgkaWRsRmlsZSBhbmQgJGlkbEZpbGUgZXEgJHRhcmdl
dElkbEZpbGUpIHsKKyAgICAgICAgICAgICRpZGxGb3VuZCA9IDE7CisgICAgICAgICAgICBAc3Vw
cGxlbWVudGVkSWRsRmlsZXMgPSBAZm9sbG93aW5nSWRsRmlsZXM7CisgICAgICAgIH0KKyAgICB9
CisgICAgY2xvc2UgRkg7CisKKyAgICBpZiAoISRpZGxGb3VuZCkgeworICAgICAgICBpZiAoJHZl
cmJvc2UpIHsKKyAgICAgICAgICAgIHByaW50ICIkdGFyZ2V0SWRsRmlsZSBpcyBzdXBwbGVtZW50
aW5nIGFub3RoZXIgSURMIGZpbGUsIGFuZCB0aHVzIC5oIGFuZCAuY3BwIGZvciAkdGFyZ2V0SWRs
RmlsZSBhcmUgbm90IGdlbmVyYXRlZC5cbiI7CisgICAgICAgIH0KKyAgICAgICAgZXhpdCAwOwor
ICAgIH0KIH0KLSRkZWZpbmVzID1+IHMvXlxzK3xccyskLy9nOyAjIHRyaW0gd2hpdGVzcGFjZQog
Ci0jIFBhcnNlIHRoZSBnaXZlbiBJREwgZmlsZS4KLW15ICRwYXJzZXIgPSBJRExQYXJzZXItPm5l
dyghJHZlcmJvc2UpOwotbXkgJGRvY3VtZW50ID0gJHBhcnNlci0+UGFyc2UoJGlkbEZpbGUsICRk
ZWZpbmVzLCAkcHJlcHJvY2Vzc29yKTsKKyMgUGFyc2UgdGhlIHRhcmdldCBJREwgZmlsZS4KK215
ICR0YXJnZXRQYXJzZXIgPSBJRExQYXJzZXItPm5ldyghJHZlcmJvc2UpOworbXkgJHRhcmdldERv
Y3VtZW50ID0gJHRhcmdldFBhcnNlci0+UGFyc2UoJHRhcmdldElkbEZpbGUsICRkZWZpbmVzLCAk
cHJlcHJvY2Vzc29yKTsKKworZm9yZWFjaCBteSAkaWRsRmlsZSAoQHN1cHBsZW1lbnRlZElkbEZp
bGVzKSB7CisgICAgbmV4dCBpZiAkaWRsRmlsZSBlcSAkdGFyZ2V0SWRsRmlsZTsKKworICAgIG15
ICRpbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNlKGJhc2VuYW1lKCRpZGxGaWxlKSwgIi5pZGwiKTsK
KyAgICBteSAkcGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKKyAgICBteSAkZG9j
dW1lbnQgPSAkcGFyc2VyLT5QYXJzZSgkaWRsRmlsZSwgJGRlZmluZXMsICRwcmVwcm9jZXNzb3Ip
OworCisgICAgZm9yZWFjaCBteSAkZGF0YU5vZGUgKEB7JGRvY3VtZW50LT5jbGFzc2VzfSkgewor
ICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3VwcGxlbWVudGFs
In0gYW5kICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN1cHBsZW1lbnRhbCJ9IGVx
ICR0YXJnZXRJbnRlcmZhY2VOYW1lKSB7CisgICAgICAgICAgICBteSAkdGFyZ2V0RGF0YU5vZGU7
CisgICAgICAgICAgICBmb3JlYWNoIG15ICRjbGFzcyAoQHskdGFyZ2V0RG9jdW1lbnQtPmNsYXNz
ZXN9KSB7CisgICAgICAgICAgICAgICAgaWYgKCRjbGFzcy0+bmFtZSBlcSAkdGFyZ2V0SW50ZXJm
YWNlTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0RGF0YU5vZGUgPSAkY2xhc3M7
CisgICAgICAgICAgICAgICAgICAgIGxhc3Q7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZGllICJOb3QgZm91bmQgYW4gaW50ZXJmYWNlICR7dGFyZ2V0SW50
ZXJmYWNlTmFtZX0gaW4gJHt0YXJnZXRJbnRlcmZhY2VOYW1lfS5pZGwuIiB1bmxlc3MgZGVmaW5l
ZCAkdGFyZ2V0RGF0YU5vZGU7CisKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAo
QHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICAgICAgIyBBZGQgaW50ZXJm
YWNlLXdpZGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNoIGF0dHJpYnV0ZS4KKyAgICAgICAg
ICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXskZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAo
JGV4dGVuZGVkQXR0cmlidXRlTmFtZSBlcSAiU3VwcGxlbWVudGFsIik7CisgICAgICAgICAgICAg
ICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVu
ZGVkQXR0cmlidXRlTmFtZX0gPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRl
bmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAgICAgICAgICAjIFJlY29yZCB0aGF0IHRo
aXMgYXR0cmlidXRlIGlzIGltcGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgorICAgICAgICAg
ICAgICAgICAgICAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJ
bXBsZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgcHVzaChAeyR0YXJnZXREYXRhTm9kZS0+YXR0cmlidXRlc30sICRhdHRyaWJ1
dGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQogCi0jIEdlbmVyYXRlIGRl
c2lyZWQgb3V0cHV0IGZvciBnaXZlbiBJREwgZmlsZS4KKyMgR2VuZXJhdGUgZGVzaXJlZCBvdXRw
dXQgZm9yIHRoZSB0YXJnZXQgSURMIGZpbGUuCiBteSAkY29kZUdlbiA9IENvZGVHZW5lcmF0b3It
Pm5ldyhcQGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0b3J5LCAkb3V0
cHV0SGVhZGVyc0RpcmVjdG9yeSwgMCwgJHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5kZW5jaWVz
LCAkdmVyYm9zZSk7Ci0kY29kZUdlbi0+UHJvY2Vzc0RvY3VtZW50KCRkb2N1bWVudCwgJGRlZmlu
ZXMpOworJGNvZGVHZW4tPlByb2Nlc3NEb2N1bWVudCgkdGFyZ2V0RG9jdW1lbnQsICRkZWZpbmVz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcmVzb2x2ZS1z
dXBwbGVtZW50YWwucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Jlc29sdmUt
c3VwcGxlbWVudGFsLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhYjE5MGQ1MzJmZmQwZmFmNWYxZDZhZmZlODc0
M2E3YWEwODkzY2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Jlc29sdmUtc3VwcGxlbWVudGFsLnBsCkBAIC0wLDAgKzEsOTMgQEAKKyMhL3Vzci9i
aW4vcGVybCAtdworIworIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIworCit1c2Ug
c3RyaWN0OworCit1c2UgRmlsZTo6QmFzZW5hbWU7Cit1c2UgR2V0b3B0OjpMb25nOwordXNlIEN3
ZDsKKwordXNlIElETFBhcnNlcjsKKworbXkgJGRlZmluZXM7CitteSAkcHJlcHJvY2Vzc29yOwor
bXkgJHZlcmJvc2U7CitteSAkaWRsRmlsZXNMaXN0OworbXkgJHN1cHBsZW1lbnRhbERlcGVuZGVu
Y3lGaWxlOworCitHZXRPcHRpb25zKCdkZWZpbmVzPXMnID0+IFwkZGVmaW5lcywKKyAgICAgICAg
ICAgJ3ByZXByb2Nlc3Nvcj1zJyA9PiBcJHByZXByb2Nlc3NvciwKKyAgICAgICAgICAgJ3ZlcmJv
c2UnID0+IFwkdmVyYm9zZSwKKyAgICAgICAgICAgJ2lkbEZpbGVzTGlzdD1zJyA9PiBcJGlkbEZp
bGVzTGlzdCwKKyAgICAgICAgICAgJ3N1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlPXMnID0+IFwk
c3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOworCitkaWUoJ011c3Qgc3BlY2lmeSAjZGVmaW5l
IG1hY3JvcyB1c2luZyAtLWRlZmluZXMuJykgdW5sZXNzIGRlZmluZWQoJGRlZmluZXMpOworZGll
KCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS1zdXBwbGVtZW50YWxEZXBlbmRl
bmN5RmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOwor
ZGllKCdNdXN0IHNwZWNpZnkgdGhlIGZpbGUgbGlzdGluZyBhbGwgSURMcyB1c2luZyAtLWlkbEZp
bGVzTGlzdC4nKSB1bmxlc3MgZGVmaW5lZCgkaWRsRmlsZXNMaXN0KTsKKworaWYgKCR2ZXJib3Nl
KSB7CisgICAgcHJpbnQgIlJlc29sdmluZyBbU3VwcGxlbWVudGFsPVhYWF0gZGVwZW5kZW5jaWVz
IGluIGFsbCBJREwgZmlsZXMuXG4iOworfQorCitvcGVuIEZILCAiPCAkaWRsRmlsZXNMaXN0IiBv
ciBkaWUgIkNhbm5vdCBvcGVuICRpZGxGaWxlc0xpc3RcbiI7CitteSBAaWRsRmlsZXMgPSA8Rkg+
OworY2hvbXAoQGlkbEZpbGVzKTsKK2Nsb3NlIEZIOworCisjIFBhcnNlIGFsbCBJREwgZmlsZXMu
CitteSAlZG9jdW1lbnRzOworbXkgJWludGVyZmFjZU5hbWVUb0lkbEZpbGU7Citmb3JlYWNoIG15
ICRpZGxGaWxlIChAaWRsRmlsZXMpIHsKKyAgICBteSAkZnVsbFBhdGggPSBDd2Q6OnJlYWxwYXRo
KCRpZGxGaWxlKTsKKyAgICBteSAkcGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsK
KyAgICAkZG9jdW1lbnRzeyRmdWxsUGF0aH0gPSAkcGFyc2VyLT5QYXJzZSgkaWRsRmlsZSwgJGRl
ZmluZXMsICRwcmVwcm9jZXNzb3IpOworICAgICRpbnRlcmZhY2VOYW1lVG9JZGxGaWxle2ZpbGVw
YXJzZShiYXNlbmFtZSgkaWRsRmlsZSksICIuaWRsIil9ID0gJGZ1bGxQYXRoOworfQorCisjIFJl
c29sdmVzIFtTdXBwbGVtZW50YWw9WFhYXSBkZXBlbmRlbmNpZXMuCitteSAlc3VwcGxlbWVudGFs
czsKK2ZvcmVhY2ggbXkgJGlkbEZpbGUgKGtleXMgJWRvY3VtZW50cykgeworICAgICRzdXBwbGVt
ZW50YWxzeyRpZGxGaWxlfSA9IFtdOworICAgIGZvcmVhY2ggbXkgJGRhdGFOb2RlIChAeyRkb2N1
bWVudHN7JGlkbEZpbGV9LT5jbGFzc2VzfSkgeworICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiU3VwcGxlbWVudGFsIn0pIHsKKyAgICAgICAgICAgIG15ICR0YXJn
ZXRJZGxGaWxlID0gJGludGVyZmFjZU5hbWVUb0lkbEZpbGV7JGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiU3VwcGxlbWVudGFsIn19OworICAgICAgICAgICAgcHVzaChAeyRzdXBwbGVt
ZW50YWxzeyR0YXJnZXRJZGxGaWxlfX0sICRpZGxGaWxlKTsKKyAgICAgICAgICAgICMgVHJlYXRz
IGFzIGlmIHRoaXMgSURMIGZpbGUgZG9lcyBub3QgZXhpc3QuCisgICAgICAgICAgICBkZWxldGUg
JHN1cHBsZW1lbnRhbHN7JGlkbEZpbGV9OworICAgICAgICB9CisgICAgfQorfQorCisjIE91dHB1
dHMgdGhlIGRlcGVuZGVuY3kuCisjIFRoZSBmb3JtYXQgb2YgYSBzdXBwbGVtZW50YWwgZGVwZW5k
ZW5jeSBmaWxlOgorIworIyBET01XaW5kb3cuaWRsIFAuaWRsIFEuaWRsIFIuaWRsCisjIERvY3Vt
ZW50LmlkbCBTLmlkbAorIyBFdmVudC5pZGwKKyMgLi4uCisjCisjIFRoZSBhYm92ZSBpbmRpY2F0
ZXMgdGhhdCBET01XaW5kb3cuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBQLmlkbCwgUS5pZGwgYW5k
IFIuaWRsLAorIyBEb2N1bWVudC5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IFMuaWRsLCBhbmQgRXZl
bnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBubyBJRExzLgorIyBUaGUgSURMIHRoYXQgc3VwcGxl
bWVudHMgYW5vdGhlciBJREwgKGUuZy4gUC5pZGwpIG5ldmVyIGFwcGVhcnMgaW4gdGhlIGRlcGVu
ZGVuY3kgZmlsZS4KK29wZW4gRkgsICI+ICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSIgb3Ig
ZGllICJDYW5ub3Qgb3BlbiAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGVcbiI7Citmb3JlYWNo
IG15ICRpZGxGaWxlIChzb3J0IGtleXMgJXN1cHBsZW1lbnRhbHMpIHsKKyAgICBwcmludCBGSCAk
aWRsRmlsZSwgIiBAeyRzdXBwbGVtZW50YWxzeyRpZGxGaWxlfX1cbiI7Cit9CitjbG9zZSBGSDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2Vi
RE9NVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDdmYTRhZjM1MjkyNjdiYTcyYjBh
OTQxMDA3OGI2ZjUwMGQ1NzliM2QuLjk0ZTk0OTM3ZDZjZmQ3YTAzMjFlYzFhYmUzY2ExNzkxMTA1
ZWE0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9D
UFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmNwcApAQCAtMjQsOCArMjQsMTEg
QEAKIAogI2luY2x1ZGUgIldlYkRPTVRlc3RJbnRlcmZhY2UuaCIKIAorI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgi
CiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFuZGxlci5oIgorI2luY2x1ZGUgInd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKQEAgLTc0LDYgKzc3LDM0IEBAIFdlYkRPTVRlc3RJbnRlcmZhY2U6On5XZWJET01U
ZXN0SW50ZXJmYWNlKCkKICAgICBtX2ltcGwgPSAwOwogfQogCisjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCitXZWJET01TdHJpbmcgV2ViRE9NVGVzdEludGVy
ZmFjZTo6c3RyMSgpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBX
ZWJET01TdHJpbmcoKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXVEY6OlN0cmlu
ZyY+KGltcGwoKS0+c3RyMSgpKTsKK30KKworI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCitXZWJET01TdHJpbmcgV2ViRE9NVGVzdEludGVyZmFj
ZTo6c3RyMigpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBXZWJE
T01TdHJpbmcoKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXVEY6OlN0cmluZyY+
KGltcGwoKS0+c3RyMigpKTsKK30KKwordm9pZCBXZWJET01UZXN0SW50ZXJmYWNlOjpzZXRTdHIy
KGNvbnN0IFdlYkRPTVN0cmluZyYgbmV3U3RyMikKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaW1wbCgpLT5zZXRTdHIyKG5ld1N0cjIpOworfQorCisjZW5kaWYK
IFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIHRvV2ViQ29yZShjb25zdCBXZWJET01UZXN0SW50ZXJm
YWNlJiB3cmFwcGVyKQogewogICAgIHJldHVybiB3cmFwcGVyLmltcGwoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVy
ZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0SW50ZXJmYWNlLmgKaW5kZXggNWRiNWRiOGFlMDhlNWFlY2M5MmFjYWY3ZDY3MjA2ZjliOGQz
N2M5Zi4uNWFhMDNjNzk1MDk4YzI3NGFmNjcwYzM0NzA1MTg3ODJiYjE2ZTE2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0SW50ZXJmYWNlLmgKQEAgLTQxLDYgKzQxLDEzIEBAIHB1YmxpYzoKICAgICBXZWJE
T01UZXN0SW50ZXJmYWNlJiBvcGVyYXRvcj0oY29uc3QgV2ViRE9NVGVzdEludGVyZmFjZSYpOwog
ICAgIHZpcnR1YWwgfldlYkRPTVRlc3RJbnRlcmZhY2UoKTsKIAorI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIFdlYkRPTVN0cmluZyBzdHIxKCkgY29u
c3Q7CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKyAgICBXZWJET01TdHJpbmcgc3RyMigpIGNvbnN0OworICAgIHZvaWQgc2V0U3RyMihjb25z
dCBXZWJET01TdHJpbmcmKTsKKyNlbmRpZgogCiAgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSog
aW1wbCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2Uu
Y3BwCmluZGV4IDcwODZjODBhZmU2NzFhNDI3Y2I2YWU5OGMyYjFkMTcwOTYzNTE0OWEuLmJmNzIx
OWM1MThmNzIxYmM4MDkzZDZmODljMzA2ZjkxOGI4YmI0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCkBAIC01MSw2ICs1MSw0NyBAQCBXZWJLaXRET01U
ZXN0SW50ZXJmYWNlKiBraXQoV2ViQ29yZTo6VGVzdEludGVyZmFjZSogb2JqKQogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0IC8vCiAKK2djaGFyKgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFj
ZV9nZXRfc3RyMShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmKQoreworI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHNlbGYsIDApOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
KyAgICBnY2hhciogcmVzID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5zdHIxKCkpOworICAg
IHJldHVybiByZXM7CisjZWxzZQorICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLworfQorCitnY2hhcioKK3dlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2Vs
ZikKK3sKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSAqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2NoYXIqIHJlcyA9IGNvbnZlcnRUb1VURjhTdHJpbmco
aXRlbS0+c3RyMigpKTsKKyAgICByZXR1cm4gcmVzOworI2Vsc2UKKyAgICByZXR1cm4gTlVMTDsK
KyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8K
K30KKwordm9pZAord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfc3RyMihXZWJLaXRET01U
ZXN0SW50ZXJmYWNlKiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCit7CisjaWYgRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgZ19yZXR1cm5faWZfZmFpbChz
ZWxmKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2Vi
Q29yZTo6VGVzdEludGVyZmFjZSAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19y
ZXR1cm5faWZfZmFpbCh2YWx1ZSk7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkX3ZhbHVlID0g
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKKyAgICBpdGVtLT5zZXRTdHIyKGNvbnZlcnRl
ZF92YWx1ZSk7CisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpICovCit9CisKIAogR19ERUZJTkVfVFlQRShXZWJLaXRET01UZXN0SW50ZXJmYWNlLCB3
ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlLCBXRUJLSVRfVFlQRV9ET01fT0JKRUNUKQogCkBAIC02
OSw2ICsxMTAsMTIgQEAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29yZShXZWJLaXRET01UZXN0
SW50ZXJmYWNlKiByZXF1ZXN0KQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiBlbnVtIHsKICAgICBQ
Uk9QXzAsCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisg
ICAgUFJPUF9TVFIxLAorI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKSAqLworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQorICAgIFBST1BfU1RSMiwKKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikgKi8KIH07CiAKIApAQCAtOTEsNyArMTM4LDE2IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQog
c3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfcHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwc3BlYykKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiA9IFdFQktJVF9ET01fVEVTVF9JTlRFUkZB
Q0Uob2JqZWN0KTsKKyAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBjb3JlU2VsZiA9IFdlYktp
dDo6Y29yZShzZWxmKTsKICAgICBzd2l0Y2ggKHByb3BfaWQpIHsKKyNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICBjYXNlIFBST1BfU1RSMjoKKyAgICB7
CisgICAgICAgIGNvcmVTZWxmLT5zZXRTdHIyKFdURjo6U3RyaW5nOjpmcm9tVVRGOChnX3ZhbHVl
X2dldF9zdHJpbmcodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyNlbmRpZiAvKiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KICAgICBkZWZhdWx0
OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
X2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTAyLDcgKzE1OCwyMyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BfaQogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9n
ZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwc3BlYykKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiA9IFdFQktJVF9ET01f
VEVTVF9JTlRFUkZBQ0Uob2JqZWN0KTsKKyAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBjb3Jl
U2VsZiA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBzd2l0Y2ggKHByb3BfaWQpIHsKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICBjYXNlIFBST1Bf
U1RSMToKKyAgICB7CisgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRU
b1VURjhTdHJpbmcoY29yZVNlbGYtPnN0cjEoKSkpOworICAgICAgICBicmVhazsKKyAgICB9Cisj
ZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgY2FzZSBQ
Uk9QX1NUUjI6CisgICAgeworICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252
ZXJ0VG9VVEY4U3RyaW5nKGNvcmVTZWxmLT5zdHIyKCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAq
LwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9J
RChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMjUsNiArMTk3
LDI0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfY2xhc3NfaW5pdChX
ZWJLaXRET01UZXN0SW50ZXJmYWNlQ2xhc3MqIHJlCiAgICAgZ29iamVjdENsYXNzLT5nZXRfcHJv
cGVydHkgPSB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9wcm9wZXJ0eTsKICAgICBnb2Jq
ZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0gd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9jb25zdHJ1
Y3RlZDsKIAorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9TVFIxLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygic3RyMSIsIC8qIG5hbWUg
Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInRlc3RfaW50ZXJmYWNlX3N0cjEiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
cmVhZC1vbmx5ICBnY2hhciogVGVzdEludGVyZmFjZS5zdHIxIiwgLyogbG9uZ2VyIC0gY291bGQg
ZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLCAvKiBkZWZhdWx0ICov
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQorICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z29iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9T
VFIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0
cmluZygic3RyMiIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RfaW50ZXJmYWNlX3N0cjIiLCAvKiBzaG9y
dCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAicmVhZC13cml0ZSAgZ2NoYXIqIFRlc3RJbnRlcmZhY2Uuc3Ry
MiIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAq
LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiIiwgLyogZGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisjZW5k
aWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCiAKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5oCmluZGV4IGY5YWY4NjZh
YTAxZjhkY2UyMzQ5MzM4MzNmMGFhYmNiN2EyZDJhNGQuLjdjMzY1MDU4YjliODQ0MTJiZWI3YmRi
Yzc1OGQ3MDU1YzQwZWFjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJm
YWNlLmgKQEAgLTQ2LDYgKzQ2LDM3IEBAIHN0cnVjdCBfV2ViS2l0RE9NVGVzdEludGVyZmFjZUNs
YXNzIHsKIFdFQktJVF9BUEkgR1R5cGUKIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3R5
cGUgKHZvaWQpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjE6
CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdEludGVyZmFjZQorICoKKyAqIFJldHVybnM6Cisg
KgorKiovCitXRUJLSVRfQVBJIGdjaGFyKgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRf
c3RyMShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9t
X3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RJbnRl
cmZhY2UKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnY2hhcioKK3dlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2Vs
Zik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfc3RyMjoKKyAqIEBz
ZWxmOiBBICNXZWJLaXRET01UZXN0SW50ZXJmYWNlCisgKiBAdmFsdWU6IEEgI2djaGFyCisgKgor
ICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X2lu
dGVyZmFjZV9zZXRfc3RyMihXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmLCBjb25zdCBnY2hh
ciogdmFsdWUpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYgLyogV2ViS2l0RE9NVGVzdEludGVy
ZmFjZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDg1ZDgxMDBlMjc3ZjViMDMwM2Yx
NDRhZmRkYjNlZThiNGJmNGI2YTQuLjA5ZDYzZGY4Mjc0OTkxNDcyNThlM2EwMzhiMzI2N2M5NzJi
YzgzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC0yNyw5ICsyNywxNSBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJUZXN0SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5oIgogI2luY2x1
ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDEyICs1NiwyMSBAQCBBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKEpTVGVzdEludGVyZmFjZSk7CiAKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VUYWJsZVZhbHVlc1tdID0KIHsKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICB7ICJzdHIxIiwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZVN0cjEpLCAoaW50cHRyX3QpMCBUSFVOS19HRU5FUkFU
T1IoMCkgSU5UUklOU0lDKERGRzo6Tm9JbnRyaW5zaWMpIH0sCisjZW5kaWYKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICB7ICJzdHIyIiwgRG9udERl
bGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RJbnRlcmZhY2VTdHIyKSwgKGludHB0cl90KXNldEpTVGVzdEludGVyZmFjZVN0cjIgVEhV
TktfR0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9LAorI2VuZGlmCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgeyAic3Ry
MyIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlU3RyMyksIChpbnRwdHJfdClzZXRKU1Rlc3RJbnRlcmZh
Y2VTdHIzIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZHOjpOb0ludHJpbnNpYykgfSwK
KyNlbmRpZgogICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0gfCBSZWFkT25seSwgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMo
REZHOjpOb0ludHJpbnNpYykgfSwKICAgICB7IDAsIDAsIDAsIDAgVEhVTktfR0VORVJBVE9SKDAp
IElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9CiB9OwogCiAjdW5kZWYgVEhVTktfR0VORVJB
VE9SCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEludGVyZmFjZVRhYmxlID0geyAyLCAx
LCBKU1Rlc3RJbnRlcmZhY2VUYWJsZVZhbHVlcywgMCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSBKU1Rlc3RJbnRlcmZhY2VUYWJsZSA9IHsgOCwgNywgSlNUZXN0SW50ZXJmYWNlVGFibGVWYWx1
ZXMsIDAgfTsKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAjaWYgRU5BQkxFKEpJ
VCkKICNkZWZpbmUgVEhVTktfR0VORVJBVE9SKGdlbmVyYXRvcikgLCBnZW5lcmF0b3IKQEAgLTE4
NywxMiArMjAyLDcwIEBAIGJvb2wgSlNUZXN0SW50ZXJmYWNlOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIGdldFN0
YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RJbnRlcmZhY2UsIEJhc2U+KGV4ZWMsICZKU1Rlc3RJ
bnRlcmZhY2VUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0K
IAorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VTdHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCit7CisgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0g
c3RhdGljX2Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CisgICAgVGVzdEludGVyZmFjZSogaW1wID0gc3RhdGljX2Nhc3Q8
VGVzdEludGVyZmFjZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZyhleGVjLCBUZXN0U3VwcGxlbWVudGFsOjpzdHIxKGltcCkpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCitKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN0cjIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK3sKKyAgICBKU1Rlc3RJ
bnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihhc09i
amVjdChzbG90QmFzZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBUZXN0SW50ZXJm
YWNlKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0SW50ZXJmYWNlKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIFRlc3RTdXBwbGVtZW50YWw6
OnN0cjIoaW1wKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmCisKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKK0pTVmFsdWUganNUZXN0SW50
ZXJmYWNlU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50
aWZpZXImKQoreworICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0
PEpTVGVzdEludGVyZmFjZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgcmV0dXJuIFRlc3RT
dXBwbGVtZW50YWw6OnN0cjMoY2FzdGVkVGhpcywgZXhlYyk7Cit9CisKKyNlbmRpZgorCiBKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBkb21P
YmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihhc09iamVjdChzbG90QmFzZSkp
OwogICAgIHJldHVybiBKU1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKGV4ZWMsIGRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCkpOwogfQogCit2b2lkIEpTVGVzdEludGVyZmFjZTo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU1Rlc3RJ
bnRlcmZhY2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBs
b29rdXBQdXQ8SlNUZXN0SW50ZXJmYWNlLCBCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCAmSlNUZXN0SW50ZXJmYWNlVGFibGUsIHRoaXNPYmplY3QsIHNsb3QpOworfQorCisjaWYgRU5B
QkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCit2b2lkIHNldEpTVGVzdElu
dGVyZmFjZVN0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0SW50ZXJmYWNlKiBpbXAg
PSBzdGF0aWNfY2FzdDxUZXN0SW50ZXJmYWNlKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBU
ZXN0U3VwcGxlbWVudGFsOjpzZXRTdHIyKGltcCwgdXN0cmluZ1RvU3RyaW5nKHZhbHVlLmlzRW1w
dHkoKSA/IFVTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpKSk7Cit9CisKKyNlbmRpZgor
CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCit2b2lkIHNl
dEpTVGVzdEludGVyZmFjZVN0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdHIzKGV4ZWMs
IHN0YXRpY19jYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNPYmplY3QpLCB2YWx1ZSk7Cit9CisK
KyNlbmRpZgorCiBKU1ZhbHVlIEpTVGVzdEludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4oZXhlYywgc3RhdGlj
X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
aAppbmRleCBiYzJiMDY3YWQzYTBmYzdiMWZhOGYxZjdiZGE5NzI1ZDFhMWQ4MjAzLi5mYmQ1Njg4
MWE0MGRhYjU2ZTA1YTQ1Nzk2M2U5ZDA4ZjA3ZDQ2NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCkBA
IC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRl
UHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpT
Q2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgY29u
c3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTUyLDYg
KzUzLDggQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICAv
LyBDdXN0b20gYXR0cmlidXRlcwogICAgIFRlc3RJbnRlcmZhY2UqIGltcGwoKSBjb25zdCB7IHJl
dHVybiBtX2ltcGw7IH0KICAgICB2b2lkIHJlbGVhc2VJbXBsKCkgeyBtX2ltcGwtPmRlcmVmKCk7
IG1faW1wbCA9IDA7IH0KIApAQCAtMTM0LDYgKzEzNywxMSBAQCBwcm90ZWN0ZWQ6CiAKIC8vIEF0
dHJpYnV0ZXMKIAorSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN0cjEoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVN0cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYpOwordm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdHIyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlND
OjpJZGVudGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdEludGVyZmFjZVN0cjMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJ
bnRlcmZhY2UuaAppbmRleCBkYjdiZTI4Y2I5YWQ0MDhjZDUyZDg4ZjcwYjE4OGRkZDgzODI1Zjky
Li4yMzQyNTliNDU0MDljYTMzZTZhNzIyZDkyNzMxMGE4NmI1NTU0MzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEludGVyZmFjZS5oCkBAIC0yOCw3ICsyOCwyMCBAQAogCiAjaWYgV0VCS0lUX1ZFUlNJT05fTUFY
X0FMTE9XRUQgPj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCiAKK0BjbGFzcyBOU1N0cmluZzsKKwog
QGludGVyZmFjZSBET01UZXN0SW50ZXJmYWNlIDogRE9NT2JqZWN0CisjaWYgRU5BQkxFKENvbmRp
dGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChOU1N0cmluZyAqKXN0cjE7CisjZW5k
aWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKy0gKE5T
U3RyaW5nICopc3RyMjsKKy0gKHZvaWQpc2V0U3RyMjooTlNTdHJpbmcgKiluZXdTdHIyOworI2Vu
ZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChO
U1N0cmluZyAqKXN0cjM7CistICh2b2lkKXNldFN0cjM6KE5TU3RyaW5nICopbmV3U3RyMzsKKyNl
bmRpZgogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCmluZGV4IGFiNTkz
MzMwYzg3MjBjYWU4ZTFmYmM0YTFiZjEzNDQzYzU4YjkwZTguLjBhYzQ4MDcyMmQzMDMxMzMyMmU0
NzIyNzE4OTI1MWRlZTBiNTYyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQpAQCAtNDEs
NiArNDEsNyBAQAogI2ltcG9ydCAiRE9NVGVzdEludGVyZmFjZUludGVybmFsLmgiCiAjaW1wb3J0
ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgi
CisjaW1wb3J0ICJLVVJMLmgiCiAjaW1wb3J0ICJUZXN0SW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJU
aHJlYWRDaGVjay5oIgogI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKQEAgLTY4LDYgKzY5
LDQyIEBACiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0KIAorI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorLSAoTlNTdHJpbmcgKilzdHIxCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5zdHIx
KCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQorLSAoTlNTdHJpbmcgKilzdHIyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5zdHIyKCk7Cit9CisKKy0gKHZvaWQp
c2V0U3RyMjooTlNTdHJpbmcgKiluZXdTdHIyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnNldFN0cjIobmV3U3RyMik7Cit9CisjZW5kaWYK
KworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorLSAoTlNT
dHJpbmcgKilzdHIzCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIHJldHVybiBJTVBMLT5zdHIzKCk7Cit9CisKKy0gKHZvaWQpc2V0U3RyMzooTlNTdHJp
bmcgKiluZXdTdHIzCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIElNUEwtPnNldFN0cjMobmV3U3RyMyk7Cit9CisjZW5kaWYKKwogQGVuZAogCiBXZWJD
b3JlOjpUZXN0SW50ZXJmYWNlKiBjb3JlKERPTVRlc3RJbnRlcmZhY2UgKndyYXBwZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1l
bnRhbC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBs
ZW1lbnRhbC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY2ZmRkNTFhOGQ2ZTc4Y2YzMzIwZWFlZWYxODZiOWNm
YjI2ZmYzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0U3VwcGxlbWVudGFsLmlkbApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtc3RyQXJnLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRXN0ckFyZywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8vIFRoaXMgSURMIGZpbGUgaXMgZm9yIHRlc3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJh
dG9yIGFuZCBmb3IgdHJhY2tpbmcKKy8vIGNoYW5nZXMgaW4gaXRzIG91cHV0LgorbW9kdWxlIHRl
c3QgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUNvbmRpdGlvbjExfENv
bmRpdGlvbjEyLAorICAgICAgICBTdXBwbGVtZW50YWw9VGVzdEludGVyZmFjZQorICAgIF0gVGVz
dFN1cHBsZW1lbnRhbCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc3Ry
MTsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBzdHIyOworICAgICAgICBhdHRyaWJ1dGUg
W0N1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVyXSBET01TdHJpbmcgc3RyMzsKKyAgICB9OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA1YjQ1YTZkZjMzYzE2OTJhM2FmN2Q0NTA1NzY1MzJl
YzFhODZkM2Q5Li4xZGM5NjQ4MDU1MjNkZmEwZDVhZjRkNmM1N2JhZmNlNTUzNmNhNzc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRl
ICJUZXN0U3VwcGxlbWVudGFsLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAi
VjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKQEAgLTQxLDgg
KzQyLDU4IEBAIG5hbWVzcGFjZSBUZXN0SW50ZXJmYWNlSW50ZXJuYWwgewogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBz
dHIxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN0cjEu
X2dldCIpOworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6
OnN0cjEoaW1wKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cjJBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZhY2Uuc3RyMi5fZ2V0Iik7CisgICAgVGVz
dEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKKyAgICByZXR1cm4gdjhTdHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6c3RyMihpbXApKTsKK30K
KworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQor
CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKK3N0YXRp
YyB2b2lkIHN0cjJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN0cjIuX3NldCIpOworICAgIFRlc3RJbnRl
cmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DS19WT0lEKFY4UGFyYW1ldGVy
PD4sIHYsIHZhbHVlKTsKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdHIyKGltcCwgdik7Cisg
ICAgcmV0dXJuOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCisKIH0gLy8gbmFtZXNwYWNlIFRlc3RJbnRlcmZhY2VJbnRlcm5hbAogCitz
dGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0SW50ZXJmYWNlQXR0cnNbXSA9IHsKKyNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICAvLyBBdHRy
aWJ1dGUgJ3N0cjEnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnSW1wbGVt
ZW50ZWRCeSBDb25kaXRpb25hbCcpCisgICAgeyJzdHIxIiwgVGVzdEludGVyZmFjZUludGVybmFs
OjpzdHIxQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYgLy8gRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgLy8gQXR0cmlidXRlICdzdHIyJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJ0ltcGxlbWVudGVkQnkgQ29uZGl0aW9uYWwnKQorICAgIHsi
c3RyMiIsIFRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3RyMkF0dHJHZXR0ZXIsIFRlc3RJbnRlcmZh
Y2VJbnRlcm5hbDo6c3RyMkF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorI2VuZGlmIC8vIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIC8vIEF0dHJpYnV0ZSAnc3RyMycg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDdXN0b21TZXR0ZXIgQ3VzdG9tR2V0dGVyIElt
cGxlbWVudGVkQnkgQ29uZGl0aW9uYWwnKQorICAgIHsic3RyMyIsIFY4VGVzdFN1cHBsZW1lbnRh
bDo6c3RyM0FjY2Vzc29yR2V0dGVyLCBWOFRlc3RTdXBwbGVtZW50YWw6OnN0cjNBY2Nlc3NvclNl
dHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCit9OworCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0SW50
ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFjZS5Db25zdHJ1Y3RvciIpOwpAQCAtODEs
NyArMTMyLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKIAogICAgIHY4OjpMb2NhbDx2ODo6
U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRlZmF1bHRTaWduYXR1cmUgPSBjb25m
aWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEludGVyZmFjZSIsIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RJbnRlcmZhY2U6OmludGVybmFsRmllbGRDb3VudCwK
LSAgICAgICAgMCwgMCwKKyAgICAgICAgVGVzdEludGVyZmFjZUF0dHJzLCBXVEZfQVJSQVlfTEVO
R1RIKFRlc3RJbnRlcmZhY2VBdHRycyksCiAgICAgICAgIDAsIDApOwogICAgIFVOVVNFRF9QQVJB
TShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNl
ZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9y
Q2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDAxN2YzOWQzMzJkNzkwZmM3ZDk1OTliOWRkYzkyNWM5YTFlZjI2Y2UuLjc4ZGNiZTY3
ODMzZjllNzBmMzgwZWZjN2FkNThlODU1ZjhkMTk0YzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAogMjAxMS0xMS0yOCAg
S2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgSW1wbGVtZW50
IFtTdXBwbGVtZW50YWxdIElETCBhbmQgc3VwcG9ydCBpdCBpbiBydW4tYmluZGluZ3MtdGVzdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTYyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcnVuLWJpbmRp
bmdzLXRlc3RzIHN1cHBvcnRzIHRoZSBbU3VwcGxlbWVudGFsXSBJREwgaW4gdGhlIGZvbGxvd2lu
ZyB3YXkuCisgICAgICAgICAgICAoMSkgSXQgY3JlYXRlcyBhIGZpbGUgfHh8IGxpc3RpbmcgYWxs
IElETCBmaWxlcy4KKyAgICAgICAgICAgICgyKSBJdCBnZW5lcmF0ZXMgYSBzdXBwbGVtZW50YWwg
ZGVwZW5kZW5jeSBmaWxlIHx5fCB1c2luZyByZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCBhbmQgfHh8
LgorICAgICAgICAgICAgKDMpIEZvciBlYWNoIElETCBmaWxlIHx6fCwgaXQgcnVucyBnZW5lcmF0
ZS1iaW5kaW5ncy5wbCB3aXRoIHx5fC4KKyAgICAgICAgICAgICAgICBUaGVuLCBnZW5lcmF0ZS1i
aW5kaW5ncy5wbCBnZW5lcmF0ZXMgLmggYW5kIC5jcHAgZmlsZXMgZm9yIHRoZSBJREwgZmlsZSB8
enwsCisgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGFsbCBhdHRyaWJ1dGVzIGluIElETCBmaWxl
cyB0aGF0IGFyZSBzdXBwbGVtZW50aW5nIHRoZSBJREwgZmlsZSB8enwuCisKKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0czoKKyAgICAgICAgKGdlbmVyYXRlX2Zyb21faWRsKToK
KyAgICAgICAgKGdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KToKKyAgICAgICAgKGRl
dGVjdF9jaGFuZ2VzKToKKyAgICAgICAgKHJ1bl90ZXN0cyk6CisgICAgICAgIChtYWluKToKKwor
MjAxMS0xMS0yOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKICAgICAg
ICAgcnVuLWJpbmRpbmdzLXRlc3RzIHNob3dzIGRpZmYgZXJyb3IgZm9yIGEgbmV3bHkgYWRkZWQg
YmluZGluZyB0ZXN0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MzE3OQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0
cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzCmluZGV4IDliZTdiNDFlNjlhMjMx
NGUwYjRjMTZiMGFmYTYxMDQwN2JlNmMwMzIuLjE3NDdlYjU0OGQ5NTViYjcxMzRjNmYzYTI4MjYy
NzAyOWRmNmQ4NWEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3Rz
CisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzCkBAIC0zOCw3ICszOCw3IEBA
IGltcG9ydCB0ZW1wZmlsZQogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmRldGVj
dGlvbiBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0ZW0KIAogCi1kZWYgZ2VuZXJhdGVfZnJvbV9pZGwo
Z2VuZXJhdG9yLCBpZGxfZmlsZSwgb3V0cHV0X2RpcmVjdG9yeSk6CitkZWYgZ2VuZXJhdGVfZnJv
bV9pZGwoZ2VuZXJhdG9yLCBpZGxfZmlsZSwgb3V0cHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFs
X2RlcGVuZGVuY3lfZmlsZSk6CiAgICAgY21kID0gWydwZXJsJywgJy13JywKICAgICAgICAgICAg
Jy1JV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzJywKICAgICAgICAgICAgJ1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCcsCkBAIC00Nyw2ICs0Nyw3IEBAIGRlZiBn
ZW5lcmF0ZV9mcm9tX2lkbChnZW5lcmF0b3IsIGlkbF9maWxlLCBvdXRwdXRfZGlyZWN0b3J5KToK
ICAgICAgICAgICAgJy0tZGVmaW5lcycsICdURVNUSU5HXyVzJyAlIGdlbmVyYXRvciwKICAgICAg
ICAgICAgJy0tZ2VuZXJhdG9yJywgZ2VuZXJhdG9yLAogICAgICAgICAgICAnLS1vdXRwdXREaXIn
LCBvdXRwdXRfZGlyZWN0b3J5LAorICAgICAgICAgICAnLS1zdXBwbGVtZW50YWxEZXBlbmRlbmN5
RmlsZScsIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUsCiAgICAgICAgICAgIGlkbF9maWxl
XQogCiAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQgPSBzdWJwcm9j
ZXNzLlBJUEUsIHN0ZGVyciA9IHN1YnByb2Nlc3MuU1RET1VUKQpAQCAtNTcsNiArNTgsMzEgQEAg
ZGVmIGdlbmVyYXRlX2Zyb21faWRsKGdlbmVyYXRvciwgaWRsX2ZpbGUsIG91dHB1dF9kaXJlY3Rv
cnkpOgogICAgIHJldHVybiBleGl0X2NvZGUKIAogCitkZWYgZ2VuZXJhdGVfc3VwcGxlbWVudGFs
X2RlcGVuZGVuY3koaW5wdXRfZGlyZWN0b3J5LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxl
KToKKyAgICBpZGxfZmlsZXNfbGlzdCA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgIGZvciBpbnB1
dF9maWxlIGluIG9zLmxpc3RkaXIoaW5wdXRfZGlyZWN0b3J5KToKKyAgICAgICAgKG5hbWUsIGV4
dGVuc2lvbikgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0X2ZpbGUpCisgICAgICAgIGlmIGV4dGVu
c2lvbiAhPSAnLmlkbCc6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBvcy53cml0ZShp
ZGxfZmlsZXNfbGlzdFswXSwgb3MucGF0aC5qb2luKGlucHV0X2RpcmVjdG9yeSwgaW5wdXRfZmls
ZSkgKyAiXG4iKQorICAgIG9zLmNsb3NlKGlkbF9maWxlc19saXN0WzBdKQorCisgICAgY21kID0g
WydwZXJsJywgJy13JywKKyAgICAgICAgICAgJy1JV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzJywK
KyAgICAgICAgICAgJ1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9yZXNvbHZlLXN1cHBsZW1lbnRh
bC5wbCcsCisgICAgICAgICAgICctLWlkbEZpbGVzTGlzdCcsIGlkbF9maWxlc19saXN0WzFdLAor
ICAgICAgICAgICAnLS1kZWZpbmVzJywgJycsCisgICAgICAgICAgICctLXN1cHBsZW1lbnRhbERl
cGVuZGVuY3lGaWxlJywgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZV0KKyAgICBwcm9jZXNz
ID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dCA9IHN1YnByb2Nlc3MuUElQRSwgc3RkZXJy
ID0gc3VicHJvY2Vzcy5TVERPVVQpCisgICAgZXhpdF9jb2RlID0gcHJvY2Vzcy53YWl0KCkKKyAg
ICBvdXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKClbMF0KKyAgICBpZiBvdXRwdXQ6CisgICAg
ICAgIHByaW50IG91dHB1dAorCisgICAgb3MucmVtb3ZlKGlkbF9maWxlc19saXN0WzFdKQorICAg
IHJldHVybiBleGl0X2NvZGUKKworCiBkZWYgZGV0ZWN0X2NoYW5nZXMoZ2VuZXJhdG9yLCB3b3Jr
X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CiAgICAgY2hhbmdlc19mb3VuZCA9IEZh
bHNlCiAgICAgZm9yIG91dHB1dF9maWxlIGluIG9zLmxpc3RkaXIod29ya19kaXJlY3RvcnkpOgpA
QCAtNzksNyArMTA1LDcgQEAgZGVmIGRldGVjdF9jaGFuZ2VzKGdlbmVyYXRvciwgd29ya19kaXJl
Y3RvcnksIHJlZmVyZW5jZV9kaXJlY3RvcnkpOgogICAgIHJldHVybiBjaGFuZ2VzX2ZvdW5kCiAK
IAotZGVmIHJ1bl90ZXN0cyhnZW5lcmF0b3IsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2Rp
cmVjdG9yeSwgcmVzZXRfcmVzdWx0cyk6CitkZWYgcnVuX3Rlc3RzKGdlbmVyYXRvciwgaW5wdXRf
ZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5LCByZXNldF9yZXN1bHRzLCBzdXBwbGVtZW50
YWxfZGVwZW5kZW5jeV9maWxlKToKICAgICB3b3JrX2RpcmVjdG9yeSA9IHJlZmVyZW5jZV9kaXJl
Y3RvcnkKIAogICAgIHBhc3NlZCA9IFRydWUKQEAgLTk0LDcgKzEyMCw4IEBAIGRlZiBydW5fdGVz
dHMoZ2VuZXJhdG9yLCBpbnB1dF9kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3RvcnksIHJlc2V0
X3Jlc3VsdHMpOgogCiAgICAgICAgIGlmIGdlbmVyYXRlX2Zyb21faWRsKGdlbmVyYXRvciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGlucHV0X2RpcmVjdG9yeSwg
aW5wdXRfZmlsZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtfZGlyZWN0b3J5
KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya19kaXJlY3RvcnksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUpOgogICAg
ICAgICAgICAgcGFzc2VkID0gRmFsc2UKIAogICAgICAgICBpZiByZXNldF9yZXN1bHRzOgpAQCAt
MTMyLDEyICsxNTksMjAgQEAgZGVmIG1haW4oYXJndik6CiAgICAgICAgICdDUFAnCiAgICAgXQog
CisgICAgaW5wdXRfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKCdXZWJDb3JlJywgJ2JpbmRpbmdz
JywgJ3NjcmlwdHMnLCAndGVzdCcpCisgICAgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSA9
IHRlbXBmaWxlLm1rc3RlbXAoKVsxXQorICAgIGlmIGdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBl
bmRlbmN5KGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSk6Cisg
ICAgICAgIHByaW50ICdGYWlsZWQgdG8gZ2VuZXJhdGUgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5j
eSBmaWxlLicKKyAgICAgICAgb3MucmVtb3ZlKHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUp
CisgICAgICAgIHJldHVybiAtMQorCiAgICAgZm9yIGdlbmVyYXRvciBpbiBnZW5lcmF0b3JzOgog
ICAgICAgICBpbnB1dF9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ1dlYkNvcmUnLCAnYmluZGlu
Z3MnLCAnc2NyaXB0cycsICd0ZXN0JykKICAgICAgICAgcmVmZXJlbmNlX2RpcmVjdG9yeSA9IG9z
LnBhdGguam9pbignV2ViQ29yZScsICdiaW5kaW5ncycsICdzY3JpcHRzJywgJ3Rlc3QnLCBnZW5l
cmF0b3IpCi0gICAgICAgIGlmIG5vdCBydW5fdGVzdHMoZ2VuZXJhdG9yLCBpbnB1dF9kaXJlY3Rv
cnksIHJlZmVyZW5jZV9kaXJlY3RvcnksIHJlc2V0X3Jlc3VsdHMpOgorICAgICAgICBpZiBub3Qg
cnVuX3Rlc3RzKGdlbmVyYXRvciwgaW5wdXRfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5
LCByZXNldF9yZXN1bHRzLCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlKToKICAgICAgICAg
ICAgIGFsbF90ZXN0c19wYXNzZWQgPSBGYWxzZQogCisgICAgb3MucmVtb3ZlKHN1cHBsZW1lbnRh
bF9kZXBlbmRlbmN5X2ZpbGUpCiAgICAgcHJpbnQgJycKICAgICBpZiBhbGxfdGVzdHNfcGFzc2Vk
OgogICAgICAgICBwcmludCAnQWxsIHRlc3RzIFBBU1MhJwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116880</attachid>
            <date>2011-11-28 20:47:53 -0800</date>
            <delta_ts>2012-01-09 18:56:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73162-20111129134751.patch</filename>
            <type>text/plain</type>
            <size>72438</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZjNTdiOWVkMzNjMTYz
NTA5MDFjZTdkNDI4OTVjZTNjMTI0ZWNkYS4uMWYwZTUwNTBkZDAxMDQwMWZhYjUyYjBlM2M4YjNm
OWZlYTlhZDVlZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMS0xMS0yOCAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IFtT
dXBwbGVtZW50YWxdIElETCBhbmQgc3VwcG9ydCBpdCBpbiBydW4tYmluZGluZ3MtdGVzdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTYyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBPdmVydmlldzoK
KyAgICAgICAgICAgIC0gSW1wbGVtZW50IHRoZSBbU3VwcGxlbWVudGFsXSBJREwgaW4gcmVzb2x2
ZS1zdXBwbGVtZW50YWwucGwgYW5kIGdlbmVyYXRlLWJpbmRpbmdzLnBsLgorICAgICAgICAgICAg
LSBTdXBwb3J0IHRoZSBbU3VwcGxlbWVudGFsXSBJREwgaW4gcnVuLWJpbmRpbmdzLXRlc3RzLgor
ICAgICAgICAgICAgLSBBZGQgVGVzdFN1cHBsZW1lbnRhbC5pZGwgYXMgYSBiaW5kaW5nIHRlc3Qg
YW5kIGNvbmZpcm0gdGhhdCBpdCB3b3Jrcy4KKworICAgICAgICAtIFRoZSBzcGVjIGZvciB0aGUg
W1N1cHBsZW1lbnRhbF0gSURMOiBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3dlYmFwaS9XZWJJREwv
I2Rmbi1zdXBwbGVtZW50YWwtaW50ZXJmYWNlCisKKyAgICAgICAgLSBUaGlzIHBhdGNoIGFmZmVj
dHMgcnVuLWJpbmRpbmdzLXRlc3RzIHJlc3VsdHMgb25seSBhbmQgZG9lcyBub3QgYWZmZWN0IGFu
eSByZWFsIGJ1aWxkcworICAgICAgICBzaW5jZSBubyBbU3VwcGxlbWVudGFsXSBJREwgaGFzIGJl
ZW4gd3JpdHRlbiBpbiByZWFsIFdlYkNvcmUgSURMIGZpbGVzIGZvciBub3cuCisKKyAgICAgICAg
LSBUaGlzIHBhdGNoIG1ha2VzIGEgY2hhbmdlIG9uIENvZGVHZW5lcmF0b3IqLnBtIHRvIHN1cHBv
cnQgdGhlIFtTdXBwbGVtZW50YWxdIElETAorICAgICAgICBmb3IgKGN1c3RvbSkgZ2V0dGVycyBh
bmQgc2V0dGVycy4KKworICAgICAgICAtIEFkZGVkIHBlcmwgc2NyaXB0cyBpbXBsZW1lbnQgdGhl
IFtTdXBwbGVtZW50YWxdIElETCBhcyBmb2xsb3dzOgorCisgICAgICAgICAgICBQcmV2aW91cyBi
dWlsZCBmbG93OgorICAgICAgICAgICAgICAgIGZvcmVhY2ggJGlkbCAoYWxsIElETCBmaWxlcykg
eworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBkZXBlbmRzIG9uICRp
ZGw7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIHJlYWRzICRpZGw7
CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyAuaCBh
bmQgLmNwcCBmaWxlcyBmb3IgJGlkbDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IE5ldyBidWlsZCBmbG93IChTZWUgdGhlIGRpc2N1c3Npb25zIGluIGJ1ZyA3MjEzOCBmb3IgbW9y
ZSBkZXRhaWxzKToKKyAgICAgICAgICAgICAgICByZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCBkZXBl
bmRzIG9uIGFsbCBJREwgZmlsZXM7CisgICAgICAgICAgICAgICAgcmVzb2x2ZS1zdXBwbGVtZW50
YWwucGwgcmVhZHMgYWxsIElETCBmaWxlczsKKyAgICAgICAgICAgICAgICByZXNvbHZlLXN1cHBs
ZW1lbnRhbC5wbCByZXNvbHZlcyB0aGUgZGVwZW5kZW5jeSBvZiBbU3VwcGxlbWVudGFsPVhYWFhd
OworICAgICAgICAgICAgICAgIHJlc29sdmUtc3VwcGxlbWVudGFsLnBsIG91dHB1dHMgc3VwcGxl
bWVudGFsX2RlcGVuZGVuY3kudG1wOworICAgICAgICAgICAgICAgIGZvcmVhY2ggJGlkbCAoYWxs
IElETCBmaWxlcykgeworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBk
ZXBlbmRzIG9uICRpZGwgYW5kIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5LnRtcDsKKyAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgcmVhZHMgJGlkbDsKKyAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgcmVhZHMgc3VwcGxlbWVudGFsX2RlcGVuZGVu
Y3kudG1wOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBnZW5lcmF0
ZXMgLmggYW5kIC5jcHAgZmlsZXMgZm9yICRpZGwsIGluY2x1ZGluZyBhbGwgYXR0cmlidXRlcyBp
biBJREwgZmlsZXMgd2hpY2ggYXJlIGltcGxlbWVudGluZyAkaWRsOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICBUZXN0czogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdXBwbGVtZW50
YWwuaWRsCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBs
OiBUaGUgaW5wdXQgaXMgYW4gSURMIGZpbGUgfHh8IGFuZCB0aGUgZGVwZW5kZW5jeSBmaWxlLiBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbCBnZW5lcmF0ZXMgLmggYW5kIC5jcHAgZmlsZXMgZm9yIHRoZSBJ
REwgZmlsZSB8eHwsIGluY2x1ZGluZyBhbGwgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIElETCBmaWxl
cyB3aGljaCBhcmUgaW1wbGVtZW50aW5nIHRoZSBJREwgZmlsZSB8eHwuIGdlbmVyYXRlLWJpbmRp
bmdzLnBsIGFkZGVzIHRoZSBbSW1wbGVtZW50ZWRCeV0gSURMIHRvIHRoZSBhdHRyaWJ1dGVzIHdp
dGggdGhlIFtTdXBwbGVtZW50YWxdIElETCBpbiBvcmRlciB0byBpbmRpY2F0ZSB3aGF0IElETCBp
cyBpbXBsZW1lbnRpbmcgdGhlIGF0dHJpYnV0ZXMuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9yZXNvbHZlLXN1cHBsZW1lbnRhbC5wbDogQWRkZWQuIHJlc29sdmUtc3VwcGxlbWVudGFsLnBs
IHJlYWRzIGFsbCBJREwgZmlsZXMsIHJlc29sdmVzIFtTdXBwbGVtZW50YWw9WFhYXSBkZXBlbmRl
bmNpZXMsIGFuZCB0aGVuIG91dHB1dHMgdGhlIGRlcGVuZGVuY3kgZmlsZS4gU2VlIHRoZSBjb21t
ZW50IGluIHJlc29sdmUtc3VwcGxlbWVudGFsLnBsIGZvciB0aGUgZm9ybWF0IG9mIHRoZSBkZXBl
bmRlbmN5IGZpbGUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG06CisgICAgICAgIChHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVl
KTogQXZvaWRzIGR1cGxpY2F0ZWQgY29uZGl0aW9ucy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKTogSWYgYW4g
YXR0cmlidXRlIGlzIFtJbXBsZW1lbnRlZEJ5XSBhbm90aGVyIElETCwgdGhlbiB3ZSBvbWl0IHRo
ZSBkZWNsYXJhdGlvbiBvZiB0aGUgY3VzdG9tIGdldHRlciBhbmQgc2V0dGVyLgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6IElmIGFuIGF0dHJpYnV0ZSBpcyBbSW1wbGVtZW50ZWRC
eV0gYW5vdGhlciBJREwsIHRoZW4gd2UgY2FsbCBiYWNrIHRoZSAoY3VzdG9tKSBnZXR0ZXIgYW5k
IHNldHRlciBvZiB0aGUgSURMLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBJZiBhbiBhdHRyaWJ1dGUgaXMg
W0ltcGxlbWVudGVkQnldIGFub3RoZXIgSURMLCB0aGVuIHdlIG9taXQgdGhlIGRlY2xhcmF0aW9u
IG9mIHRoZSBjdXN0b20gZ2V0dGVyIGFuZCBzZXR0ZXIuCisgICAgICAgIChHZW5lcmF0ZU5vcm1h
bEF0dHJHZXR0ZXIpOiBJZiBhbiBhdHRyaWJ1dGUgaXMgW0ltcGxlbWVudGVkQnldIGFub3RoZXIg
SURMLCB0aGVuIHdlIGNhbGwgYmFjayB0aGUgZ2V0dGVyIG9mIHRoZSBJREwuCisgICAgICAgIChH
ZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIpOiBJZiBhbiBhdHRyaWJ1dGUgaXMgW0ltcGxlbWVudGVk
QnldIGFub3RoZXIgSURMLCB0aGVuIHdlIGNhbGwgYmFjayB0aGUgc2V0dGVyIG9mIHRoZSBJREwu
CisgICAgICAgIChHZW5lcmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUpOiBJZiBhbiBhdHRyaWJ1
dGUgaXMgW0ltcGxlbWVudGVkQnldIGFub3RoZXIgSURMLCB0aGVuIHdlIGNhbGwgYmFjayB0aGUg
Y3VzdG9tIGdldHRlciBvciBzZXR0ZXIgb2YgdGhlIElETC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0
aW9uKTogSWYgYW4gYXR0cmlidXRlIGlzIFtJbXBsZW1lbnRlZEJ5XSBhbm90aGVyIElETCwgdGhl
biB3ZSBjYWxsIGJhY2sgdGhlIGdldHRlciBhbmQgc2V0dGVyIG9mIHRoZSBJREwuIENvZGVHZW5l
cmF0b3JDUFAucG0gZG9lcyBub3Qgc3VwcG9ydCBhIGN1c3RvbSBnZXR0ZXIgYW5kIHNldHRlci4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAg
ICAgICAoR2VuZXJhdGVQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvck9iakMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1l
bnRhbC5pZGw6IEFkZGVkLiBBIHRlc3QgY2FzZSBmb3IgdGhlIFtTdXBwbGVtZW50YWxdIElETC4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2Uu
Y3BwOiBVcGRhdGVkIGEgcnVuLWJpbmRpbmdzLXRlc3RzIHJlc3VsdC4KKyAgICAgICAgKFdlYkRP
TVRlc3RJbnRlcmZhY2U6OnN0cjEpOgorICAgICAgICAoV2ViRE9NVGVzdEludGVyZmFjZTo6c3Ry
Mik6CisgICAgICAgIChXZWJET01UZXN0SW50ZXJmYWNlOjpzZXRTdHIyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaDogRGl0dG8uCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVy
ZmFjZS5jcHA6IERpdHRvLgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRf
c3RyMSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIyKToKKyAg
ICAgICAgKHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X3N0cjIpOgorICAgICAgICAod2Vi
a2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2Rv
bV90ZXN0X2ludGVyZmFjZV9nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0
X2ludGVyZmFjZV9jbGFzc19pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
SW50ZXJmYWNlU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdHIzKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZTo6cHV0KToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdEludGVyZmFjZVN0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
SW50ZXJmYWNlU3RyMyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5oOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0SW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW06IERpdHRvLgorICAgICAgICAoLVtET01UZXN0
SW50ZXJmYWNlIHN0cjFdKToKKyAgICAgICAgKC1bRE9NVGVzdEludGVyZmFjZSBzdHIyXSk6Cisg
ICAgICAgICgtW0RPTVRlc3RJbnRlcmZhY2Ugc2V0U3RyMjpdKToKKyAgICAgICAgKC1bRE9NVGVz
dEludGVyZmFjZSBzdHIzXSk6CisgICAgICAgICgtW0RPTVRlc3RJbnRlcmZhY2Ugc2V0U3RyMzpd
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNw
cDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW50ZXJuYWw6OnN0cjFB
dHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3Ry
MkF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZUludGVybmFsOjpz
dHIyQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RJbnRlcmZh
Y2VUZW1wbGF0ZSk6CisKIDIwMTEtMTEtMjggIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDEyMDIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXggOGIw
OGY4ODM5ZDQ3MjMwZDZiMTI3OTQzMjRkYTI1NzllZjIyZTJhMy4uMTg0ZGY4MWE4OTkzNzgwN2Ez
YWJiZmE0MmYwMjNmOTc3MjFlNzQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtNTYzLDEwICs1NjMsMTMgQEAgc3ViIEdlbmVy
YXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUKIHsKICAgICBteSAkZ2VuZXJh
dG9yID0gc2hpZnQ7CiAgICAgbXkgJGNvbmRpdGlvbmFsID0gc2hpZnQ7Ci0gICAgaWYgKCRjb25k
aXRpb25hbCA9fiAvJi8pIHsKLSAgICAgICAgcmV0dXJuICJFTkFCTEUoIiAuIGpvaW4oIikgJiYg
RU5BQkxFKCIsIHNwbGl0KC8mLywgJGNvbmRpdGlvbmFsKSkgLiAiKSI7Ci0gICAgfSBlbHNpZiAo
JGNvbmRpdGlvbmFsID1+IC9cfC8pIHsKLSAgICAgICAgcmV0dXJuICJFTkFCTEUoIiAuIGpvaW4o
IikgfHwgRU5BQkxFKCIsIHNwbGl0KC9cfC8sICRjb25kaXRpb25hbCkpIC4gIikiOworCisgICAg
bXkgJG9wZXJhdG9yID0gKCRjb25kaXRpb25hbCA9fiAvJi8gPyAnJicgOiAoJGNvbmRpdGlvbmFs
ID1+IC9cfC8gPyAnfCcgOiAnJykpOworICAgIGlmICgkb3BlcmF0b3IpIHsKKyAgICAgICAgIyBB
dm9pZCBkdXBsaWNhdGVkIGNvbmRpdGlvbnMuCisgICAgICAgIG15ICVjb25kaXRpb25zOworICAg
ICAgICBtYXAgeyAkY29uZGl0aW9uc3skX30gPSAxIH0gc3BsaXQoJ1xcJyAuICRvcGVyYXRvciwg
JGNvbmRpdGlvbmFsKTsKKyAgICAgICAgcmV0dXJuICJFTkFCTEUoIiAuIGpvaW4oIikgJG9wZXJh
dG9yJG9wZXJhdG9yIEVOQUJMRSgiLCBzb3J0IGtleXMgJWNvbmRpdGlvbnMpIC4gIikiOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHJldHVybiAiRU5BQkxFKCIgLiAkY29uZGl0aW9uYWwgLiAiKSI7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yQ1BQLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yQ1BQLnBtCmluZGV4IGUxMWM3ZWU3ODg0NTFlNDc0NWI3OWY0MDU1NzU3NjNlNjU3ODk1
ODUuLmY1NDQyNWMwNWE4Y2IwNzg0MWNlOGU5YzlkMTU3NjY0OWM3YzQ0ZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KQEAg
LTcwMiw3ICs3MDIsMTUgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICMgLSBHRVRURVIKICAgICAgICAgICAgIG15ICRnZXR0ZXJTaWcgPSAiJGF0dHJpYnV0ZVR5cGUg
JGNsYXNzTmFtZVw6XDokYXR0cmlidXRlTmFtZSgpIGNvbnN0XG4iOwogICAgICAgICAgICAgbXkg
JGhhc0dldHRlckV4Y2VwdGlvbiA9IEB7JGF0dHJpYnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc307Ci0g
ICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVudEhlYWQgPSAiaW1wbCgpLT4iIC4gJGNvZGVHZW5l
cmF0b3ItPkdldHRlckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VO
YW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15ICRnZXR0ZXJDb250ZW50SGVhZDsKKyAg
ICAgICAgICAgIG15ICRnZXR0ZXJFeHByZXNzaW9uUHJlZml4ID0gJGNvZGVHZW5lcmF0b3ItPkdl
dHRlckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0
cmlidXRlKTsKKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgICAgICBteSAkaW1w
bGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIke2ltcGxl
bWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0g
IiR7aW1wbGVtZW50ZWRCeX06OiR7Z2V0dGVyRXhwcmVzc2lvblByZWZpeH1pbXBsKCkiOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAi
aW1wbCgpLT4ke2dldHRlckV4cHJlc3Npb25QcmVmaXh9IjsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG15ICRnZXR0ZXJDb250ZW50VGFpbCA9ICIpIjsKIAogICAgICAgICAgICAgIyBTcGVj
aWFsIGNhc2VzCkBAIC03MjAsNyArNzI4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
IAogICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnQ7CiAgICAgICAgICAgICBpZiAoJGhhc0dl
dHRlckV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50ID0gJGdldHRl
ckNvbnRlbnRIZWFkIC4gImVjIiAuICRnZXR0ZXJDb250ZW50VGFpbDsKKyAgICAgICAgICAgICAg
ICAkZ2V0dGVyQ29udGVudCA9ICRnZXR0ZXJDb250ZW50SGVhZCAuICgkZ2V0dGVyQ29udGVudEhl
YWQgPX4gL1woJC8gPyAiZWMiIDogIiwgZWMiKSAuICRnZXR0ZXJDb250ZW50VGFpbDsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnQgPSAkZ2V0dGVy
Q29udGVudEhlYWQgLiAkZ2V0dGVyQ29udGVudFRhaWw7CiAgICAgICAgICAgICB9CkBAIC03NzMs
NyArNzgxLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpIGlmICRoYXNTZXR0ZXJF
eGNlcHRpb247CiAgICAgICAgICAgICAgICAgbXkgJGVjID0gJGhhc1NldHRlckV4Y2VwdGlvbiA/
ICIsIGVjIiA6ICIiOwogICAgICAgICAgICAgICAgIG15ICRzZXR0ZXJFeHByZXNzaW9uUHJlZml4
ID0gJGNvZGVHZW5lcmF0b3ItPlNldHRlckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVkZXMs
ICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpbXBsKCktPiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JGFyZyRlYyk7XG4i
KTsKKyAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRp
bXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIk
e2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICR7aW1wbGVtZW50ZWRCeX06OiR7c2V0dGVyRXhwcmVzc2lvblByZWZpeH1p
bXBsKCksICR7YXJnfSR7ZWN9KTtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcGwoKS0+JHNldHRlckV4
cHJlc3Npb25QcmVmaXgkYXJnJGVjKTtcbiIpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkZXhjZXB0aW9uUmFpc2VPbkVycm9yXG4i
KSBpZiAkaGFzU2V0dGVyRXhjZXB0aW9uOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCmluZGV4IDdhYjg5ZGVh
OWI0YjQxNDExMDM3NzNiM2EzMGZmOWY0M2M4ZjNjYTkuLmI0ZWI0YzkyZDYwYzRmNTM1OTY0MmRi
NDMyZDdlOWQyMDlmMzM1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQpAQCAtMzgyLDggKzM4MiwxNyBAQCBz
dWIgR2VuZXJhdGVQcm9wZXJ0eSB7CiAgICAgbXkgJGdldHRlckV4cHJlc3Npb25QcmVmaXggPSAk
Y29kZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvblByZWZpeChcJWltcGxJbmNsdWRlcywgJGlu
dGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOwogICAgIG15ICRzZXR0ZXJFeHByZXNzaW9uUHJlZml4
ID0gJGNvZGVHZW5lcmF0b3ItPlNldHRlckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVkZXMs
ICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKIAotICAgIG15ICRnZXR0ZXJDb250ZW50SGVh
ZCA9ICJjb3JlU2VsZi0+JGdldHRlckV4cHJlc3Npb25QcmVmaXgiOwotICAgIG15ICRzZXR0ZXJD
b250ZW50SGVhZCA9ICJjb3JlU2VsZi0+JHNldHRlckV4cHJlc3Npb25QcmVmaXgke2NvbnZlcnRG
dW5jdGlvbn0oZ192YWx1ZV9nZXRfJGd0eXBlKHZhbHVlKSkiOworICAgIG15ICRnZXR0ZXJDb250
ZW50SGVhZDsKKyAgICBteSAkc2V0dGVyQ29udGVudEhlYWQ7CisgICAgaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAg
ICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siJHtp
bXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiJHtp
bXBsZW1lbnRlZEJ5fTo6JHtnZXR0ZXJFeHByZXNzaW9uUHJlZml4fWNvcmVTZWxmIjsKKyAgICAg
ICAgJHNldHRlckNvbnRlbnRIZWFkID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7c2V0dGVyRXhwcmVz
c2lvblByZWZpeH1jb3JlU2VsZiwgJHtjb252ZXJ0RnVuY3Rpb259KGdfdmFsdWVfZ2V0XyRndHlw
ZSh2YWx1ZSkpIjsKKyAgICB9IGVsc2UgeworICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAi
Y29yZVNlbGYtPiRnZXR0ZXJFeHByZXNzaW9uUHJlZml4IjsKKyAgICAgICAgJHNldHRlckNvbnRl
bnRIZWFkID0gImNvcmVTZWxmLT4kc2V0dGVyRXhwcmVzc2lvblByZWZpeCR7Y29udmVydEZ1bmN0
aW9ufShnX3ZhbHVlX2dldF8kZ3R5cGUodmFsdWUpKSI7CisgICAgfQogCiAgICAgaWYgKGdyZXAg
eyRfIGVxICRhdHRyaWJ1dGV9IEB3cml0ZWFibGVQcm9wZXJ0aWVzKSB7CiAgICAgICAgIHB1c2go
QHR4dFNldFByb3BzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CkBAIC00MDgsNyArNDE3LDcgQEAgc3ViIEdlbmVyYXRlUHJvcGVydHkgewogICAg
IG15ICRwb3N0Q29udmVydEZ1bmN0aW9uID0gIiI7CiAgICAgbXkgJGRvbmUgPSAwOwogICAgIGlm
ICgkZ3R5cGUgZXEgInN0cmluZyIpIHsKLSAgICAgICAgcHVzaChAdHh0R2V0UHJvcHMsICIgICAg
ICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoJHtnZXR0
ZXJDb250ZW50SGVhZH0ke2V4Y2VwdGlvbn0pKSk7XG4iKTsKKyAgICAgICAgcHVzaChAdHh0R2V0
UHJvcHMsICIgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhT
dHJpbmcoJHtnZXR0ZXJDb250ZW50SGVhZH0iIC4gKCRnZXR0ZXJDb250ZW50SGVhZCAhfiAvXCgk
LyAmJiAkZXhjZXB0aW9uID8gIiwgJGV4Y2VwdGlvbiIgOiAiJGV4Y2VwdGlvbiIpIC4gIikpKTtc
biIpOwogICAgICAgICAkZG9uZSA9IDE7CiAgICAgfSBlbHNpZiAoJGd0eXBlIGVxICJvYmplY3Qi
KSB7CiAgICAgICAgICR0eHRHZXRQcm9wID0gPDwgIkVPRiI7CkBAIC00MjYsNyArNDM1LDEzIEBA
IEVPRgogICAgIH0KIAogICAgIGlmICghJGRvbmUpIHsKLSAgICAgICAgcHVzaChAdHh0R2V0UHJv
cHMsICIgICAgICAgIGdfdmFsdWVfc2V0XyRfZ3R5cGUodmFsdWUsICR7Y29udmVydEZ1bmN0aW9u
fWNvcmVTZWxmLT4ke2dldHRlckV4cHJlc3Npb25QcmVmaXh9JHtleGNlcHRpb259KSR7cG9zdENv
bnZlcnRGdW5jdGlvbn0pO1xuIik7CisgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgIG15
ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBs
ZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgcHVzaChAdHh0R2V0UHJvcHMsICIgICAg
ICAgIGdfdmFsdWVfc2V0XyRfZ3R5cGUodmFsdWUsICR7Y29udmVydEZ1bmN0aW9ufSR7aW1wbGVt
ZW50ZWRCeX06OiR7Z2V0dGVyRXhwcmVzc2lvblByZWZpeH1jb3JlU2VsZiwgJHtleGNlcHRpb259
KSR7cG9zdENvbnZlcnRGdW5jdGlvbn0pO1xuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBwdXNoKEB0eHRHZXRQcm9wcywgIiAgICAgICAgZ192YWx1ZV9zZXRfJF9ndHlwZSh2YWx1
ZSwgJHtjb252ZXJ0RnVuY3Rpb259Y29yZVNlbGYtPiR7Z2V0dGVyRXhwcmVzc2lvblByZWZpeH0k
e2V4Y2VwdGlvbn0pJHtwb3N0Q29udmVydEZ1bmN0aW9ufSk7XG4iKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIHB1c2goQHR4dEdldFByb3BzLCAiICAgICAgICBicmVhaztcbiAgICB9XG4iKTsK
QEAgLTkzMiw3ICs5NDcsMTQgQEAgRU9GCiAgICAgICAgIG15ICRnZXR0ZXJDb250ZW50SGVhZDsK
ICAgICAgICAgaWYgKCRwcmVmaXgpIHsKICAgICAgICAgICAgIG15ICRnZXR0ZXJFeHByZXNzaW9u
UHJlZml4ID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5j
bHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkZnVuY3Rpb24pOwotICAgICAgICAgICAgJGdldHRlckNv
bnRlbnRIZWFkID0gIiR7YXNzaWdufWNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+JGdldHRlckV4
cHJlc3Npb25QcmVmaXgke2V4Y2VwdGlvbnN9KSk7XG4iOworICAgICAgICAgICAgaWYgKCRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7
CisgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAg
ICAgbXkgJGl0ZW0gPSAhJGNhbGxJbXBsUGFyYW1zICYmICEkZXhjZXB0aW9ucyA/ICJpdGVtIiA6
ICJpdGVtLCAiOworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICIke2Fzc2ln
bn1jb252ZXJ0VG9VVEY4U3RyaW5nKCR7aW1wbGVtZW50ZWRCeX06OiRnZXR0ZXJFeHByZXNzaW9u
UHJlZml4JGl0ZW0ke2V4Y2VwdGlvbnN9KSk7XG4iOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiJHthc3NpZ259Y29udmVydFRvVVRG
OFN0cmluZyhpdGVtLT4kZ2V0dGVyRXhwcmVzc2lvblByZWZpeCR7ZXhjZXB0aW9uc30pKTtcbiI7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkZ2V0dGVyQ29u
dGVudEhlYWQgPSAiJHthc3NpZ259Y29udmVydFRvVVRGOFN0cmluZyhpdGVtLT4ke2Z1bmN0aW9u
U2lnTmFtZX0oJHtjYWxsSW1wbFBhcmFtc30ke2V4Y2VwdGlvbnN9KSk7XG4iOwogICAgICAgICB9
CkBAIC05NDEsMTAgKzk2MywyNCBAQCBFT0YKICAgICAgICAgbXkgJGNvbnRlbnRIZWFkOwogICAg
ICAgICBpZiAoJHByZWZpeCBlcSAiZ2V0XyIpIHsKICAgICAgICAgICAgIG15ICRnZXR0ZXJFeHBy
ZXNzaW9uUHJlZml4ID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb25QcmVmaXgoXCVp
bXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkZnVuY3Rpb24pOwotICAgICAgICAgICAgJGNv
bnRlbnRIZWFkID0gIiR7YXNzaWdufSR7YXNzaWduUHJlfWl0ZW0tPiRnZXR0ZXJFeHByZXNzaW9u
UHJlZml4JHtjYWxsSW1wbFBhcmFtc30ke2V4Y2VwdGlvbnN9JHthc3NpZ25Qb3N0fSk7XG4iOwor
ICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkg
PSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVk
QnkifTsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIke2ltcGxlbWVudGVkQnl9Lmgi
fSA9IDE7CisgICAgICAgICAgICAgICAgbXkgJGl0ZW0gPSAhJGNhbGxJbXBsUGFyYW1zICYmICEk
ZXhjZXB0aW9ucyA/ICJpdGVtIiA6ICJpdGVtLCAiOworICAgICAgICAgICAgICAgICRjb250ZW50
SGVhZCA9ICIke2Fzc2lnbn0ke2Fzc2lnblByZX0ke2ltcGxlbWVudGVkQnl9OjokZ2V0dGVyRXhw
cmVzc2lvblByZWZpeCRpdGVtJHtjYWxsSW1wbFBhcmFtc30ke2V4Y2VwdGlvbnN9JHthc3NpZ25Q
b3N0fSk7XG4iOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkY29udGVu
dEhlYWQgPSAiJHthc3NpZ259JHthc3NpZ25QcmV9aXRlbS0+JGdldHRlckV4cHJlc3Npb25QcmVm
aXgke2NhbGxJbXBsUGFyYW1zfSR7ZXhjZXB0aW9uc30ke2Fzc2lnblBvc3R9KTtcbiI7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYgKCRwcmVmaXggZXEgInNldF8iKSB7CiAgICAgICAg
ICAgICBteSAkc2V0dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJF
eHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9u
KTsKLSAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIke2Fzc2lnbn0ke2Fzc2lnblByZX1pdGVt
LT4kc2V0dGVyRXhwcmVzc2lvblByZWZpeCR7Y2FsbEltcGxQYXJhbXN9JHtleGNlcHRpb25zfSR7
YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAg
IG15ICRpbXBsZW1lbnRlZEJ5ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
JHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgICAgIG15ICRpdGVtID0gISRj
YWxsSW1wbFBhcmFtcyAmJiAhJGV4Y2VwdGlvbnMgPyAiaXRlbSIgOiAiaXRlbSwgIjsKKyAgICAg
ICAgICAgICAgICAkY29udGVudEhlYWQgPSAiJHthc3NpZ259JHthc3NpZ25QcmV9JHtpbXBsZW1l
bnRlZEJ5fTo6JHNldHRlckV4cHJlc3Npb25QcmVmaXgkaXRlbSR7Y2FsbEltcGxQYXJhbXN9JHtl
eGNlcHRpb25zfSR7YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgJGNvbnRlbnRIZWFkID0gIiR7YXNzaWdufSR7YXNzaWduUHJlfWl0ZW0tPiRz
ZXR0ZXJFeHByZXNzaW9uUHJlZml4JHtjYWxsSW1wbFBhcmFtc30ke2V4Y2VwdGlvbnN9JHthc3Np
Z25Qb3N0fSk7XG4iOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgJGNvbnRlbnRIZWFkID0gIiR7YXNzaWdufSR7YXNzaWduUHJlfWl0ZW0tPiR7ZnVuY3Rpb25T
aWdOYW1lfSgke2NhbGxJbXBsUGFyYW1zfSR7ZXhjZXB0aW9uc30ke2Fzc2lnblBvc3R9KTtcbiI7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggY2FjMzUwYjQ5NDE1MzFiODZhNzQyYTg3MmJiMjVjMjMwOGY0
YjY5OC4uMjE3NDNmZjAwOGE4Nzg5MTZiZmVmNTEwNDVjY2M2OGFiM2M0NTkzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTg2Myw4ICs4NjMsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgZm9yZWFjaCAoQHsk
ZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICBteSAkYXR0cmlidXRlID0gJF87
CiAgICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlmICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbSJ9OwotICAgICAgICAgICAgJG51
bUN1c3RvbUF0dHJpYnV0ZXMrKyBpZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDdXN0b21HZXR0ZXIifSB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJKU0NDdXN0b21HZXR0ZXIifTsKLSAgICAgICAgICAgICRudW1DdXN0
b21BdHRyaWJ1dGVzKysgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tU2V0dGVyIn07CisgICAgICAgICAgICAkbnVtQ3VzdG9tQXR0
cmlidXRlcysrIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21HZXR0ZXIifSB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJKU0NDdXN0b21HZXR0ZXIifSkgJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICRudW1DdXN0
b21BdHRyaWJ1dGVzKysgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkpTQ0N1c3RvbVNldHRlciJ9KSAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OwogICAgICAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hlZEF0dHJp
YnV0ZSJ9KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBKU0M6
OldyaXRlQmFycmllcjxKU0M6OlVua25vd24+IG1fIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
bmFtZSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICAkbnVtQ2FjaGVkQXR0cmlidXRlcysrOwpA
QCAtODg4LDkgKzg4OCw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgICAgIGlm
ICgkYXR0cmlidXRlLT50eXBlICF+IC9ecmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldL
X3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBl
bHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
R2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNDQ3VzdG9tR2V0dGVyIn0pIHsKKyAgICAgICAgICAgIH0gZWxzaWYgKCgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXR0ZXIifSB8fCAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0NDdXN0b21HZXR0ZXIifSkg
JiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVu
dGVkQnkifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgSlND
OjpKU1ZhbHVlICIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPm5hbWUpIC4gIihKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0O1xuIik7Ci0gICAgICAgICAg
ICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21TZXR0ZXIifSB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJKU0NDdXN0b21TZXR0ZXIifSkgeworICAgICAgICAgICAgfSBlbHNpZiAoKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9IHx8ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbVNldHRl
ciJ9KSAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1w
bGVtZW50ZWRCeSJ9KSB7CiAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUgIX4g
L15yZWFkb25seS8pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICB2b2lkIHNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPm5hbWUpIC4gIihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7XG4iKTsK
ICAgICAgICAgICAgICAgICB9CkBAIC0xNjQ4LDcgKzE2NDgsMTMgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn0gfHwgJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tIn0gfHwg
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0dGVy
In0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3Vz
dG9tR2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIGNhc3RlZFRoaXMtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKGV4ZWMpO1xuIik7
CisgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJ
bmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTJHtpbXBsZW1lbnRlZEJ5fTo6JGlt
cGxHZXR0ZXJGdW5jdGlvbk5hbWUoY2FzdGVkVGhpcywgZXhlYyk7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZShleGVj
KTtcbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tOb2RlU2Vj
dXJpdHkifSkgewogICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUJpbmRp
bmcuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oY2FzdGVk
VGhpcy0+aW1wbCgpKTtcbiIpOwpAQCAtMTY5OSw3ICsxNzA1LDE2IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiaW1wLiRpbXBsR2V0dGVyRnVuY3Rpb25O
YW1lKCkiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
bXkgJGdldHRlckV4cHJlc3Npb24gPSAiaW1wLT4iIC4gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4
cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRl
KSAuICIpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15ICRnZXR0ZXJFeHByZXNzaW9uUHJl
Zml4ID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVk
ZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG15ICRnZXR0ZXJFeHByZXNzaW9uOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9Owor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRC
eX0uaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyRXhwcmVzc2lv
biA9ICIke2ltcGxlbWVudGVkQnl9Ojoke2dldHRlckV4cHJlc3Npb25QcmVmaXh9aW1wKSI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRnZXR0ZXJFeHByZXNzaW9uID0gImltcC0+IiAuICRnZXR0ZXJFeHByZXNzaW9uUHJlZml4
IC4gIikiOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAg
ICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwg
MCwgJGltcGxDbGFzc05hbWUsICRnZXR0ZXJFeHByZXNzaW9uLCAiY2FzdGVkVGhpcyIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxDbGFzc05h
bWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NW
R0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKQEAgLTE3MDksNyArMTcyNCw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAkanNUeXBlO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
CisKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgbV8iIC4gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCByZXN1bHQpO1xuIikgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNhY2hlZEF0dHJpYnV0ZSJ9KTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwogCkBAIC0xODIyLDcgKzE4MzcsMTMg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbVNldHRlciJ9KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8
JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShleGVj
LCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9Owor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIke2ltcGxlbWVu
dGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEpTJHtpbXBsZW1lbnRlZEJ5fTo6c2V0JGltcGxTZXR0ZXJGdW5jdGlv
bk5hbWUoc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLCBleGVjLCB2YWx1ZSk7
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwk
Y2xhc3NOYW1lKj4odGhpc09iamVjdCktPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKGV4ZWMs
IHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudExpc3RlbmVyIikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRMaXN0ZW5lci5oIn0g
PSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFVOVVNFRF9QQVJBTShleGVjKTtcbiIpOwpAQCAtMTkwNywxNyArMTkyOCwyMSBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXkgJHNldHRlckV4cHJlc3Npb25QcmVmaXggPSAkY29kZUdlbmVyYXRvci0+
U2V0dGVyRXhwcmVzc2lvblByZWZpeChcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRh
dHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpbXAtPiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JG5hdGl2ZVZhbHVlIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5
fS5oIn0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJHtpbXBsZW1lbnRlZEJ5fTo6JHtzZXR0ZXJFeHByZXNzaW9uUHJlZml4
fWltcCwgJG5hdGl2ZVZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpbXAtPiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JG5hdGl2ZVZhbHVlIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIsIGVjIikgaWYgQHskYXR0cmlidXRlLT5zZXR0
ZXJFeGNlcHRpb25zfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRh
dHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCisg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGF0
dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nOwotCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JPYmpDLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbQppbmRleCAyNzQxMDI4OTdiNTkxZmNkMDQwMWJkNGYyN2Y3MDQ5NDI5MTc1
OWNhLi44MGE5Y2Y0ZWVmMzUxOGYwNzNkMDZhM2RlNzljMjkwNzA0ZDY3MmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0K
QEAgLTEyMDcsNyArMTIwNywxNSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgJGdldHRlckV4cHJlc3Npb25QcmVmaXggPX4gcy9cYm93bmVyRG9jdW1lbnRcYi9kb2N1
bWVudC87CiAKICAgICAgICAgICAgIG15ICRoYXNHZXR0ZXJFeGNlcHRpb24gPSBAeyRhdHRyaWJ1
dGUtPmdldHRlckV4Y2VwdGlvbnN9OwotICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnRIZWFk
ID0gIklNUEwtPiRnZXR0ZXJFeHByZXNzaW9uUHJlZml4IjsKKyAgICAgICAgICAgIG15ICRnZXR0
ZXJDb250ZW50SGVhZDsKKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgICAgICBt
eSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIk
e2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRI
ZWFkID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7Z2V0dGVyRXhwcmVzc2lvblByZWZpeH1JTVBMIjsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFk
ID0gIklNUEwtPiRnZXR0ZXJFeHByZXNzaW9uUHJlZml4IjsKKyAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgbXkgJGdldHRlckNvbnRlbnRUYWlsID0gIikiOwogCiAgICAgICAgICAgICBpZiAo
JHN2Z1Byb3BlcnR5VHlwZSkgewpAQCAtMTM0MSw3ICsxMzQ5LDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KIAogICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnQ7CiAgICAgICAgICAg
ICBpZiAoJGhhc0dldHRlckV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgICRnZXR0ZXJDb250
ZW50ID0gJGdldHRlckNvbnRlbnRIZWFkIC4gImVjIiAuICRnZXR0ZXJDb250ZW50VGFpbDsKKyAg
ICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudCA9ICRnZXR0ZXJDb250ZW50SGVhZCAuICgkZ2V0
dGVyQ29udGVudEhlYWQgPX4gL1woJC8gPyAiZWMiIDogIiwgZWMiKSAuICRnZXR0ZXJDb250ZW50
VGFpbDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRl
bnQgPSAkZ2V0dGVyQ29udGVudEhlYWQgLiAkZ2V0dGVyQ29udGVudFRhaWw7CiAgICAgICAgICAg
ICB9CkBAIC0xNDM3LDcgKzE0NDUsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICAgICAgbXkgJHNldHRlckV4cHJlc3Npb25QcmVmaXggPSAkY29kZUdlbmVy
YXRvci0+U2V0dGVyRXhwcmVzc2lvblByZWZpeChcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5h
bWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgICAgICBteSAkZWMgPSAkaGFzU2V0dGVy
RXhjZXB0aW9uID8gIiwgZWMiIDogIiI7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRleGNlcHRpb25Jbml0XG4iKSBpZiAkaGFzU2V0dGVyRXhjZXB0aW9uOwot
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJTVBMLT4kc2V0dGVy
RXhwcmVzc2lvblByZWZpeCRhcmckZWMpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIGlmICgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5
In0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9Owor
ICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5o
In0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JHtpbXBsZW1lbnRlZEJ5fTo6JHtzZXR0ZXJFeHByZXNzaW9uUHJlZml4fUlNUEwsICR7YXJnfSR7
ZWN9KTtcbiIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSU1QTC0+JHNldHRlckV4cHJlc3Npb25Q
cmVmaXgkYXJnJGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRleGNlcHRpb25SYWlzZU9uRXJyb3JcbiIp
IGlmICRoYXNTZXR0ZXJFeGNlcHRpb247CiAgICAgICAgICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDVl
MzNlYjJlOWIzMTU2NDFiMGNmYzY5MjRhNDYyMTkwNGM4MDRiZTkuLjdlMDJiZjEzNTI4NDZlMGI1
ZjhhMWQ4NjEyZGE1Nzg3ZjJhY2Q4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zOTIsMTQgKzM5MiwxNiBAQCBFTkQK
ICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewog
ICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAg
bXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsK
LSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4Q3VzdG9tR2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsi
Q3VzdG9tR2V0dGVyIn0KLSAgICAgICAgICAgIHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0gfHwg
JGF0dHJFeHQtPnsiQ3VzdG9tIn0pIHsKKyAgICAgICAgaWYgKCgkYXR0ckV4dC0+eyJWOEN1c3Rv
bUdldHRlciJ9IHx8ICRhdHRyRXh0LT57IkN1c3RvbUdldHRlciJ9IHx8CisgICAgICAgICAgICAg
JGF0dHJFeHQtPnsiVjhDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSkgJiYKKyAgICAg
ICAgICAgICEkYXR0ckV4dC0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
ICR7bmFtZX1BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYpOwogRU5ECiAgICAgICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0
LT57IlY4Q3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0KLSAgICAg
ICAgICAgIHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0p
IHsKKyAgICAgICAgaWYgKCgkYXR0ckV4dC0+eyJWOEN1c3RvbVNldHRlciJ9IHx8ICRhdHRyRXh0
LT57IkN1c3RvbVNldHRlciJ9IHx8CisgICAgICAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b20i
fSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSkgJiYKKyAgICAgICAgICAgICEkYXR0ckV4dC0+eyJJ
bXBsZW1lbnRlZEJ5In0pIHsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5E
KTsKICAgICBzdGF0aWMgdm9pZCAke25hbWV9QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
Jik7CiBFTkQKQEAgLTg3MCw4ICs4NzIsMTYgQEAgRU5ECiAKICAgICBteSAkZ2V0dGVyU3RyaW5n
OwogICAgIGlmICgkZ2V0dGVyU3RyaW5nVXNlc0ltcCkgewotICAgICAgICAkZ2V0dGVyU3RyaW5n
ID0gImltcC0+IiAuICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1w
bEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICRnZXR0ZXJT
dHJpbmcgLj0gImVjIiBpZiAkdXNlRXhjZXB0aW9uczsKKyAgICAgICAgbXkgJGdldHRlckV4cHJl
c3Npb25QcmVmaXggPSAkY29kZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvblByZWZpeChcJWlt
cGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICBpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9
KSB7CisgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiKTsKKyAgICAgICAgICAgICRnZXR0
ZXJTdHJpbmcgPSAiJHtpbXBsZW1lbnRlZEJ5fTo6JHtnZXR0ZXJFeHByZXNzaW9uUHJlZml4fWlt
cCI7CisgICAgICAgICAgICAkZ2V0dGVyU3RyaW5nIC49ICIsIGVjIiBpZiAkdXNlRXhjZXB0aW9u
czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRnZXR0ZXJTdHJpbmcgPSAiaW1wLT4k
Z2V0dGVyRXhwcmVzc2lvblByZWZpeCI7CisgICAgICAgICAgICAkZ2V0dGVyU3RyaW5nIC49ICJl
YyIgaWYgJHVzZUV4Y2VwdGlvbnM7CisgICAgICAgIH0KICAgICAgICAgJGdldHRlclN0cmluZyAu
PSAiKSI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgJGdldHRlclN0cmluZyA9ICJpbXBJbnN0YW5j
ZSI7CkBAIC04ODAsMTYgKzg5MCwxNiBAQCBFTkQKICAgICBteSAkcmVzdWx0OwogICAgIG15ICR3
cmFwcGVyOwogCi0gICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIkV2
ZW50TGlzdGVuZXIiICYmICRkYXRhTm9kZS0+bmFtZSBlcSAiRE9NV2luZG93IikgeworICAgIGlm
ICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiICYmICRkYXRh
Tm9kZS0+bmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgIGlmICghaW1wLT5kb2N1bWVudCgpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIp
OwogICAgIH0KIAogICAgIGlmICgkdXNlRXhjZXB0aW9ucykgewogICAgICAgICBpZiAoJG5hdGl2
ZVR5cGUgPX4gL15WOFBhcmFtZXRlci8pIHsKLSAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgICIgLiBDb252ZXJ0VG9WOFBhcmFtZXRlcigkYXR0cmlidXRlLT5zaWduYXR1cmUs
ICRuYXRpdmVUeXBlLCAidiIsICRnZXR0ZXJTdHJpbmcpIC4gIjtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAkbmF0aXZlVHlwZSwgInYiLCAkZ2V0dGVyU3RyaW5nKSAuICI7
XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgICRuYXRpdmVUeXBlIHYgPSAkZ2V0dGVyU3RyaW5nO1xuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVUeXBlIHYgPSAkZ2V0dGVyU3RyaW5n
O1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgR2VuZXJh
dGVTZXRET01FeGNlcHRpb24oIiAgICAiKSk7CiAgICAgICAgICRyZXN1bHQgPSAidiI7CkBAIC0x
MTExLDcgKzExMjEsMTMgQEAgRU5ECiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBteSAkc2V0dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5T
ZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0
dHJpYnV0ZSk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGltcC0+
JHNldHRlckV4cHJlc3Npb25QcmVmaXgkcmVzdWx0Iik7CisgICAgICAgICAgICBpZiAoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7
CisgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7aW1wbGVtZW50ZWRCeX0uaCIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJHtpbXBsZW1lbnRlZEJ5fTo6JHtzZXR0
ZXJFeHByZXNzaW9uUHJlZml4fWltcCwgJHJlc3VsdCIpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGltcC0+JHNldHRl
ckV4cHJlc3Npb25QcmVmaXgkcmVzdWx0Iik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiwgZWMiKSBpZiAkdXNlRXhjZXB0aW9uczsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIik7XG4iKTsKQEAgLTE4NjIsNyArMTg3
OCwxMSBAQCBzdWIgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlCiAgICAgICAgICIiOwog
ICAgIGlmICgkY3VzdG9tQWNjZXNzb3IgZXEgMSkgewogICAgICAgICAjIHVzZSB0aGUgbmFtaW5n
IGNvbnZlbnNpb24sIGludGVyZmFjZSArIChjYXBpdGFsaXplKSBhdHRyIG5hbWUKLSAgICAgICAg
JGN1c3RvbUFjY2Vzc29yID0gJGludGVyZmFjZU5hbWUgLiAiOjoiIC4gJGF0dHJOYW1lOworICAg
ICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1w
bGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gLiAiOjoi
IC4gJGF0dHJOYW1lOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJGN1c3RvbUFjY2Vz
c29yID0gJGludGVyZmFjZU5hbWUgLiAiOjoiIC4gJGF0dHJOYW1lOworICAgICAgICB9CiAgICAg
fQogCiAgICAgbXkgJGdldHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCmluZGV4IDU3YTM5MjgzYzNkOGU1MTI3Yjg0NTIx
ZTdhODNhYjc5Y2EzMzI5ZGEuLmJmNGQ3MDFjZmZmNTAyNjk5ZGY1ODBhNGZjZWVlOWQyZjViZDYw
MDUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUt
YmluZGluZ3MucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0
ZS1iaW5kaW5ncy5wbApAQCAtMzEsNiArMzEsNyBAQAogdXNlIHN0cmljdDsKIAogdXNlIEZpbGU6
OlBhdGg7Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgR2V0b3B0OjpMb25nOwogdXNlIEN3ZDsK
IApAQCAtNDcsNiArNDgsNyBAQCBteSAkcHJlZml4OwogbXkgJHByZXByb2Nlc3NvcjsKIG15ICR3
cml0ZURlcGVuZGVuY2llczsKIG15ICR2ZXJib3NlOworbXkgJHN1cHBsZW1lbnRhbERlcGVuZGVu
Y3lGaWxlOwogCiBHZXRPcHRpb25zKCdpbmNsdWRlPXNAJyA9PiBcQGlkbERpcmVjdG9yaWVzLAog
ICAgICAgICAgICAnb3V0cHV0RGlyPXMnID0+IFwkb3V0cHV0RGlyZWN0b3J5LApAQCAtNTcsMTEg
KzU5LDEyIEBAIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+IFxAaWRsRGlyZWN0b3JpZXMsCiAg
ICAgICAgICAgICdwcmVmaXg9cycgPT4gXCRwcmVmaXgsCiAgICAgICAgICAgICdwcmVwcm9jZXNz
b3I9cycgPT4gXCRwcmVwcm9jZXNzb3IsCiAgICAgICAgICAgICd2ZXJib3NlJyA9PiBcJHZlcmJv
c2UsCi0gICAgICAgICAgICd3cml0ZS1kZXBlbmRlbmNpZXMnID0+IFwkd3JpdGVEZXBlbmRlbmNp
ZXMpOworICAgICAgICAgICAnd3JpdGUtZGVwZW5kZW5jaWVzJyA9PiBcJHdyaXRlRGVwZW5kZW5j
aWVzLAorICAgICAgICAgICAnc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGU9cycgPT4gXCRzdXBw
bGVtZW50YWxEZXBlbmRlbmN5RmlsZSk7CiAKLW15ICRpZGxGaWxlID0gJEFSR1ZbMF07CitteSAk
dGFyZ2V0SWRsRmlsZSA9ICRBUkdWWzBdOwogCi1kaWUoJ011c3Qgc3BlY2lmeSBpbnB1dCBmaWxl
LicpIHVubGVzcyBkZWZpbmVkKCRpZGxGaWxlKTsKK2RpZSgnTXVzdCBzcGVjaWZ5IGlucHV0IGZp
bGUuJykgdW5sZXNzIGRlZmluZWQoJHRhcmdldElkbEZpbGUpOwogZGllKCdNdXN0IHNwZWNpZnkg
Z2VuZXJhdG9yJykgdW5sZXNzIGRlZmluZWQoJGdlbmVyYXRvcik7CiBkaWUoJ011c3Qgc3BlY2lm
eSBvdXRwdXQgZGlyZWN0b3J5LicpIHVubGVzcyBkZWZpbmVkKCRvdXRwdXREaXJlY3RvcnkpOwog
ZGllKCdNdXN0IHNwZWNpZnkgZGVmaW5lcycpIHVubGVzcyBkZWZpbmVkKCRkZWZpbmVzKTsKQEAg
LTY5LDE1ICs3Miw4MSBAQCBkaWUoJ011c3Qgc3BlY2lmeSBkZWZpbmVzJykgdW5sZXNzIGRlZmlu
ZWQoJGRlZmluZXMpOwogaWYgKCEkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSkgewogICAgICRvdXRw
dXRIZWFkZXJzRGlyZWN0b3J5ID0gJG91dHB1dERpcmVjdG9yeTsKIH0KKyRkZWZpbmVzID1+IHMv
XlxzK3xccyskLy9nOyAjIHRyaW0gd2hpdGVzcGFjZQorJHRhcmdldElkbEZpbGUgPSBDd2Q6OnJl
YWxwYXRoKCR0YXJnZXRJZGxGaWxlKTsKIGlmICgkdmVyYm9zZSkgewotICAgIHByaW50ICIkZ2Vu
ZXJhdG9yOiAkaWRsRmlsZVxuIjsKKyAgICBwcmludCAiJGdlbmVyYXRvcjogJHRhcmdldElkbEZp
bGVcbiI7CiB9Ci0kZGVmaW5lcyA9fiBzL15ccyt8XHMrJC8vZzsgIyB0cmltIHdoaXRlc3BhY2UK
K215ICR0YXJnZXRJbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNlKGJhc2VuYW1lKCR0YXJnZXRJZGxG
aWxlKSwgIi5pZGwiKTsKKworbXkgJGlkbEZvdW5kID0gMDsKK215IEBzdXBwbGVtZW50ZWRJZGxG
aWxlczsKK2lmICgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpIHsKKyAgICAjIFRoZSBmb3Jt
YXQgb2YgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBmaWxlOgorICAgICMKKyAgICAjIERPTVdp
bmRvdy5pZGwgUC5pZGwgUS5pZGwgUi5pZGwKKyAgICAjIERvY3VtZW50LmlkbCBTLmlkbAorICAg
ICMgRXZlbnQuaWRsCisgICAgIyAuLi4KKyAgICAjCisgICAgIyBUaGUgYWJvdmUgaW5kaWNhdGVz
IHRoYXQgRE9NV2luZG93LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgUC5pZGwsIFEuaWRsIGFuZCBS
LmlkbCwKKyAgICAjIERvY3VtZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgUy5pZGwsIGFuZCBF
dmVudC5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IG5vIElETHMuCisgICAgIyBUaGUgSURMIHRoYXQg
c3VwcGxlbWVudHMgYW5vdGhlciBJREwgKGUuZy4gUC5pZGwpIG5ldmVyIGFwcGVhcnMgaW4gdGhl
IGRlcGVuZGVuY3kgZmlsZS4KKyAgICBvcGVuIEZILCAiPCAkc3VwcGxlbWVudGFsRGVwZW5kZW5j
eUZpbGUiIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlXG4i
OworICAgIHdoaWxlIChteSAkbGluZSA9IDxGSD4pIHsKKyAgICAgICAgbXkgKCRpZGxGaWxlLCBA
Zm9sbG93aW5nSWRsRmlsZXMpID0gc3BsaXQoL1xzKy8sICRsaW5lKTsKKyAgICAgICAgaWYgKCRp
ZGxGaWxlIGFuZCAkaWRsRmlsZSBlcSAkdGFyZ2V0SWRsRmlsZSkgeworICAgICAgICAgICAgJGlk
bEZvdW5kID0gMTsKKyAgICAgICAgICAgIEBzdXBwbGVtZW50ZWRJZGxGaWxlcyA9IEBmb2xsb3dp
bmdJZGxGaWxlczsKKyAgICAgICAgfQorICAgIH0KKyAgICBjbG9zZSBGSDsKKworICAgIGlmICgh
JGlkbEZvdW5kKSB7CisgICAgICAgIGlmICgkdmVyYm9zZSkgeworICAgICAgICAgICAgcHJpbnQg
IiR0YXJnZXRJZGxGaWxlIGlzIHN1cHBsZW1lbnRpbmcgYW5vdGhlciBJREwgZmlsZSwgYW5kIHRo
dXMgLmggYW5kIC5jcHAgZm9yICR0YXJnZXRJZGxGaWxlIGFyZSBub3QgZ2VuZXJhdGVkLlxuIjsK
KyAgICAgICAgfQorICAgICAgICBleGl0IDA7CisgICAgfQorfQorCisjIFBhcnNlIHRoZSB0YXJn
ZXQgSURMIGZpbGUuCitteSAkdGFyZ2V0UGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3Nl
KTsKK215ICR0YXJnZXREb2N1bWVudCA9ICR0YXJnZXRQYXJzZXItPlBhcnNlKCR0YXJnZXRJZGxG
aWxlLCAkZGVmaW5lcywgJHByZXByb2Nlc3Nvcik7CiAKLSMgUGFyc2UgdGhlIGdpdmVuIElETCBm
aWxlLgotbXkgJHBhcnNlciA9IElETFBhcnNlci0+bmV3KCEkdmVyYm9zZSk7Ci1teSAkZG9jdW1l
bnQgPSAkcGFyc2VyLT5QYXJzZSgkaWRsRmlsZSwgJGRlZmluZXMsICRwcmVwcm9jZXNzb3IpOwor
Zm9yZWFjaCBteSAkaWRsRmlsZSAoQHN1cHBsZW1lbnRlZElkbEZpbGVzKSB7CisgICAgbmV4dCBp
ZiAkaWRsRmlsZSBlcSAkdGFyZ2V0SWRsRmlsZTsKKworICAgIG15ICRpbnRlcmZhY2VOYW1lID0g
ZmlsZXBhcnNlKGJhc2VuYW1lKCRpZGxGaWxlKSwgIi5pZGwiKTsKKyAgICBteSAkcGFyc2VyID0g
SURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKKyAgICBteSAkZG9jdW1lbnQgPSAkcGFyc2VyLT5Q
YXJzZSgkaWRsRmlsZSwgJGRlZmluZXMsICRwcmVwcm9jZXNzb3IpOworCisgICAgZm9yZWFjaCBt
eSAkZGF0YU5vZGUgKEB7JGRvY3VtZW50LT5jbGFzc2VzfSkgeworICAgICAgICBpZiAoJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3VwcGxlbWVudGFsIn0gYW5kICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN1cHBsZW1lbnRhbCJ9IGVxICR0YXJnZXRJbnRlcmZhY2VO
YW1lKSB7CisgICAgICAgICAgICBteSAkdGFyZ2V0RGF0YU5vZGU7CisgICAgICAgICAgICBmb3Jl
YWNoIG15ICRjbGFzcyAoQHskdGFyZ2V0RG9jdW1lbnQtPmNsYXNzZXN9KSB7CisgICAgICAgICAg
ICAgICAgaWYgKCRjbGFzcy0+bmFtZSBlcSAkdGFyZ2V0SW50ZXJmYWNlTmFtZSkgeworICAgICAg
ICAgICAgICAgICAgICAkdGFyZ2V0RGF0YU5vZGUgPSAkY2xhc3M7CisgICAgICAgICAgICAgICAg
ICAgIGxhc3Q7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZGllICJOb3QgZm91bmQgYW4gaW50ZXJmYWNlICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0gaW4gJHt0
YXJnZXRJbnRlcmZhY2VOYW1lfS5pZGwuIiB1bmxlc3MgZGVmaW5lZCAkdGFyZ2V0RGF0YU5vZGU7
CisKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJp
YnV0ZXN9KSB7CisgICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0aGlzIGF0dHJpYnV0ZSBp
cyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNlTmFtZS4KKyAgICAgICAgICAgICAgICAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAk
aW50ZXJmYWNlTmFtZTsKKworICAgICAgICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4
dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBhdHRyaWJ1dGUuCisgICAgICAgICAgICAgICAgZm9y
ZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICAgICAgICAgIG5leHQgaWYgKCRleHRlbmRlZEF0
dHJpYnV0ZU5hbWUgZXEgIlN1cHBsZW1lbnRhbCIpOworICAgICAgICAgICAgICAgICAgICAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0
ZU5hbWV9ID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1
dGVOYW1lfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVzaChAeyR0YXJn
ZXREYXRhTm9kZS0+YXR0cmlidXRlc30sICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQogCi0jIEdlbmVyYXRlIGRlc2lyZWQgb3V0cHV0IGZvciBnaXZlbiBJ
REwgZmlsZS4KKyMgR2VuZXJhdGUgZGVzaXJlZCBvdXRwdXQgZm9yIHRoZSB0YXJnZXQgSURMIGZp
bGUuCiBteSAkY29kZUdlbiA9IENvZGVHZW5lcmF0b3ItPm5ldyhcQGlkbERpcmVjdG9yaWVzLCAk
Z2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0b3J5LCAkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSwgMCwg
JHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5kZW5jaWVzLCAkdmVyYm9zZSk7Ci0kY29kZUdlbi0+
UHJvY2Vzc0RvY3VtZW50KCRkb2N1bWVudCwgJGRlZmluZXMpOworJGNvZGVHZW4tPlByb2Nlc3NE
b2N1bWVudCgkdGFyZ2V0RG9jdW1lbnQsICRkZWZpbmVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Jlc29sdmUtc3VwcGxlbWVudGFsLnBsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFhYjE5MGQ1MzJmZmQwZmFmNWYxZDZhZmZlODc0M2E3YWEwODkzY2MKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Jlc29sdmUtc3VwcGxlbWVu
dGFsLnBsCkBAIC0wLDAgKzEsOTMgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworIworIyBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIwor
IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisjIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisjIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIworCit1c2Ugc3RyaWN0OworCit1c2UgRmlsZTo6QmFz
ZW5hbWU7Cit1c2UgR2V0b3B0OjpMb25nOwordXNlIEN3ZDsKKwordXNlIElETFBhcnNlcjsKKwor
bXkgJGRlZmluZXM7CitteSAkcHJlcHJvY2Vzc29yOworbXkgJHZlcmJvc2U7CitteSAkaWRsRmls
ZXNMaXN0OworbXkgJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlOworCitHZXRPcHRpb25zKCdk
ZWZpbmVzPXMnID0+IFwkZGVmaW5lcywKKyAgICAgICAgICAgJ3ByZXByb2Nlc3Nvcj1zJyA9PiBc
JHByZXByb2Nlc3NvciwKKyAgICAgICAgICAgJ3ZlcmJvc2UnID0+IFwkdmVyYm9zZSwKKyAgICAg
ICAgICAgJ2lkbEZpbGVzTGlzdD1zJyA9PiBcJGlkbEZpbGVzTGlzdCwKKyAgICAgICAgICAgJ3N1
cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlPXMnID0+IFwkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZp
bGUpOworCitkaWUoJ011c3Qgc3BlY2lmeSAjZGVmaW5lIG1hY3JvcyB1c2luZyAtLWRlZmluZXMu
JykgdW5sZXNzIGRlZmluZWQoJGRlZmluZXMpOworZGllKCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0
IGZpbGUgdXNpbmcgLS1zdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZS4nKSB1bmxlc3MgZGVmaW5l
ZCgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOworZGllKCdNdXN0IHNwZWNpZnkgdGhlIGZp
bGUgbGlzdGluZyBhbGwgSURMcyB1c2luZyAtLWlkbEZpbGVzTGlzdC4nKSB1bmxlc3MgZGVmaW5l
ZCgkaWRsRmlsZXNMaXN0KTsKKworaWYgKCR2ZXJib3NlKSB7CisgICAgcHJpbnQgIlJlc29sdmlu
ZyBbU3VwcGxlbWVudGFsPVhYWF0gZGVwZW5kZW5jaWVzIGluIGFsbCBJREwgZmlsZXMuXG4iOwor
fQorCitvcGVuIEZILCAiPCAkaWRsRmlsZXNMaXN0IiBvciBkaWUgIkNhbm5vdCBvcGVuICRpZGxG
aWxlc0xpc3RcbiI7CitteSBAaWRsRmlsZXMgPSA8Rkg+OworY2hvbXAoQGlkbEZpbGVzKTsKK2Ns
b3NlIEZIOworCisjIFBhcnNlIGFsbCBJREwgZmlsZXMuCitteSAlZG9jdW1lbnRzOworbXkgJWlu
dGVyZmFjZU5hbWVUb0lkbEZpbGU7Citmb3JlYWNoIG15ICRpZGxGaWxlIChAaWRsRmlsZXMpIHsK
KyAgICBteSAkZnVsbFBhdGggPSBDd2Q6OnJlYWxwYXRoKCRpZGxGaWxlKTsKKyAgICBteSAkcGFy
c2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKKyAgICAkZG9jdW1lbnRzeyRmdWxsUGF0
aH0gPSAkcGFyc2VyLT5QYXJzZSgkaWRsRmlsZSwgJGRlZmluZXMsICRwcmVwcm9jZXNzb3IpOwor
ICAgICRpbnRlcmZhY2VOYW1lVG9JZGxGaWxle2ZpbGVwYXJzZShiYXNlbmFtZSgkaWRsRmlsZSks
ICIuaWRsIil9ID0gJGZ1bGxQYXRoOworfQorCisjIFJlc29sdmVzIFtTdXBwbGVtZW50YWw9WFhY
XSBkZXBlbmRlbmNpZXMuCitteSAlc3VwcGxlbWVudGFsczsKK2ZvcmVhY2ggbXkgJGlkbEZpbGUg
KGtleXMgJWRvY3VtZW50cykgeworICAgICRzdXBwbGVtZW50YWxzeyRpZGxGaWxlfSA9IFtdOwor
ICAgIGZvcmVhY2ggbXkgJGRhdGFOb2RlIChAeyRkb2N1bWVudHN7JGlkbEZpbGV9LT5jbGFzc2Vz
fSkgeworICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3VwcGxl
bWVudGFsIn0pIHsKKyAgICAgICAgICAgIG15ICR0YXJnZXRJZGxGaWxlID0gJGludGVyZmFjZU5h
bWVUb0lkbEZpbGV7JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3VwcGxlbWVudGFs
In19OworICAgICAgICAgICAgcHVzaChAeyRzdXBwbGVtZW50YWxzeyR0YXJnZXRJZGxGaWxlfX0s
ICRpZGxGaWxlKTsKKyAgICAgICAgICAgICMgVHJlYXRzIGFzIGlmIHRoaXMgSURMIGZpbGUgZG9l
cyBub3QgZXhpc3QuCisgICAgICAgICAgICBkZWxldGUgJHN1cHBsZW1lbnRhbHN7JGlkbEZpbGV9
OworICAgICAgICB9CisgICAgfQorfQorCisjIE91dHB1dHMgdGhlIGRlcGVuZGVuY3kuCisjIFRo
ZSBmb3JtYXQgb2YgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBmaWxlOgorIworIyBET01XaW5k
b3cuaWRsIFAuaWRsIFEuaWRsIFIuaWRsCisjIERvY3VtZW50LmlkbCBTLmlkbAorIyBFdmVudC5p
ZGwKKyMgLi4uCisjCisjIFRoZSBhYm92ZSBpbmRpY2F0ZXMgdGhhdCBET01XaW5kb3cuaWRsIGlz
IHN1cHBsZW1lbnRlZCBieSBQLmlkbCwgUS5pZGwgYW5kIFIuaWRsLAorIyBEb2N1bWVudC5pZGwg
aXMgc3VwcGxlbWVudGVkIGJ5IFMuaWRsLCBhbmQgRXZlbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBi
eSBubyBJRExzLgorIyBUaGUgSURMIHRoYXQgc3VwcGxlbWVudHMgYW5vdGhlciBJREwgKGUuZy4g
UC5pZGwpIG5ldmVyIGFwcGVhcnMgaW4gdGhlIGRlcGVuZGVuY3kgZmlsZS4KK29wZW4gRkgsICI+
ICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSIgb3IgZGllICJDYW5ub3Qgb3BlbiAkc3VwcGxl
bWVudGFsRGVwZW5kZW5jeUZpbGVcbiI7Citmb3JlYWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMg
JXN1cHBsZW1lbnRhbHMpIHsKKyAgICBwcmludCBGSCAkaWRsRmlsZSwgIiBAeyRzdXBwbGVtZW50
YWxzeyRpZGxGaWxlfX1cbiI7Cit9CitjbG9zZSBGSDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZh
Y2UuY3BwCmluZGV4IDdmYTRhZjM1MjkyNjdiYTcyYjBhOTQxMDA3OGI2ZjUwMGQ1NzliM2QuLmYx
MTRmOTA0ODIzOWMwOTcwM2ZmYjkzNzZmYjQ1MTc5ZThhNDI1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0SW50ZXJmYWNlLmNwcApAQCAtMjQsOCArMjQsMTIgQEAKIAogI2luY2x1ZGUgIldlYkRPTVRl
c3RJbnRlcmZhY2UuaCIKIAorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJUZXN0SW50ZXJm
YWNlLmgiCisjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5oIgorI2luY2x1ZGUgIldlYkRPTVN0
cmluZy5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKKyNpbmNsdWRlICJ3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCkBAIC03NCw2ICs3OCwzNCBAQCBXZWJET01UZXN0SW50ZXJmYWNlOjp+
V2ViRE9NVGVzdEludGVyZmFjZSgpCiAgICAgbV9pbXBsID0gMDsKIH0KIAorI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorV2ViRE9NU3RyaW5nIFdlYkRPTVRl
c3RJbnRlcmZhY2U6OnN0cjEoKSBjb25zdAoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICBy
ZXR1cm4gV2ViRE9NU3RyaW5nKCk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV1RG
OjpTdHJpbmcmPihUZXN0U3VwcGxlbWVudGFsOjpzdHIxKGltcGwoKSkpOworfQorCisjZW5kaWYK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKK1dlYkRPTVN0
cmluZyBXZWJET01UZXN0SW50ZXJmYWNlOjpzdHIyKCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwo
KSkKKyAgICAgICAgcmV0dXJuIFdlYkRPTVN0cmluZygpOworCisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IFdURjo6U3RyaW5nJj4oVGVzdFN1cHBsZW1lbnRhbDo6c3RyMihpbXBsKCkpKTsK
K30KKwordm9pZCBXZWJET01UZXN0SW50ZXJmYWNlOjpzZXRTdHIyKGNvbnN0IFdlYkRPTVN0cmlu
ZyYgbmV3U3RyMikKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3RyMihpbXBsKCksIG5ld1N0cjIpOworfQorCisjZW5kaWYK
IFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIHRvV2ViQ29yZShjb25zdCBXZWJET01UZXN0SW50ZXJm
YWNlJiB3cmFwcGVyKQogewogICAgIHJldHVybiB3cmFwcGVyLmltcGwoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVy
ZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0SW50ZXJmYWNlLmgKaW5kZXggNWRiNWRiOGFlMDhlNWFlY2M5MmFjYWY3ZDY3MjA2ZjliOGQz
N2M5Zi4uNWFhMDNjNzk1MDk4YzI3NGFmNjcwYzM0NzA1MTg3ODJiYjE2ZTE2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0SW50ZXJmYWNlLmgKQEAgLTQxLDYgKzQxLDEzIEBAIHB1YmxpYzoKICAgICBXZWJE
T01UZXN0SW50ZXJmYWNlJiBvcGVyYXRvcj0oY29uc3QgV2ViRE9NVGVzdEludGVyZmFjZSYpOwog
ICAgIHZpcnR1YWwgfldlYkRPTVRlc3RJbnRlcmZhY2UoKTsKIAorI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIFdlYkRPTVN0cmluZyBzdHIxKCkgY29u
c3Q7CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKyAgICBXZWJET01TdHJpbmcgc3RyMigpIGNvbnN0OworICAgIHZvaWQgc2V0U3RyMihjb25z
dCBXZWJET01TdHJpbmcmKTsKKyNlbmRpZgogCiAgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSog
aW1wbCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2Uu
Y3BwCmluZGV4IDcwODZjODBhZmU2NzFhNDI3Y2I2YWU5OGMyYjFkMTcwOTYzNTE0OWEuLjVmOGZh
ZmVkMzE2MjViZDJhYzBkYTZkMWE0NmZmZDYyODlmNDcxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgogI2lu
Y2x1ZGUgIlRlc3RJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJUZXN0U3VwcGxlbWVudGFsLmgiCiAj
aW5jbHVkZSAiV2ViS2l0RE9NQmluZGluZy5oIgogI2luY2x1ZGUgImdvYmplY3QvQ29udmVydFRv
VVRGOFN0cmluZy5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmgi
CkBAIC01MSw2ICs1Miw0NyBAQCBXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBraXQoV2ViQ29yZTo6
VGVzdEludGVyZmFjZSogb2JqKQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0IC8vCiAKK2dj
aGFyKgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfc3RyMShXZWJLaXRET01UZXN0SW50
ZXJmYWNlKiBzZWxmKQoreworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQorICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNl
ICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnY2hhciogcmVzID0gY29udmVydFRv
VVRGOFN0cmluZyhUZXN0U3VwcGxlbWVudGFsOjpzdHIxKGl0ZW0pKTsKKyAgICByZXR1cm4gcmVz
OworI2Vsc2UKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KK30KKworZ2NoYXIqCit3ZWJraXRfZG9tX3Rlc3Rf
aW50ZXJmYWNlX2dldF9zdHIyKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpCit7CisjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoc2VsZiwgMCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UgKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOworICAgIGdjaGFyKiByZXMgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKFRlc3RTdXBwbGVt
ZW50YWw6OnN0cjIoaXRlbSkpOworICAgIHJldHVybiByZXM7CisjZWxzZQorICAgIHJldHVybiBO
VUxMOworI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KSAqLworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9zdHIyKFdlYktp
dERPTVRlc3RJbnRlcmZhY2UqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKK3sKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICBnX3JldHVybl9pZl9m
YWlsKHNlbGYpOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAg
ICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRfdmFs
dWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOworICAgIFRlc3RTdXBwbGVtZW50YWw6
OnNldFN0cjIoaXRlbSwgY29udmVydGVkX3ZhbHVlKTsKKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KK30KKwogCiBHX0RFRklORV9UWVBFKFdl
YktpdERPTVRlc3RJbnRlcmZhY2UsIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2UsIFdFQktJVF9U
WVBFX0RPTV9PQkpFQ1QpCiAKQEAgLTY5LDYgKzExMSwxMiBAQCBXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlKiBjb3JlKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHJlcXVlc3QpCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIGVudW0gewogICAgIFBST1BfMCwKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKKyAgICBQUk9QX1NUUjEsCisjZW5kaWYgLyogRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCisjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgUFJPUF9TVFIyLAorI2VuZGlmIC8qIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLwogfTsKIAogCkBAIC05
MSw3ICsxMzksMTYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9maW5h
bGl6ZShHT2JqZWN0KiBvYmplY3QpCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJm
YWNlX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdW
YWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmID0g
V0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRShvYmplY3QpOworICAgIFdlYkNvcmU6OlRlc3RJbnRl
cmZhY2UqIGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIHN3aXRjaCAocHJvcF9p
ZCkgeworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAg
IGNhc2UgUFJPUF9TVFIyOgorICAgIHsKKyAgICAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3Ry
Mihjb3JlU2VsZiwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1
ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JK
RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAg
ICAgICAgYnJlYWs7CkBAIC0xMDIsNyArMTU5LDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21f
dGVzdF9pbnRlcmZhY2Vfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9p
CiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBz
cGVjKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBX
ZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmID0gV0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRShv
YmplY3QpOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmVTZWxmID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwogICAgIHN3aXRjaCAocHJvcF9pZCkgeworI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIGNhc2UgUFJPUF9TVFIxOgorICAgIHsKKyAg
ICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgY29udmVydFRvVVRGOFN0cmluZyhUZXN0
U3VwcGxlbWVudGFsOjpzdHIxKGNvcmVTZWxmKSkpOworICAgICAgICBicmVhazsKKyAgICB9Cisj
ZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgY2FzZSBQ
Uk9QX1NUUjI6CisgICAgeworICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252
ZXJ0VG9VVEY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN0cjIoY29yZVNlbGYpKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikgKi8KICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lO
VkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMTI1LDYgKzE5OCwyNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJm
YWNlX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdEludGVyZmFjZUNsYXNzKiByZQogICAgIGdvYmpl
Y3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfcHJv
cGVydHk7CiAgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RlZCA9IHdlYmtpdF9kb21fdGVzdF9p
bnRlcmZhY2VfY29uc3RydWN0ZWQ7CiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmpl
Y3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfU1RSMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmco
InN0cjEiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X2ludGVyZmFjZV9zdHIxIiwgLyogc2hvcnQgZGVz
Y3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInJlYWQtb25seSAgZ2NoYXIqIFRlc3RJbnRlcmZhY2Uuc3RyMSIsIC8q
IGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
IiwgLyogZGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKyNlbmRpZiAvKiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBST1BfU1RSMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdfcGFyYW1fc3BlY19zdHJpbmcoInN0cjIiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X2ludGVyZmFj
ZV9zdHIyIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtd3JpdGUgIGdjaGFyKiBU
ZXN0SW50ZXJmYWNlLnN0cjIiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEg
ZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiIsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURXUklURSkpOworI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKSAqLwogCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2Uu
aAppbmRleCBmOWFmODY2YWEwMWY4ZGNlMjM0OTMzODMzZjBhYWJjYjdhMmQyYTRkLi43YzM2NTA1
OGI5Yjg0NDEyYmViN2JkYmM3NThkNzA1NWM0MGVhY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdEludGVyZmFjZS5oCkBAIC00Niw2ICs0NiwzNyBAQCBzdHJ1Y3QgX1dlYktpdERP
TVRlc3RJbnRlcmZhY2VDbGFzcyB7CiBXRUJLSVRfQVBJIEdUeXBlCiB3ZWJraXRfZG9tX3Rlc3Rf
aW50ZXJmYWNlX2dldF90eXBlICh2b2lkKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfaW50
ZXJmYWNlX2dldF9zdHIxOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RJbnRlcmZhY2UKKyAq
CisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnY2hhcioKK3dlYmtpdF9kb21fdGVz
dF9pbnRlcmZhY2VfZ2V0X3N0cjEoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZik7CisKKy8q
KgorICogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfc3RyMjoKKyAqIEBzZWxmOiBBICNX
ZWJLaXRET01UZXN0SW50ZXJmYWNlCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9B
UEkgZ2NoYXIqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIyKFdlYktpdERPTVRl
c3RJbnRlcmZhY2UqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vf
c2V0X3N0cjI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdEludGVyZmFjZQorICogQHZhbHVl
OiBBICNnY2hhcgorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X3N0cjIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSog
c2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmIC8qIFdl
YktpdERPTVRlc3RJbnRlcmZhY2VfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA4NWQ4
MTAwZTI3N2Y1YjAzMDNmMTQ0YWZkZGIzZWU4YjRiZjRiNmE0Li5lNzIzYjY5ODBhMDcwYzdkNDdm
MGVkZjdlZDRjMTRjNGRiZDVmMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjcsOSAr
MjcsMTUgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCiAjaW5jbHVkZSAiVGVzdEludGVyZmFjZS5oIgorI2luY2x1ZGUgIlRlc3RTdXBwbGVt
ZW50YWwuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisj
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNlbmRpZgor
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCwxMiAr
NTYsMjEgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Rlc3RJbnRlcmZhY2UpOwogCiBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmYWNlVGFibGVWYWx1ZXNbXSA9
CiB7CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAg
eyAic3RyMSIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VTdHIxKSwgKGludHB0cl90
KTAgVEhVTktfR0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9LAorI2Vu
ZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAg
eyAic3RyMiIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlU3RyMiksIChpbnRwdHJfdClzZXRKU1Rlc3RJ
bnRlcmZhY2VTdHIyIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZHOjpOb0ludHJpbnNp
YykgfSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQorICAgIHsgInN0cjMiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZVN0cjMpLCAoaW50cHRyX3Qp
c2V0SlNUZXN0SW50ZXJmYWNlU3RyMyBUSFVOS19HRU5FUkFUT1IoMCkgSU5UUklOU0lDKERGRzo6
Tm9JbnRyaW5zaWMpIH0sCisjZW5kaWYKICAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRFbnVtIHwg
UmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpMCBUSFVOS19HRU5FUkFU
T1IoMCkgSU5UUklOU0lDKERGRzo6Tm9JbnRyaW5zaWMpIH0sCiAgICAgeyAwLCAwLCAwLCAwIFRI
VU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZHOjpOb0ludHJpbnNpYykgfQogfTsKIAogI3Vu
ZGVmIFRIVU5LX0dFTkVSQVRPUgotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RJbnRlcmZh
Y2VUYWJsZSA9IHsgMiwgMSwgSlNUZXN0SW50ZXJmYWNlVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRp
YyBjb25zdCBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlVGFibGUgPSB7IDgsIDcsIEpTVGVzdElu
dGVyZmFjZVRhYmxlVmFsdWVzLCAwIH07CiAvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAq
LwogI2lmIEVOQUJMRShKSVQpCiAjZGVmaW5lIFRIVU5LX0dFTkVSQVRPUihnZW5lcmF0b3IpICwg
Z2VuZXJhdG9yCkBAIC0xODcsMTIgKzIwMiw3MCBAQCBib29sIEpTVGVzdEludGVyZmFjZTo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYwog
ICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0SW50ZXJmYWNlLCBCYXNl
PihleGVjLCAmSlNUZXN0SW50ZXJmYWNlVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcik7CiB9CiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25k
aXRpb24xMikKK0pTVmFsdWUganNUZXN0SW50ZXJmYWNlU3RyMShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQoreworICAgIEpTVGVzdEludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdEludGVyZmFjZSo+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIFRlc3RJbnRlcmZhY2UqIGlt
cCA9IHN0YXRpY19jYXN0PFRlc3RJbnRlcmZhY2UqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3RyMShp
bXApKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VT
dHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYp
Cit7CisgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0
SW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CisgICAgVGVzdEludGVyZmFjZSogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdEludGVyZmFjZSo+KGNh
c3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBU
ZXN0U3VwcGxlbWVudGFsOjpzdHIyKGltcCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNl
bmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCitK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZVN0cjMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJikKK3sKKyAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRo
aXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihhc09iamVjdChzbG90QmFzZSkpOwor
ICAgIHJldHVybiBKU1Rlc3RTdXBwbGVtZW50YWw6OnN0cjMoY2FzdGVkVGhpcywgZXhlYyk7Cit9
CisKKyNlbmRpZgorCiBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNU
ZXN0SW50ZXJmYWNlKiBkb21PYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihh
c09iamVjdChzbG90QmFzZSkpOwogICAgIHJldHVybiBKU1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0
cnVjdG9yKGV4ZWMsIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOwogfQogCit2b2lkIEpTVGVz
dEludGVyZmFjZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK3sKKyAgICBKU1Rlc3RJbnRlcmZhY2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50
ZXJmYWNlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCAmc19pbmZvKTsKKyAgICBsb29rdXBQdXQ8SlNUZXN0SW50ZXJmYWNlLCBCYXNlPihleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCAmSlNUZXN0SW50ZXJmYWNlVGFibGUsIHRoaXNPYmplY3QsIHNs
b3QpOworfQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
Cit2b2lkIHNldEpTVGVzdEludGVyZmFjZVN0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3Rl
ZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzT2JqZWN0KTsKKyAgICBU
ZXN0SW50ZXJmYWNlKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0SW50ZXJmYWNlKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdHIyKGltcCwgdXN0cmluZ1Rv
U3RyaW5nKHZhbHVlLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMp
KSk7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCit2b2lkIHNldEpTVGVzdEludGVyZmFjZVN0cjMoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBKU1Rlc3RTdXBwbGVt
ZW50YWw6OnNldFN0cjMoc3RhdGljX2Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc09iamVjdCks
IGV4ZWMsIHZhbHVlKTsKK30KKworI2VuZGlmCisKIEpTVmFsdWUgSlNUZXN0SW50ZXJmYWNlOjpn
ZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEludGVyZmFjZUNvbnN0
cnVjdG9yPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5oCmluZGV4IGJjMmIwNjdhZDNhMGZjN2IxZmE4ZjFmN2JkYTk3
MjVkMWExZDgyMDMuLjVlNWQzNTcxNjU3NmJlMzAxOWE5MzI3ZDdmZmYyNmU2ZmEzOWIyZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlND
ZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAKICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQpAQCAtMTM0LDYgKzEzNSwxMSBAQCBwcm90ZWN0ZWQ6CiAKIC8vIEF0dHJpYnV0
ZXMKIAorSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN0cjEoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVz
dEludGVyZmFjZVN0cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYpOwordm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdHIyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0SW50
ZXJmYWNlU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdEludGVyZmFjZVN0cjMoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZh
Y2UuaAppbmRleCBkYjdiZTI4Y2I5YWQ0MDhjZDUyZDg4ZjcwYjE4OGRkZDgzODI1ZjkyLi4yMzQy
NTliNDU0MDljYTMzZTZhNzIyZDkyNzMxMGE4NmI1NTU0MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVy
ZmFjZS5oCkBAIC0yOCw3ICsyOCwyMCBAQAogCiAjaWYgV0VCS0lUX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCiAKK0BjbGFzcyBOU1N0cmluZzsKKwogQGludGVy
ZmFjZSBET01UZXN0SW50ZXJmYWNlIDogRE9NT2JqZWN0CisjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChOU1N0cmluZyAqKXN0cjE7CisjZW5kaWYKKyNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKy0gKE5TU3RyaW5n
ICopc3RyMjsKKy0gKHZvaWQpc2V0U3RyMjooTlNTdHJpbmcgKiluZXdTdHIyOworI2VuZGlmCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChOU1N0cmlu
ZyAqKXN0cjM7CistICh2b2lkKXNldFN0cjM6KE5TU3RyaW5nICopbmV3U3RyMzsKKyNlbmRpZgog
QGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCmluZGV4IGFiNTkzMzMwYzg3
MjBjYWU4ZTFmYmM0YTFiZjEzNDQzYzU4YjkwZTguLmY0NjljZjEwYWY4NGY1YjliMWEyYzY5OGIx
MzIxMWM3OTc5MGUxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQpAQCAtNDEsNyArNDEs
OSBAQAogI2ltcG9ydCAiRE9NVGVzdEludGVyZmFjZUludGVybmFsLmgiCiAjaW1wb3J0ICJFeGNl
cHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW1w
b3J0ICJLVVJMLmgiCiAjaW1wb3J0ICJUZXN0SW50ZXJmYWNlLmgiCisjaW1wb3J0ICJUZXN0U3Vw
cGxlbWVudGFsLmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgogI2ltcG9ydCAiV2ViQ29yZU9i
akNFeHRyYXMuaCIKICNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKQEAgLTY4LDYg
KzcwLDQyIEBACiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0KIAorI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorLSAoTlNTdHJpbmcgKilzdHIxCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBUZXN0U3Vw
cGxlbWVudGFsOjpzdHIxKElNUEwpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKy0gKE5TU3RyaW5nICopc3RyMgoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gVGVzdFN1cHBs
ZW1lbnRhbDo6c3RyMihJTVBMKTsKK30KKworLSAodm9pZClzZXRTdHIyOihOU1N0cmluZyAqKW5l
d1N0cjIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3RyMihJTVBMLCBuZXdTdHIyKTsKK30KKyNlbmRpZgorCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChOU1N0cmlu
ZyAqKXN0cjMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgcmV0dXJuIFRlc3RTdXBwbGVtZW50YWw6OnN0cjMoSU1QTCk7Cit9CisKKy0gKHZvaWQpc2V0
U3RyMzooTlNTdHJpbmcgKiluZXdTdHIzCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIFRlc3RTdXBwbGVtZW50YWw6OnNldFN0cjMoSU1QTCwgbmV3U3Ry
Myk7Cit9CisjZW5kaWYKKwogQGVuZAogCiBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBjb3JlKERP
TVRlc3RJbnRlcmZhY2UgKndyYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY2
ZmRkNTFhOGQ2ZTc4Y2YzMzIwZWFlZWYxODZiOWNmYjI2ZmYzMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFsLmlk
bApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtc3RyQXJnLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRXN0ckFyZywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgSURMIGZpbGUgaXMgZm9yIHRl
c3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIGFuZCBmb3IgdHJhY2tpbmcKKy8vIGNo
YW5nZXMgaW4gaXRzIG91cHV0LgorbW9kdWxlIHRlc3QgeworICAgIGludGVyZmFjZSBbCisgICAg
ICAgIENvbmRpdGlvbmFsPUNvbmRpdGlvbjExfENvbmRpdGlvbjEyLAorICAgICAgICBTdXBwbGVt
ZW50YWw9VGVzdEludGVyZmFjZQorICAgIF0gVGVzdFN1cHBsZW1lbnRhbCB7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc3RyMTsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0
cmluZyBzdHIyOworICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVy
XSBET01TdHJpbmcgc3RyMzsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA1
YjQ1YTZkZjMzYzE2OTJhM2FmN2Q0NTA1NzY1MzJlYzFhODZkM2Q5Li5kYWYzNmY5NzVmNGZiMDBj
Njc3NTMyODY0NDcwZmM0NmNjY2YxODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjUs
NiArMjUsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJUZXN0U3VwcGxlbWVudGFsLmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nU3RhdGUuaCIKQEAgLTQxLDggKzQyLDU4IEBAIG5hbWVzcGFjZSBUZXN0SW50
ZXJmYWNlSW50ZXJuYWwgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkg
eyB9CiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKwor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHIxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN0cjEuX2dldCIpOworICAgIFRlc3RJbnRlcmZhY2Uq
IGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0
dXJuIHY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN0cjEoaW1wKSk7Cit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJM
RShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHN0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RJ
bnRlcmZhY2Uuc3RyMi5fZ2V0Iik7CisgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50
ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoVGVz
dFN1cHBsZW1lbnRhbDo6c3RyMihpbXApKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKK3N0YXRpYyB2b2lkIHN0cjJBdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJm
YWNlLnN0cjIuX3NldCIpOworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFj
ZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VY
Q0VQVElPTl9CTE9DS19WT0lEKFY4UGFyYW1ldGVyPD4sIHYsIHZhbHVlKTsKKyAgICBUZXN0U3Vw
cGxlbWVudGFsOjpzZXRTdHIyKGltcCwgdik7CisgICAgcmV0dXJuOworfQorCisjZW5kaWYgLy8g
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIH0gLy8gbmFtZXNw
YWNlIFRlc3RJbnRlcmZhY2VJbnRlcm5hbAogCitzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0
ZSBUZXN0SW50ZXJmYWNlQXR0cnNbXSA9IHsKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKKyAgICAvLyBBdHRyaWJ1dGUgJ3N0cjEnIChUeXBlOiAncmVhZG9u
bHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCisgICAg
eyJzdHIxIiwgVGVzdEludGVyZmFjZUludGVybmFsOjpzdHIxQXR0ckdldHRlciwgMCwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisg
ICAgLy8gQXR0cmlidXRlICdzdHIyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRp
dGlvbmFsIEltcGxlbWVudGVkQnknKQorICAgIHsic3RyMiIsIFRlc3RJbnRlcmZhY2VJbnRlcm5h
bDo6c3RyMkF0dHJHZXR0ZXIsIFRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3RyMkF0dHJTZXR0ZXIs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAorI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQorICAgIC8vIEF0dHJpYnV0ZSAnc3RyMycgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICdDdXN0b21TZXR0ZXIgQ3VzdG9tR2V0dGVyIENvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQor
ICAgIHsic3RyMyIsIFY4VGVzdFN1cHBsZW1lbnRhbDo6c3RyM0FjY2Vzc29yR2V0dGVyLCBWOFRl
c3RTdXBwbGVtZW50YWw6OnN0cjNBY2Nlc3NvclNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5k
aWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCit9OworCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdElu
dGVyZmFjZS5Db25zdHJ1Y3RvciIpOwpAQCAtODEsNyArMTMyLDcgQEAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1w
bGF0ZSh2ODoKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJl
OwogICAgIGRlZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdElu
dGVyZmFjZSIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RJ
bnRlcmZhY2U6OmludGVybmFsRmllbGRDb3VudCwKLSAgICAgICAgMCwgMCwKKyAgICAgICAgVGVz
dEludGVyZmFjZUF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RJbnRlcmZhY2VBdHRycyksCiAg
ICAgICAgIDAsIDApOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4g
c29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxl
cihWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJlYzUzZjc2YTE0YjYzMWRjZDk5
YzFmNmNhMTU0YjY0MGY0NTc2YTQuLjY0YWQ1N2RjNDNiNTgyZjExOTRmNDIwOTI2YTk4MjEwZjg0
ZjVhZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNCBAQAorMjAxMS0xMS0yOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IFtTdXBwbGVtZW50YWxdIElETCBhbmQgc3Vw
cG9ydCBpdCBpbiBydW4tYmluZGluZ3MtdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgcnVuLWJpbmRpbmdzLXRlc3RzIHN1cHBvcnRzIHRoZSBbU3Vw
cGxlbWVudGFsXSBJREwgaW4gdGhlIGZvbGxvd2luZyB3YXkuCisgICAgICAgICAgICAoMSkgSXQg
Y3JlYXRlcyBhIGZpbGUgfHh8IGxpc3RpbmcgYWxsIElETCBmaWxlcy4KKyAgICAgICAgICAgICgy
KSBJdCBnZW5lcmF0ZXMgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBmaWxlIHx5fCB1c2luZyBy
ZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCBhbmQgfHh8LgorICAgICAgICAgICAgKDMpIEZvciBlYWNo
IElETCBmaWxlIHx6fCwgaXQgcnVucyBnZW5lcmF0ZS1iaW5kaW5ncy5wbCB3aXRoIHx5fC4KKyAg
ICAgICAgICAgICAgICBUaGVuLCBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBnZW5lcmF0ZXMgLmggYW5k
IC5jcHAgZmlsZXMgZm9yIHRoZSBJREwgZmlsZSB8enwsCisgICAgICAgICAgICAgICAgaW5jbHVk
aW5nIGFsbCBhdHRyaWJ1dGVzIGluIElETCBmaWxlcyB0aGF0IGFyZSBzdXBwbGVtZW50aW5nIHRo
ZSBJREwgZmlsZSB8enwuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0czoK
KyAgICAgICAgKGdlbmVyYXRlX2Zyb21faWRsKToKKyAgICAgICAgKGdlbmVyYXRlX3N1cHBsZW1l
bnRhbF9kZXBlbmRlbmN5KToKKyAgICAgICAgKGRldGVjdF9jaGFuZ2VzKToKKyAgICAgICAgKHJ1
bl90ZXN0cyk6CisgICAgICAgIChtYWluKToKKwogMjAxMS0xMS0yOCAgVG9ueSBDaGFuZyAgPHRv
bnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGV3cyBib3RzIHNob3VsZCBwYXNzIC0tZm9yY2Ug
dG8gdXBkYXRlLXdlYmtpdC1jaHJvbWl1bQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4t
YmluZGluZ3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0cwppbmRleCA5
YmU3YjQxZTY5YTIzMTRlMGI0YzE2YjBhZmE2MTA0MDdiZTZjMDMyLi4xNzQ3ZWI1NDhkOTU1YmI3
MTM0YzZmM2EyODI2MjcwMjlkZjZkODVhIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1i
aW5kaW5ncy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0cwpAQCAt
MzgsNyArMzgsNyBAQCBpbXBvcnQgdGVtcGZpbGUKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNr
b3V0LnNjbS5kZXRlY3Rpb24gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCiAKIAotZGVmIGdlbmVy
YXRlX2Zyb21faWRsKGdlbmVyYXRvciwgaWRsX2ZpbGUsIG91dHB1dF9kaXJlY3RvcnkpOgorZGVm
IGdlbmVyYXRlX2Zyb21faWRsKGdlbmVyYXRvciwgaWRsX2ZpbGUsIG91dHB1dF9kaXJlY3Rvcnks
IHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUpOgogICAgIGNtZCA9IFsncGVybCcsICctdycs
CiAgICAgICAgICAgICctSVdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cycsCiAgICAgICAgICAgICdX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwnLApAQCAtNDcsNiAr
NDcsNyBAQCBkZWYgZ2VuZXJhdGVfZnJvbV9pZGwoZ2VuZXJhdG9yLCBpZGxfZmlsZSwgb3V0cHV0
X2RpcmVjdG9yeSk6CiAgICAgICAgICAgICctLWRlZmluZXMnLCAnVEVTVElOR18lcycgJSBnZW5l
cmF0b3IsCiAgICAgICAgICAgICctLWdlbmVyYXRvcicsIGdlbmVyYXRvciwKICAgICAgICAgICAg
Jy0tb3V0cHV0RGlyJywgb3V0cHV0X2RpcmVjdG9yeSwKKyAgICAgICAgICAgJy0tc3VwcGxlbWVu
dGFsRGVwZW5kZW5jeUZpbGUnLCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLAogICAgICAg
ICAgICBpZGxfZmlsZV0KIAogICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rk
b3V0ID0gc3VicHJvY2Vzcy5QSVBFLCBzdGRlcnIgPSBzdWJwcm9jZXNzLlNURE9VVCkKQEAgLTU3
LDYgKzU4LDMxIEBAIGRlZiBnZW5lcmF0ZV9mcm9tX2lkbChnZW5lcmF0b3IsIGlkbF9maWxlLCBv
dXRwdXRfZGlyZWN0b3J5KToKICAgICByZXR1cm4gZXhpdF9jb2RlCiAKIAorZGVmIGdlbmVyYXRl
X3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2Rl
cGVuZGVuY3lfZmlsZSk6CisgICAgaWRsX2ZpbGVzX2xpc3QgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkK
KyAgICBmb3IgaW5wdXRfZmlsZSBpbiBvcy5saXN0ZGlyKGlucHV0X2RpcmVjdG9yeSk6CisgICAg
ICAgIChuYW1lLCBleHRlbnNpb24pID0gb3MucGF0aC5zcGxpdGV4dChpbnB1dF9maWxlKQorICAg
ICAgICBpZiBleHRlbnNpb24gIT0gJy5pZGwnOgorICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgb3Mud3JpdGUoaWRsX2ZpbGVzX2xpc3RbMF0sIG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3Rv
cnksIGlucHV0X2ZpbGUpICsgIlxuIikKKyAgICBvcy5jbG9zZShpZGxfZmlsZXNfbGlzdFswXSkK
KworICAgIGNtZCA9IFsncGVybCcsICctdycsCisgICAgICAgICAgICctSVdlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cycsCisgICAgICAgICAgICdXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcmVzb2x2
ZS1zdXBwbGVtZW50YWwucGwnLAorICAgICAgICAgICAnLS1pZGxGaWxlc0xpc3QnLCBpZGxfZmls
ZXNfbGlzdFsxXSwKKyAgICAgICAgICAgJy0tZGVmaW5lcycsICcnLAorICAgICAgICAgICAnLS1z
dXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZScsIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGVd
CisgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQgPSBzdWJwcm9jZXNz
LlBJUEUsIHN0ZGVyciA9IHN1YnByb2Nlc3MuU1RET1VUKQorICAgIGV4aXRfY29kZSA9IHByb2Nl
c3Mud2FpdCgpCisgICAgb3V0cHV0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpWzBdCisgICAgaWYg
b3V0cHV0OgorICAgICAgICBwcmludCBvdXRwdXQKKworICAgIG9zLnJlbW92ZShpZGxfZmlsZXNf
bGlzdFsxXSkKKyAgICByZXR1cm4gZXhpdF9jb2RlCisKKwogZGVmIGRldGVjdF9jaGFuZ2VzKGdl
bmVyYXRvciwgd29ya19kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3RvcnkpOgogICAgIGNoYW5n
ZXNfZm91bmQgPSBGYWxzZQogICAgIGZvciBvdXRwdXRfZmlsZSBpbiBvcy5saXN0ZGlyKHdvcmtf
ZGlyZWN0b3J5KToKQEAgLTc5LDcgKzEwNSw3IEBAIGRlZiBkZXRlY3RfY2hhbmdlcyhnZW5lcmF0
b3IsIHdvcmtfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKICAgICByZXR1cm4gY2hh
bmdlc19mb3VuZAogCiAKLWRlZiBydW5fdGVzdHMoZ2VuZXJhdG9yLCBpbnB1dF9kaXJlY3Rvcnks
IHJlZmVyZW5jZV9kaXJlY3RvcnksIHJlc2V0X3Jlc3VsdHMpOgorZGVmIHJ1bl90ZXN0cyhnZW5l
cmF0b3IsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSwgcmVzZXRfcmVzdWx0
cywgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSk6CiAgICAgd29ya19kaXJlY3RvcnkgPSBy
ZWZlcmVuY2VfZGlyZWN0b3J5CiAKICAgICBwYXNzZWQgPSBUcnVlCkBAIC05NCw3ICsxMjAsOCBA
QCBkZWYgcnVuX3Rlc3RzKGdlbmVyYXRvciwgaW5wdXRfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGly
ZWN0b3J5LCByZXNldF9yZXN1bHRzKToKIAogICAgICAgICBpZiBnZW5lcmF0ZV9mcm9tX2lkbChn
ZW5lcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihpbnB1
dF9kaXJlY3RvcnksIGlucHV0X2ZpbGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
b3JrX2RpcmVjdG9yeSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtfZGlyZWN0
b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGVtZW50YWxfZGVwZW5kZW5j
eV9maWxlKToKICAgICAgICAgICAgIHBhc3NlZCA9IEZhbHNlCiAKICAgICAgICAgaWYgcmVzZXRf
cmVzdWx0czoKQEAgLTEzMiwxMiArMTU5LDIwIEBAIGRlZiBtYWluKGFyZ3YpOgogICAgICAgICAn
Q1BQJwogICAgIF0KIAorICAgIGlucHV0X2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbignV2ViQ29y
ZScsICdiaW5kaW5ncycsICdzY3JpcHRzJywgJ3Rlc3QnKQorICAgIHN1cHBsZW1lbnRhbF9kZXBl
bmRlbmN5X2ZpbGUgPSB0ZW1wZmlsZS5ta3N0ZW1wKClbMV0KKyAgICBpZiBnZW5lcmF0ZV9zdXBw
bGVtZW50YWxfZGVwZW5kZW5jeShpbnB1dF9kaXJlY3RvcnksIHN1cHBsZW1lbnRhbF9kZXBlbmRl
bmN5X2ZpbGUpOgorICAgICAgICBwcmludCAnRmFpbGVkIHRvIGdlbmVyYXRlIGEgc3VwcGxlbWVu
dGFsIGRlcGVuZGVuY3kgZmlsZS4nCisgICAgICAgIG9zLnJlbW92ZShzdXBwbGVtZW50YWxfZGVw
ZW5kZW5jeV9maWxlKQorICAgICAgICByZXR1cm4gLTEKKwogICAgIGZvciBnZW5lcmF0b3IgaW4g
Z2VuZXJhdG9yczoKICAgICAgICAgaW5wdXRfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKCdXZWJD
b3JlJywgJ2JpbmRpbmdzJywgJ3NjcmlwdHMnLCAndGVzdCcpCiAgICAgICAgIHJlZmVyZW5jZV9k
aXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnc2NyaXB0cycs
ICd0ZXN0JywgZ2VuZXJhdG9yKQotICAgICAgICBpZiBub3QgcnVuX3Rlc3RzKGdlbmVyYXRvciwg
aW5wdXRfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5LCByZXNldF9yZXN1bHRzKToKKyAg
ICAgICAgaWYgbm90IHJ1bl90ZXN0cyhnZW5lcmF0b3IsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJl
bmNlX2RpcmVjdG9yeSwgcmVzZXRfcmVzdWx0cywgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmls
ZSk6CiAgICAgICAgICAgICBhbGxfdGVzdHNfcGFzc2VkID0gRmFsc2UKIAorICAgIG9zLnJlbW92
ZShzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlKQogICAgIHByaW50ICcnCiAgICAgaWYgYWxs
X3Rlc3RzX3Bhc3NlZDoKICAgICAgICAgcHJpbnQgJ0FsbCB0ZXN0cyBQQVNTIScK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117072</attachid>
            <date>2011-11-29 16:36:05 -0800</date>
            <delta_ts>2011-11-29 16:36:05 -0800</delta_ts>
            <desc>rebased patch for commit</desc>
            <filename>bug-73162-20111130093603.patch</filename>
            <type>text/plain</type>
            <size>72774</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA3MWYyZjU2NWY4MzVi
OWMwNGE5Y2RkZmMzNjkwNWVjNWQ3YzIwOC4uOTY5OWRkZDQyZTJhM2UwNzJjNGE3NmE5ZjY0YmU3
NjdkMTU1ZDhkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMS0xMS0yOCAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IFtT
dXBwbGVtZW50YWxdIElETCBhbmQgc3VwcG9ydCBpdCBpbiBydW4tYmluZGluZ3MtdGVzdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTYyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICAtIE92ZXJ2aWV3OgorICAg
ICAgICAgICAgLSBJbXBsZW1lbnQgdGhlIFtTdXBwbGVtZW50YWxdIElETCBpbiByZXNvbHZlLXN1
cHBsZW1lbnRhbC5wbCBhbmQgZ2VuZXJhdGUtYmluZGluZ3MucGwuCisgICAgICAgICAgICAtIFN1
cHBvcnQgdGhlIFtTdXBwbGVtZW50YWxdIElETCBpbiBydW4tYmluZGluZ3MtdGVzdHMuCisgICAg
ICAgICAgICAtIEFkZCBUZXN0U3VwcGxlbWVudGFsLmlkbCBhcyBhIGJpbmRpbmcgdGVzdCBhbmQg
Y29uZmlybSB0aGF0IGl0IHdvcmtzLgorCisgICAgICAgIC0gVGhlIHNwZWMgZm9yIHRoZSBbU3Vw
cGxlbWVudGFsXSBJREw6IGh0dHA6Ly9kZXYudzMub3JnLzIwMDYvd2ViYXBpL1dlYklETC8jZGZu
LXN1cHBsZW1lbnRhbC1pbnRlcmZhY2UKKworICAgICAgICAtIFRoaXMgcGF0Y2ggYWZmZWN0cyBy
dW4tYmluZGluZ3MtdGVzdHMgcmVzdWx0cyBvbmx5IGFuZCBkb2VzIG5vdCBhZmZlY3QgYW55IHJl
YWwgYnVpbGRzCisgICAgICAgIHNpbmNlIG5vIFtTdXBwbGVtZW50YWxdIElETCBoYXMgYmVlbiB3
cml0dGVuIGluIHJlYWwgV2ViQ29yZSBJREwgZmlsZXMgZm9yIG5vdy4KKworICAgICAgICAtIFRo
aXMgcGF0Y2ggbWFrZXMgYSBjaGFuZ2Ugb24gQ29kZUdlbmVyYXRvcioucG0gdG8gc3VwcG9ydCB0
aGUgW1N1cHBsZW1lbnRhbF0gSURMCisgICAgICAgIGZvciAoY3VzdG9tKSBnZXR0ZXJzIGFuZCBz
ZXR0ZXJzLgorCisgICAgICAgIC0gQWRkZWQgcGVybCBzY3JpcHRzIGltcGxlbWVudCB0aGUgW1N1
cHBsZW1lbnRhbF0gSURMIGFzIGZvbGxvd3M6CisKKyAgICAgICAgICAgIFByZXZpb3VzIGJ1aWxk
IGZsb3c6CisgICAgICAgICAgICAgICAgZm9yZWFjaCAkaWRsIChhbGwgSURMIGZpbGVzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGRlcGVuZHMgb24gJGlkbDsK
KyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgcmVhZHMgJGlkbDsKKyAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgZ2VuZXJhdGVzIC5oIGFuZCAu
Y3BwIGZpbGVzIGZvciAkaWRsOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTmV3
IGJ1aWxkIGZsb3cgKFNlZSB0aGUgZGlzY3Vzc2lvbnMgaW4gYnVnIDcyMTM4IGZvciBtb3JlIGRl
dGFpbHMpOgorICAgICAgICAgICAgICAgIHJlc29sdmUtc3VwcGxlbWVudGFsLnBsIGRlcGVuZHMg
b24gYWxsIElETCBmaWxlczsKKyAgICAgICAgICAgICAgICByZXNvbHZlLXN1cHBsZW1lbnRhbC5w
bCByZWFkcyBhbGwgSURMIGZpbGVzOworICAgICAgICAgICAgICAgIHJlc29sdmUtc3VwcGxlbWVu
dGFsLnBsIHJlc29sdmVzIHRoZSBkZXBlbmRlbmN5IG9mIFtTdXBwbGVtZW50YWw9WFhYWF07Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwgb3V0cHV0cyBzdXBwbGVtZW50
YWxfZGVwZW5kZW5jeS50bXA7CisgICAgICAgICAgICAgICAgZm9yZWFjaCAkaWRsIChhbGwgSURM
IGZpbGVzKSB7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGRlcGVu
ZHMgb24gJGlkbCBhbmQgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kudG1wOworICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCByZWFkcyAkaWRsOworICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCByZWFkcyBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50
bXA7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyAu
aCBhbmQgLmNwcCBmaWxlcyBmb3IgJGlkbCwgaW5jbHVkaW5nIGFsbCBhdHRyaWJ1dGVzIGluIElE
TCBmaWxlcyB3aGljaCBhcmUgaW1wbGVtZW50aW5nICRpZGw7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgIFRlc3RzOiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5p
ZGwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGw6IFRo
ZSBpbnB1dCBpcyBhbiBJREwgZmlsZSB8eHwgYW5kIHRoZSBkZXBlbmRlbmN5IGZpbGUuIGdlbmVy
YXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyAuaCBhbmQgLmNwcCBmaWxlcyBmb3IgdGhlIElETCBm
aWxlIHx4fCwgaW5jbHVkaW5nIGFsbCB0aGUgYXR0cmlidXRlcyBpbiB0aGUgSURMIGZpbGVzIHdo
aWNoIGFyZSBpbXBsZW1lbnRpbmcgdGhlIElETCBmaWxlIHx4fC4gZ2VuZXJhdGUtYmluZGluZ3Mu
cGwgYWRkZXMgdGhlIFtJbXBsZW1lbnRlZEJ5XSBJREwgdG8gdGhlIGF0dHJpYnV0ZXMgd2l0aCB0
aGUgW1N1cHBsZW1lbnRhbF0gSURMIGluIG9yZGVyIHRvIGluZGljYXRlIHdoYXQgSURMIGlzIGlt
cGxlbWVudGluZyB0aGUgYXR0cmlidXRlcy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Jl
c29sdmUtc3VwcGxlbWVudGFsLnBsOiBBZGRlZC4gcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwgcmVh
ZHMgYWxsIElETCBmaWxlcywgcmVzb2x2ZXMgW1N1cHBsZW1lbnRhbD1YWFhdIGRlcGVuZGVuY2ll
cywgYW5kIHRoZW4gb3V0cHV0cyB0aGUgZGVwZW5kZW5jeSBmaWxlLiBTZWUgdGhlIGNvbW1lbnQg
aW4gcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwgZm9yIHRoZSBmb3JtYXQgb2YgdGhlIGRlcGVuZGVu
Y3kgZmlsZS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToK
KyAgICAgICAgKEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUpOiBB
dm9pZHMgZHVwbGljYXRlZCBjb25kaXRpb25zLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBJZiBhbiBhdHRy
aWJ1dGUgaXMgW0ltcGxlbWVudGVkQnldIGFub3RoZXIgSURMLCB0aGVuIHdlIG9taXQgdGhlIGRl
Y2xhcmF0aW9uIG9mIHRoZSBjdXN0b20gZ2V0dGVyIGFuZCBzZXR0ZXIuCisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uKTogSWYgYW4gYXR0cmlidXRlIGlzIFtJbXBsZW1lbnRlZEJ5XSBh
bm90aGVyIElETCwgdGhlbiB3ZSBjYWxsIGJhY2sgdGhlIChjdXN0b20pIGdldHRlciBhbmQgc2V0
dGVyIG9mIHRoZSBJREwuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6IElmIGFuIGF0dHJpYnV0ZSBpcyBbSW1w
bGVtZW50ZWRCeV0gYW5vdGhlciBJREwsIHRoZW4gd2Ugb21pdCB0aGUgZGVjbGFyYXRpb24gb2Yg
dGhlIGN1c3RvbSBnZXR0ZXIgYW5kIHNldHRlci4KKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0
ckdldHRlcik6IElmIGFuIGF0dHJpYnV0ZSBpcyBbSW1wbGVtZW50ZWRCeV0gYW5vdGhlciBJREws
IHRoZW4gd2UgY2FsbCBiYWNrIHRoZSBnZXR0ZXIgb2YgdGhlIElETC4KKyAgICAgICAgKEdlbmVy
YXRlTm9ybWFsQXR0clNldHRlcik6IElmIGFuIGF0dHJpYnV0ZSBpcyBbSW1wbGVtZW50ZWRCeV0g
YW5vdGhlciBJREwsIHRoZW4gd2UgY2FsbCBiYWNrIHRoZSBzZXR0ZXIgb2YgdGhlIElETC4KKyAg
ICAgICAgKEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSk6IElmIGFuIGF0dHJpYnV0ZSBp
cyBbSW1wbGVtZW50ZWRCeV0gYW5vdGhlciBJREwsIHRoZW4gd2UgY2FsbCBiYWNrIHRoZSBjdXN0
b20gZ2V0dGVyIG9yIHNldHRlciBvZiB0aGUgSURMLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckNQUC5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24p
OiBJZiBhbiBhdHRyaWJ1dGUgaXMgW0ltcGxlbWVudGVkQnldIGFub3RoZXIgSURMLCB0aGVuIHdl
IGNhbGwgYmFjayB0aGUgZ2V0dGVyIGFuZCBzZXR0ZXIgb2YgdGhlIElETC4gQ29kZUdlbmVyYXRv
ckNQUC5wbSBkb2VzIG5vdCBzdXBwb3J0IGEgY3VzdG9tIGdldHRlciBhbmQgc2V0dGVyLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06CisgICAgICAg
IChHZW5lcmF0ZVByb3BlcnR5KTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBE
aXR0by4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFs
LmlkbDogQWRkZWQuIEEgdGVzdCBjYXNlIGZvciB0aGUgW1N1cHBsZW1lbnRhbF0gSURMLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHA6
IFVwZGF0ZWQgYSBydW4tYmluZGluZ3MtdGVzdHMgcmVzdWx0LgorICAgICAgICAoV2ViRE9NVGVz
dEludGVyZmFjZTo6c3RyMSk6CisgICAgICAgIChXZWJET01UZXN0SW50ZXJmYWNlOjpzdHIyKToK
KyAgICAgICAgKFdlYkRPTVRlc3RJbnRlcmZhY2U6OnNldFN0cjIpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5oOiBEaXR0by4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNl
LmNwcDogRGl0dG8uCisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIx
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjIpOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfc3RyMik6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3RfaW50ZXJmYWNlX2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50
ZXJmYWNlX2NsYXNzX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0SW50ZXJmYWNlU3RyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRl
cmZhY2VTdHIyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN0cjMpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0SW50ZXJmYWNlU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRl
cmZhY2VTdHIzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RJbnRlcmZhY2UuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEludGVyZmFjZS5tbTogRGl0dG8uCisgICAgICAgICgtW0RPTVRlc3RJbnRl
cmZhY2Ugc3RyMV0pOgorICAgICAgICAoLVtET01UZXN0SW50ZXJmYWNlIHN0cjJdKToKKyAgICAg
ICAgKC1bRE9NVGVzdEludGVyZmFjZSBzZXRTdHIyOl0pOgorICAgICAgICAoLVtET01UZXN0SW50
ZXJmYWNlIHN0cjNdKToKKyAgICAgICAgKC1bRE9NVGVzdEludGVyZmFjZSBzZXRTdHIzOl0pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3RyMUF0dHJH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZUludGVybmFsOjpzdHIyQXR0
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW50ZXJuYWw6OnN0cjJB
dHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRl
bXBsYXRlKToKKwogMjAxMS0xMS0yOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gUmViYXNlbGluZWQgYSBydW4tYmluZGluZ3MtdGVz
dHMgcmVzdWx0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtCmluZGV4IDhiMDhmODgzOWQ0NzIzMGQ2YjEyNzk0MzI0ZGEyNTc5ZWYyMmUyYTMu
LjE4NGRmODFhODk5Mzc4MDdhM2FiYmZhNDJmMDIzZjk3NzIxZTc0NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTU2MywxMCAr
NTYzLDEzIEBAIHN1YiBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVl
CiB7CiAgICAgbXkgJGdlbmVyYXRvciA9IHNoaWZ0OwogICAgIG15ICRjb25kaXRpb25hbCA9IHNo
aWZ0OwotICAgIGlmICgkY29uZGl0aW9uYWwgPX4gLyYvKSB7Ci0gICAgICAgIHJldHVybiAiRU5B
QkxFKCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBzcGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4g
IikiOwotICAgIH0gZWxzaWYgKCRjb25kaXRpb25hbCA9fiAvXHwvKSB7Ci0gICAgICAgIHJldHVy
biAiRU5BQkxFKCIgLiBqb2luKCIpIHx8IEVOQUJMRSgiLCBzcGxpdCgvXHwvLCAkY29uZGl0aW9u
YWwpKSAuICIpIjsKKworICAgIG15ICRvcGVyYXRvciA9ICgkY29uZGl0aW9uYWwgPX4gLyYvID8g
JyYnIDogKCRjb25kaXRpb25hbCA9fiAvXHwvID8gJ3wnIDogJycpKTsKKyAgICBpZiAoJG9wZXJh
dG9yKSB7CisgICAgICAgICMgQXZvaWQgZHVwbGljYXRlZCBjb25kaXRpb25zLgorICAgICAgICBt
eSAlY29uZGl0aW9uczsKKyAgICAgICAgbWFwIHsgJGNvbmRpdGlvbnN7JF99ID0gMSB9IHNwbGl0
KCdcXCcgLiAkb3BlcmF0b3IsICRjb25kaXRpb25hbCk7CisgICAgICAgIHJldHVybiAiRU5BQkxF
KCIgLiBqb2luKCIpICRvcGVyYXRvciRvcGVyYXRvciBFTkFCTEUoIiwgc29ydCBrZXlzICVjb25k
aXRpb25zKSAuICIpIjsKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gIkVOQUJMRSgiIC4g
JGNvbmRpdGlvbmFsIC4gIikiOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQppbmRleCBlMTFjN2VlNzg4NDUxZTQ3NDVi
NzlmNDA1NTc1NzYzZTY1Nzg5NTg1Li5mNTQ0MjVjMDVhOGNiMDc4NDFjZThlOWM5ZDE1NzY2NDlj
N2M0NGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JDUFAucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yQ1BQLnBtCkBAIC03MDIsNyArNzAyLDE1IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICAjIC0gR0VUVEVSCiAgICAgICAgICAgICBteSAkZ2V0dGVyU2ln
ID0gIiRhdHRyaWJ1dGVUeXBlICRjbGFzc05hbWVcOlw6JGF0dHJpYnV0ZU5hbWUoKSBjb25zdFxu
IjsKICAgICAgICAgICAgIG15ICRoYXNHZXR0ZXJFeGNlcHRpb24gPSBAeyRhdHRyaWJ1dGUtPmdl
dHRlckV4Y2VwdGlvbnN9OwotICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnRIZWFkID0gImlt
cGwoKS0+IiAuICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbElu
Y2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkZ2V0
dGVyQ29udGVudEhlYWQ7CisgICAgICAgICAgICBteSAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9
ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAk
aW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAg
ICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgICAgICRn
ZXR0ZXJDb250ZW50SGVhZCA9ICIke2ltcGxlbWVudGVkQnl9Ojoke2dldHRlckV4cHJlc3Npb25Q
cmVmaXh9aW1wbCgpIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRIZWFkID0gImltcGwoKS0+JHtnZXR0ZXJFeHByZXNzaW9uUHJlZml4fSI7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVudFRhaWwgPSAiKSI7CiAK
ICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlcwpAQCAtNzIwLDcgKzcyOCw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIG15ICRnZXR0ZXJDb250ZW50OwogICAg
ICAgICAgICAgaWYgKCRoYXNHZXR0ZXJFeGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICAkZ2V0
dGVyQ29udGVudCA9ICRnZXR0ZXJDb250ZW50SGVhZCAuICJlYyIgLiAkZ2V0dGVyQ29udGVudFRh
aWw7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnQgPSAkZ2V0dGVyQ29udGVudEhlYWQg
LiAoJGdldHRlckNvbnRlbnRIZWFkID1+IC9cKCQvID8gImVjIiA6ICIsIGVjIikgLiAkZ2V0dGVy
Q29udGVudFRhaWw7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICRnZXR0
ZXJDb250ZW50ID0gJGdldHRlckNvbnRlbnRIZWFkIC4gJGdldHRlckNvbnRlbnRUYWlsOwogICAg
ICAgICAgICAgfQpAQCAtNzczLDcgKzc4MSwxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRleGNlcHRpb25Jbml0
XG4iKSBpZiAkaGFzU2V0dGVyRXhjZXB0aW9uOwogICAgICAgICAgICAgICAgIG15ICRlYyA9ICRo
YXNTZXR0ZXJFeGNlcHRpb24gPyAiLCBlYyIgOiAiIjsKICAgICAgICAgICAgICAgICBteSAkc2V0
dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJl
Zml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wbCgpLT4kc2V0dGVyRXhwcmVzc2lv
blByZWZpeCRhcmckZWMpO1xuIik7CisgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAg
ICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2ltcGxlbWVudGVkQnl9Ojoke3NldHRl
ckV4cHJlc3Npb25QcmVmaXh9aW1wbCgpLCAke2FyZ30ke2VjfSk7XG4iKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpbXBsKCktPiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JGFyZyRlYyk7XG4iKTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2Vw
dGlvblJhaXNlT25FcnJvclxuIikgaWYgJGhhc1NldHRlckV4Y2VwdGlvbjsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVj
dC5wbQppbmRleCA3YWI4OWRlYTliNGI0MTQxMTAzNzczYjNhMzBmZjlmNDNjOGYzY2E5Li5iNGVi
NGM5MmQ2MGM0ZjUzNTk2NDJkYjQzMmQ3ZTlkMjA5ZjMzNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAg
LTM4Miw4ICszODIsMTcgQEAgc3ViIEdlbmVyYXRlUHJvcGVydHkgewogICAgIG15ICRnZXR0ZXJF
eHByZXNzaW9uUHJlZml4ID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb25QcmVmaXgo
XCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKICAgICBteSAkc2V0
dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJl
Zml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICBt
eSAkZ2V0dGVyQ29udGVudEhlYWQgPSAiY29yZVNlbGYtPiRnZXR0ZXJFeHByZXNzaW9uUHJlZml4
IjsKLSAgICBteSAkc2V0dGVyQ29udGVudEhlYWQgPSAiY29yZVNlbGYtPiRzZXR0ZXJFeHByZXNz
aW9uUHJlZml4JHtjb252ZXJ0RnVuY3Rpb259KGdfdmFsdWVfZ2V0XyRndHlwZSh2YWx1ZSkpIjsK
KyAgICBteSAkZ2V0dGVyQ29udGVudEhlYWQ7CisgICAgbXkgJHNldHRlckNvbnRlbnRIZWFkOwor
ICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAg
ICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgJGdldHRl
ckNvbnRlbnRIZWFkID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7Z2V0dGVyRXhwcmVzc2lvblByZWZp
eH1jb3JlU2VsZiI7CisgICAgICAgICRzZXR0ZXJDb250ZW50SGVhZCA9ICIke2ltcGxlbWVudGVk
Qnl9Ojoke3NldHRlckV4cHJlc3Npb25QcmVmaXh9Y29yZVNlbGYsICR7Y29udmVydEZ1bmN0aW9u
fShnX3ZhbHVlX2dldF8kZ3R5cGUodmFsdWUpKSI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJGdl
dHRlckNvbnRlbnRIZWFkID0gImNvcmVTZWxmLT4kZ2V0dGVyRXhwcmVzc2lvblByZWZpeCI7Cisg
ICAgICAgICRzZXR0ZXJDb250ZW50SGVhZCA9ICJjb3JlU2VsZi0+JHNldHRlckV4cHJlc3Npb25Q
cmVmaXgke2NvbnZlcnRGdW5jdGlvbn0oZ192YWx1ZV9nZXRfJGd0eXBlKHZhbHVlKSkiOworICAg
IH0KIAogICAgIGlmIChncmVwIHskXyBlcSAkYXR0cmlidXRlfSBAd3JpdGVhYmxlUHJvcGVydGll
cykgewogICAgICAgICBwdXNoKEB0eHRTZXRQcm9wcywgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtNDA4LDcgKzQxNyw3IEBAIHN1YiBHZW5l
cmF0ZVByb3BlcnR5IHsKICAgICBteSAkcG9zdENvbnZlcnRGdW5jdGlvbiA9ICIiOwogICAgIG15
ICRkb25lID0gMDsKICAgICBpZiAoJGd0eXBlIGVxICJzdHJpbmciKSB7Ci0gICAgICAgIHB1c2go
QHR4dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0
VG9VVEY4U3RyaW5nKCR7Z2V0dGVyQ29udGVudEhlYWR9JHtleGNlcHRpb259KSkpO1xuIik7Cisg
ICAgICAgIHB1c2goQHR4dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZh
bHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKCR7Z2V0dGVyQ29udGVudEhlYWR9IiAuICgkZ2V0dGVy
Q29udGVudEhlYWQgIX4gL1woJC8gJiYgJGV4Y2VwdGlvbiA/ICIsICRleGNlcHRpb24iIDogIiRl
eGNlcHRpb24iKSAuICIpKSk7XG4iKTsKICAgICAgICAgJGRvbmUgPSAxOwogICAgIH0gZWxzaWYg
KCRndHlwZSBlcSAib2JqZWN0IikgewogICAgICAgICAkdHh0R2V0UHJvcCA9IDw8ICJFT0YiOwpA
QCAtNDI2LDcgKzQzNSwxMyBAQCBFT0YKICAgICB9CiAKICAgICBpZiAoISRkb25lKSB7Ci0gICAg
ICAgIHB1c2goQHR4dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3NldF8kX2d0eXBlKHZhbHVl
LCAke2NvbnZlcnRGdW5jdGlvbn1jb3JlU2VsZi0+JHtnZXR0ZXJFeHByZXNzaW9uUHJlZml4fSR7
ZXhjZXB0aW9ufSkke3Bvc3RDb252ZXJ0RnVuY3Rpb259KTtcbiIpOworICAgICAgICBpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9
KSB7CisgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgIHB1c2go
QHR4dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3NldF8kX2d0eXBlKHZhbHVlLCAke2NvbnZl
cnRGdW5jdGlvbn0ke2ltcGxlbWVudGVkQnl9Ojoke2dldHRlckV4cHJlc3Npb25QcmVmaXh9Y29y
ZVNlbGYsICR7ZXhjZXB0aW9ufSkke3Bvc3RDb252ZXJ0RnVuY3Rpb259KTtcbiIpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAdHh0R2V0UHJvcHMsICIgICAgICAgIGdfdmFs
dWVfc2V0XyRfZ3R5cGUodmFsdWUsICR7Y29udmVydEZ1bmN0aW9ufWNvcmVTZWxmLT4ke2dldHRl
ckV4cHJlc3Npb25QcmVmaXh9JHtleGNlcHRpb259KSR7cG9zdENvbnZlcnRGdW5jdGlvbn0pO1xu
Iik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdXNoKEB0eHRHZXRQcm9wcywgIiAgICAgICAg
YnJlYWs7XG4gICAgfVxuIik7CkBAIC05MzIsNyArOTQ3LDE0IEBAIEVPRgogICAgICAgICBteSAk
Z2V0dGVyQ29udGVudEhlYWQ7CiAgICAgICAgIGlmICgkcHJlZml4KSB7CiAgICAgICAgICAgICBt
eSAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNz
aW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9uKTsKLSAg
ICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICIke2Fzc2lnbn1jb252ZXJ0VG9VVEY4U3Ry
aW5nKGl0ZW0tPiRnZXR0ZXJFeHByZXNzaW9uUHJlZml4JHtleGNlcHRpb25zfSkpO1xuIjsKKyAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0g
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5
In07CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0g
PSAxOworICAgICAgICAgICAgICAgIG15ICRpdGVtID0gISRjYWxsSW1wbFBhcmFtcyAmJiAhJGV4
Y2VwdGlvbnMgPyAiaXRlbSIgOiAiaXRlbSwgIjsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29u
dGVudEhlYWQgPSAiJHthc3NpZ259Y29udmVydFRvVVRGOFN0cmluZygke2ltcGxlbWVudGVkQnl9
OjokZ2V0dGVyRXhwcmVzc2lvblByZWZpeCRpdGVtJHtleGNlcHRpb25zfSkpO1xuIjsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIiR7
YXNzaWdufWNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+JGdldHRlckV4cHJlc3Npb25QcmVmaXgk
e2V4Y2VwdGlvbnN9KSk7XG4iOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIiR7YXNzaWdufWNvbnZlcnRUb1VURjhTdHJp
bmcoaXRlbS0+JHtmdW5jdGlvblNpZ05hbWV9KCR7Y2FsbEltcGxQYXJhbXN9JHtleGNlcHRpb25z
fSkpO1xuIjsKICAgICAgICAgfQpAQCAtOTQxLDEwICs5NjMsMjQgQEAgRU9GCiAgICAgICAgIG15
ICRjb250ZW50SGVhZDsKICAgICAgICAgaWYgKCRwcmVmaXggZXEgImdldF8iKSB7CiAgICAgICAg
ICAgICBteSAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJF
eHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9u
KTsKLSAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIke2Fzc2lnbn0ke2Fzc2lnblByZX1pdGVt
LT4kZ2V0dGVyRXhwcmVzc2lvblByZWZpeCR7Y2FsbEltcGxQYXJhbXN9JHtleGNlcHRpb25zfSR7
YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAg
IG15ICRpbXBsZW1lbnRlZEJ5ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
JHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgICAgIG15ICRpdGVtID0gISRj
YWxsSW1wbFBhcmFtcyAmJiAhJGV4Y2VwdGlvbnMgPyAiaXRlbSIgOiAiaXRlbSwgIjsKKyAgICAg
ICAgICAgICAgICAkY29udGVudEhlYWQgPSAiJHthc3NpZ259JHthc3NpZ25QcmV9JHtpbXBsZW1l
bnRlZEJ5fTo6JGdldHRlckV4cHJlc3Npb25QcmVmaXgkaXRlbSR7Y2FsbEltcGxQYXJhbXN9JHtl
eGNlcHRpb25zfSR7YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgJGNvbnRlbnRIZWFkID0gIiR7YXNzaWdufSR7YXNzaWduUHJlfWl0ZW0tPiRn
ZXR0ZXJFeHByZXNzaW9uUHJlZml4JHtjYWxsSW1wbFBhcmFtc30ke2V4Y2VwdGlvbnN9JHthc3Np
Z25Qb3N0fSk7XG4iOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2lmICgkcHJlZml4IGVx
ICJzZXRfIikgewogICAgICAgICAgICAgbXkgJHNldHRlckV4cHJlc3Npb25QcmVmaXggPSAkY29k
ZUdlbmVyYXRvci0+U2V0dGVyRXhwcmVzc2lvblByZWZpeChcJWltcGxJbmNsdWRlcywgJGludGVy
ZmFjZU5hbWUsICRmdW5jdGlvbik7Ci0gICAgICAgICAgICAkY29udGVudEhlYWQgPSAiJHthc3Np
Z259JHthc3NpZ25QcmV9aXRlbS0+JHNldHRlckV4cHJlc3Npb25QcmVmaXgke2NhbGxJbXBsUGFy
YW1zfSR7ZXhjZXB0aW9uc30ke2Fzc2lnblBvc3R9KTtcbiI7CisgICAgICAgICAgICBpZiAoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0p
IHsKKyAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAg
ICAgICBteSAkaXRlbSA9ICEkY2FsbEltcGxQYXJhbXMgJiYgISRleGNlcHRpb25zID8gIml0ZW0i
IDogIml0ZW0sICI7CisgICAgICAgICAgICAgICAgJGNvbnRlbnRIZWFkID0gIiR7YXNzaWdufSR7
YXNzaWduUHJlfSR7aW1wbGVtZW50ZWRCeX06OiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JGl0ZW0k
e2NhbGxJbXBsUGFyYW1zfSR7ZXhjZXB0aW9uc30ke2Fzc2lnblBvc3R9KTtcbiI7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIke2Fzc2lnbn0k
e2Fzc2lnblByZX1pdGVtLT4kc2V0dGVyRXhwcmVzc2lvblByZWZpeCR7Y2FsbEltcGxQYXJhbXN9
JHtleGNlcHRpb25zfSR7YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIke2Fzc2lnbn0ke2Fzc2lnblBy
ZX1pdGVtLT4ke2Z1bmN0aW9uU2lnTmFtZX0oJHtjYWxsSW1wbFBhcmFtc30ke2V4Y2VwdGlvbnN9
JHthc3NpZ25Qb3N0fSk7XG4iOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDZjZTNhZDY3OTY0NDY2YjJh
NWNmZjFlMjY5ZjEyYzY3ZGYxZjI4ZjUuLmE3NWFmMGQzOWViZmEzMTc1YWFkZDFlYmJiN2ZmYjgw
ZWU3MzM1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCkBAIC04NzcsOCArODc3LDggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICAgICAg
bXkgJGF0dHJpYnV0ZSA9ICRfOwogICAgICAgICAgICAgJG51bUN1c3RvbUF0dHJpYnV0ZXMrKyBp
ZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSB8
fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0NDdXN0b20i
fTsKLSAgICAgICAgICAgICRudW1DdXN0b21BdHRyaWJ1dGVzKysgaWYgJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0dGVyIn0gfHwgJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tR2V0dGVyIn07Ci0g
ICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbVNldHRlciJ9OworICAgICAg
ICAgICAgJG51bUN1c3RvbUF0dHJpYnV0ZXMrKyBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tR2V0dGVyIn0pICYmICEkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07Cisg
ICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlmICgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21TZXR0ZXIifSB8fCAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0NDdXN0b21TZXR0ZXIifSkgJiYgISRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnki
fTsKICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDYWNoZWRBdHRyaWJ1dGUifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpVbmtub3duPiBtXyIgLiAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgJG51bUNh
Y2hlZEF0dHJpYnV0ZXMrKzsKQEAgLTkwMiw5ICs5MDIsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5Lykgewog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgc2V0IiAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkg
LiAiKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUdldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbUdldHRlciJ9KSB7CisgICAgICAgICAgICB9IGVs
c2lmICgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
R2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNDQ3VzdG9tR2V0dGVyIn0pICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSAiIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmly
c3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoSlNDOjpFeGVjU3RhdGUqKSBjb25z
dDtcbiIpOwotICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tU2V0dGVyIn0pIHsKKyAgICAgICAgICAg
IH0gZWxzaWYgKCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21TZXR0ZXIifSB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJKU0NDdXN0b21TZXR0ZXIifSkgJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgewogICAgICAgICAgICAgICAgIGlmICgk
YXR0cmlidXRlLT50eXBlICF+IC9ecmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTcxMSw3ICsxNzExLDEz
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTQ0N1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUdldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkpTQ0N1c3RvbUdldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT4kaW1wbEdldHRlckZ1bmN0
aW9uTmFtZShleGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpT
JHtpbXBsZW1lbnRlZEJ5fTo6JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoY2FzdGVkVGhpcywgZXhl
Yyk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT4kaW1wbEdl
dHRlckZ1bmN0aW9uTmFtZShleGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2hlY2tOb2RlU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRp
bXBsQ2xhc3NOYW1lKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOwpAQCAtMTc2Miw3ICsxNzY4
LDE2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2
ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiaW1w
LiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgbXkgJGdldHRlckV4cHJlc3Npb24gPSAiaW1wLT4iIC4gJGNv
ZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVkZXMsICRpbnRl
cmZhY2VOYW1lLCAkYXR0cmlidXRlKSAuICIpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15
ICRnZXR0ZXJFeHByZXNzaW9uUHJlZml4ID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Np
b25QcmVmaXgoXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG15ICRnZXR0ZXJFeHByZXNzaW9uOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRp
bXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkZ2V0dGVyRXhwcmVzc2lvbiA9ICIke2ltcGxlbWVudGVkQnl9Ojoke2dldHRlckV4cHJl
c3Npb25QcmVmaXh9aW1wKSI7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRnZXR0ZXJFeHByZXNzaW9uID0gImltcC0+IiAuICRn
ZXR0ZXJFeHByZXNzaW9uUHJlZml4IC4gIikiOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICRnZXR0ZXJFeHByZXNzaW9u
LCAiY2FzdGVkVGhpcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1l
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKQEAgLTE3NzIsNyAr
MTc4Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAkanNUeXBl
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgbV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIi5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCByZXN1bHQpO1xuIikgaWYgKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hlZEF0dHJpYnV0ZSJ9KTsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwog
CkBAIC0xODg1LDcgKzE5MDAsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbSJ9IHx8ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9
IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3Rv
bVNldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5zZXQkaW1wbFNl
dHRlckZ1bmN0aW9uTmFtZShleGVjLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRp
bXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJKUyR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlMke2ltcGxlbWVudGVkQnl9
OjpzZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhp
c09iamVjdCksIGV4ZWMsIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+c2V0JGltcGxT
ZXR0ZXJGdW5jdGlvbk5hbWUoZXhlYywgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2
ZW50TGlzdGVuZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siSlNFdmVudExpc3RlbmVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIik7CkBAIC0xOTcw
LDE3ICsxOTkxLDIxIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkc2V0dGVyRXhwcmVzc2lvblBy
ZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1
ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC0+JHNldHRlckV4cHJlc3Npb25Q
cmVmaXgkbmF0aXZlVmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVk
QnkifSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVu
dGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2ltcGxlbWVudGVkQnl9Ojok
e3NldHRlckV4cHJlc3Npb25QcmVmaXh9aW1wLCAkbmF0aXZlVmFsdWUiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC0+JHNldHRlckV4cHJlc3Npb25Q
cmVmaXgkbmF0aXZlVmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiwgZWMi
KSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIik7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2VuZGlmXG4iKSBpZiAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmc7Ci0KICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4IDI3NDEwMjg5N2I1OTFm
Y2QwNDAxYmQ0ZjI3ZjcwNDk0MjkxNzU5Y2EuLjgwYTljZjRlZWYzNTE4ZjA3M2QwNmEzZGU3OWMy
OTA3MDRkNjcyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMTIwNyw3ICsxMjA3LDE1IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9fiBz
L1xib3duZXJEb2N1bWVudFxiL2RvY3VtZW50LzsKIAogICAgICAgICAgICAgbXkgJGhhc0dldHRl
ckV4Y2VwdGlvbiA9IEB7JGF0dHJpYnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc307Ci0gICAgICAgICAg
ICBteSAkZ2V0dGVyQ29udGVudEhlYWQgPSAiSU1QTC0+JGdldHRlckV4cHJlc3Npb25QcmVmaXgi
OworICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnRIZWFkOworICAgICAgICAgICAgaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnki
fSkgeworICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAg
ICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiJHtpbXBsZW1lbnRlZEJ5fTo6JHtnZXR0ZXJF
eHByZXNzaW9uUHJlZml4fUlNUEwiOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiSU1QTC0+JGdldHRlckV4cHJlc3Npb25QcmVmaXgi
OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVudFRhaWwgPSAi
KSI7CiAKICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7CkBAIC0xMzQxLDcgKzEz
NDksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBteSAkZ2V0
dGVyQ29udGVudDsKICAgICAgICAgICAgIGlmICgkaGFzR2V0dGVyRXhjZXB0aW9uKSB7Ci0gICAg
ICAgICAgICAgICAgJGdldHRlckNvbnRlbnQgPSAkZ2V0dGVyQ29udGVudEhlYWQgLiAiZWMiIC4g
JGdldHRlckNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50ID0gJGdl
dHRlckNvbnRlbnRIZWFkIC4gKCRnZXR0ZXJDb250ZW50SGVhZCA9fiAvXCgkLyA/ICJlYyIgOiAi
LCBlYyIpIC4gJGdldHRlckNvbnRlbnRUYWlsOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAkZ2V0dGVyQ29udGVudCA9ICRnZXR0ZXJDb250ZW50SGVhZCAuICRnZXR0ZXJD
b250ZW50VGFpbDsKICAgICAgICAgICAgIH0KQEAgLTE0MzcsNyArMTQ0NSwxMyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBteSAkc2V0dGVyRXhwcmVz
c2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1w
bEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAg
ICAgIG15ICRlYyA9ICRoYXNTZXR0ZXJFeGNlcHRpb24gPyAiLCBlYyIgOiAiIjsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpIGlm
ICRoYXNTZXR0ZXJFeGNlcHRpb247Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIElNUEwtPiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JGFyZyRlYyk7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbXkg
JGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAke2ltcGxlbWVudGVkQnl9Ojoke3NldHRlckV4cHJlc3Np
b25QcmVmaXh9SU1QTCwgJHthcmd9JHtlY30pO1xuIik7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJ
TVBMLT4kc2V0dGVyRXhwcmVzc2lvblByZWZpeCRhcmckZWMpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4
Y2VwdGlvblJhaXNlT25FcnJvclxuIikgaWYgJGhhc1NldHRlckV4Y2VwdGlvbjsKICAgICAgICAg
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KaW5kZXggNmFmZDgxMGRjNGM0ZmRhNjhhMjA5ZjdjZjg0NDcyNmQ2NGNm
YmQ1Ny4uZmM2NWQwMjhmYThkYjVjMTJmOTQ3MTBjYjYxYTE1ZTJkOThlM2FmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAg
LTM5NSwxNCArMzk1LDE2IEBAIEVORAogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0
YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lOwogICAgICAgICBteSAkYXR0ckV4dCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwotICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhDdXN0b21H
ZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifQotICAgICAgICAgICAgfHwgJGF0
dHJFeHQtPnsiVjhDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSkgeworICAgICAgICBp
ZiAoKCRhdHRyRXh0LT57IlY4Q3VzdG9tR2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tR2V0
dGVyIn0gfHwKKyAgICAgICAgICAgICAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9IHx8ICRhdHRyRXh0
LT57IkN1c3RvbSJ9KSAmJgorICAgICAgICAgICAgISRhdHRyRXh0LT57IkltcGxlbWVudGVkQnki
fSkgewogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJik7CiBFTkQKICAgICAgICAg
fQotICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSB8fCAkYXR0ckV4dC0+
eyJDdXN0b21TZXR0ZXIifQotICAgICAgICAgICAgfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSB8
fCAkYXR0ckV4dC0+eyJDdXN0b20ifSkgeworICAgICAgICBpZiAoKCRhdHRyRXh0LT57IlY4Q3Vz
dG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0gfHwKKyAgICAgICAgICAg
ICAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9IHx8ICRhdHRyRXh0LT57IkN1c3RvbSJ9KSAmJgorICAg
ICAgICAgICAgISRhdHRyRXh0LT57IkltcGxlbWVudGVkQnkifSkgewogICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgIHN0YXRpYyB2b2lkICR7bmFtZX1BY2Nlc3Nv
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4s
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mKTsKIEVORApAQCAtODc0LDggKzg3NiwxNiBAQCBFTkQK
IAogICAgIG15ICRnZXR0ZXJTdHJpbmc7CiAgICAgaWYgKCRnZXR0ZXJTdHJpbmdVc2VzSW1wKSB7
Ci0gICAgICAgICRnZXR0ZXJTdHJpbmcgPSAiaW1wLT4iIC4gJGNvZGVHZW5lcmF0b3ItPkdldHRl
ckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmli
dXRlKTsKLSAgICAgICAgJGdldHRlclN0cmluZyAuPSAiZWMiIGlmICR1c2VFeGNlcHRpb25zOwor
ICAgICAgICBteSAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0
ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJp
YnV0ZSk7CisgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5
ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50
ZWRCeSJ9OworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7aW1wbGVtZW50ZWRCeX0u
aCIpOworICAgICAgICAgICAgJGdldHRlclN0cmluZyA9ICIke2ltcGxlbWVudGVkQnl9Ojoke2dl
dHRlckV4cHJlc3Npb25QcmVmaXh9aW1wIjsKKyAgICAgICAgICAgICRnZXR0ZXJTdHJpbmcgLj0g
IiwgZWMiIGlmICR1c2VFeGNlcHRpb25zOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
JGdldHRlclN0cmluZyA9ICJpbXAtPiRnZXR0ZXJFeHByZXNzaW9uUHJlZml4IjsKKyAgICAgICAg
ICAgICRnZXR0ZXJTdHJpbmcgLj0gImVjIiBpZiAkdXNlRXhjZXB0aW9uczsKKyAgICAgICAgfQog
ICAgICAgICAkZ2V0dGVyU3RyaW5nIC49ICIpIjsKICAgICB9IGVsc2UgewogICAgICAgICAkZ2V0
dGVyU3RyaW5nID0gImltcEluc3RhbmNlIjsKQEAgLTg4NCwxNiArODk0LDE2IEBAIEVORAogICAg
IG15ICRyZXN1bHQ7CiAgICAgbXkgJHdyYXBwZXI7CiAKLSAgICAgICAgaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIgJiYgJGRhdGFOb2RlLT5uYW1lIGVx
ICJET01XaW5kb3ciKSB7CisgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAi
RXZlbnRMaXN0ZW5lciIgJiYgJGRhdGFOb2RlLT5uYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKCFpbXAtPmRvY3VtZW50KCkpXG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpO1xuIik7CiAgICAgfQogCiAgICAgaWYgKCR1c2VFeGNlcHRpb25z
KSB7CiAgICAgICAgIGlmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLykgewotICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVy
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJG5hdGl2ZVR5cGUsICJ2IiwgJGdldHRlclN0cmluZykg
LiAiO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICIgLiBD
b252ZXJ0VG9WOFBhcmFtZXRlcigkYXR0cmlidXRlLT5zaWduYXR1cmUsICRuYXRpdmVUeXBlLCAi
diIsICRnZXR0ZXJTdHJpbmcpIC4gIjtcbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUgdiA9ICRnZXR0ZXJTdHJp
bmc7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2
ZVR5cGUgdiA9ICRnZXR0ZXJTdHJpbmc7XG4iKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZVNldERPTUV4Y2VwdGlvbigiICAgICIpKTsKICAgICAg
ICAgJHJlc3VsdCA9ICJ2IjsKQEAgLTExMTYsNyArMTEyNiwxMyBAQCBFTkQKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG15ICRzZXR0ZXJFeHByZXNzaW9uUHJl
Zml4ID0gJGNvZGVHZW5lcmF0b3ItPlNldHRlckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVk
ZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgaW1wLT4kc2V0dGVyRXhwcmVzc2lvblByZWZpeCRyZXN1bHQiKTsK
KyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRC
eSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVu
dGVkQnkifTsKKyAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1lbnRl
ZEJ5fS5oIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAk
e2ltcGxlbWVudGVkQnl9Ojoke3NldHRlckV4cHJlc3Npb25QcmVmaXh9aW1wLCAkcmVzdWx0Iik7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgaW1wLT4kc2V0dGVyRXhwcmVzc2lvblByZWZpeCRyZXN1bHQiKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiLCBl
YyIpIGlmICR1c2VFeGNlcHRpb25zOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
KTtcbiIpOwpAQCAtMTg2OCw3ICsxODg0LDEyIEBAIHN1YiBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRB
dHRyaWJ1dGUKICAgICAgICAgIiI7CiAgICAgaWYgKCRjdXN0b21BY2Nlc3NvciBlcSAxKSB7CiAg
ICAgICAgICMgdXNlIHRoZSBuYW1pbmcgY29udmVuc2lvbiwgaW50ZXJmYWNlICsgKGNhcGl0YWxp
emUpIGF0dHIgbmFtZQotICAgICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFtZSAu
ICI6OiIgLiAkYXR0ck5hbWU7CisgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgICRjdXN0
b21BY2Nlc3NvciA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifSAuICI6OiIgLiAkYXR0ck5hbWU7CisgICAgICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiVjgiIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9IC4gIi5oIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFtZSAuICI6OiIgLiAkYXR0ck5hbWU7
CisgICAgICAgIH0KICAgICB9CiAKICAgICBteSAkZ2V0dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwKaW5kZXggNTdhMzky
ODNjM2Q4ZTUxMjdiODQ1MjFlN2E4M2FiNzljYTMzMjlkYS4uYmY0ZDcwMWNmZmY1MDI2OTlkZjU4
MGE0ZmNlZWU5ZDJmNWJkNjAwNSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCkBAIC0zMSw2ICszMSw3IEBACiB1c2Ugc3Ry
aWN0OwogCiB1c2UgRmlsZTo6UGF0aDsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBHZXRvcHQ6
Okxvbmc7CiB1c2UgQ3dkOwogCkBAIC00Nyw2ICs0OCw3IEBAIG15ICRwcmVmaXg7CiBteSAkcHJl
cHJvY2Vzc29yOwogbXkgJHdyaXRlRGVwZW5kZW5jaWVzOwogbXkgJHZlcmJvc2U7CitteSAkc3Vw
cGxlbWVudGFsRGVwZW5kZW5jeUZpbGU7CiAKIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+IFxA
aWRsRGlyZWN0b3JpZXMsCiAgICAgICAgICAgICdvdXRwdXREaXI9cycgPT4gXCRvdXRwdXREaXJl
Y3RvcnksCkBAIC01NywxMSArNTksMTIgQEAgR2V0T3B0aW9ucygnaW5jbHVkZT1zQCcgPT4gXEBp
ZGxEaXJlY3RvcmllcywKICAgICAgICAgICAgJ3ByZWZpeD1zJyA9PiBcJHByZWZpeCwKICAgICAg
ICAgICAgJ3ByZXByb2Nlc3Nvcj1zJyA9PiBcJHByZXByb2Nlc3NvciwKICAgICAgICAgICAgJ3Zl
cmJvc2UnID0+IFwkdmVyYm9zZSwKLSAgICAgICAgICAgJ3dyaXRlLWRlcGVuZGVuY2llcycgPT4g
XCR3cml0ZURlcGVuZGVuY2llcyk7CisgICAgICAgICAgICd3cml0ZS1kZXBlbmRlbmNpZXMnID0+
IFwkd3JpdGVEZXBlbmRlbmNpZXMsCisgICAgICAgICAgICdzdXBwbGVtZW50YWxEZXBlbmRlbmN5
RmlsZT1zJyA9PiBcJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlKTsKIAotbXkgJGlkbEZpbGUg
PSAkQVJHVlswXTsKK215ICR0YXJnZXRJZGxGaWxlID0gJEFSR1ZbMF07CiAKLWRpZSgnTXVzdCBz
cGVjaWZ5IGlucHV0IGZpbGUuJykgdW5sZXNzIGRlZmluZWQoJGlkbEZpbGUpOworZGllKCdNdXN0
IHNwZWNpZnkgaW5wdXQgZmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkdGFyZ2V0SWRsRmlsZSk7CiBk
aWUoJ011c3Qgc3BlY2lmeSBnZW5lcmF0b3InKSB1bmxlc3MgZGVmaW5lZCgkZ2VuZXJhdG9yKTsK
IGRpZSgnTXVzdCBzcGVjaWZ5IG91dHB1dCBkaXJlY3RvcnkuJykgdW5sZXNzIGRlZmluZWQoJG91
dHB1dERpcmVjdG9yeSk7CiBkaWUoJ011c3Qgc3BlY2lmeSBkZWZpbmVzJykgdW5sZXNzIGRlZmlu
ZWQoJGRlZmluZXMpOwpAQCAtNjksMTUgKzcyLDgxIEBAIGRpZSgnTXVzdCBzcGVjaWZ5IGRlZmlu
ZXMnKSB1bmxlc3MgZGVmaW5lZCgkZGVmaW5lcyk7CiBpZiAoISRvdXRwdXRIZWFkZXJzRGlyZWN0
b3J5KSB7CiAgICAgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnkgPSAkb3V0cHV0RGlyZWN0b3J5Owog
fQorJGRlZmluZXMgPX4gcy9eXHMrfFxzKyQvL2c7ICMgdHJpbSB3aGl0ZXNwYWNlCiskdGFyZ2V0
SWRsRmlsZSA9IEN3ZDo6cmVhbHBhdGgoJHRhcmdldElkbEZpbGUpOwogaWYgKCR2ZXJib3NlKSB7
Ci0gICAgcHJpbnQgIiRnZW5lcmF0b3I6ICRpZGxGaWxlXG4iOworICAgIHByaW50ICIkZ2VuZXJh
dG9yOiAkdGFyZ2V0SWRsRmlsZVxuIjsKIH0KLSRkZWZpbmVzID1+IHMvXlxzK3xccyskLy9nOyAj
IHRyaW0gd2hpdGVzcGFjZQorbXkgJHRhcmdldEludGVyZmFjZU5hbWUgPSBmaWxlcGFyc2UoYmFz
ZW5hbWUoJHRhcmdldElkbEZpbGUpLCAiLmlkbCIpOworCitteSAkaWRsRm91bmQgPSAwOworbXkg
QHN1cHBsZW1lbnRlZElkbEZpbGVzOworaWYgKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSkg
eworICAgICMgVGhlIGZvcm1hdCBvZiBhIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5IGZpbGU6Cisg
ICAgIworICAgICMgRE9NV2luZG93LmlkbCBQLmlkbCBRLmlkbCBSLmlkbAorICAgICMgRG9jdW1l
bnQuaWRsIFMuaWRsCisgICAgIyBFdmVudC5pZGwKKyAgICAjIC4uLgorICAgICMKKyAgICAjIFRo
ZSBhYm92ZSBpbmRpY2F0ZXMgdGhhdCBET01XaW5kb3cuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBQ
LmlkbCwgUS5pZGwgYW5kIFIuaWRsLAorICAgICMgRG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRl
ZCBieSBTLmlkbCwgYW5kIEV2ZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KKyAg
ICAjIFRoZSBJREwgdGhhdCBzdXBwbGVtZW50cyBhbm90aGVyIElETCAoZS5nLiBQLmlkbCkgbmV2
ZXIgYXBwZWFycyBpbiB0aGUgZGVwZW5kZW5jeSBmaWxlLgorICAgIG9wZW4gRkgsICI8ICRzdXBw
bGVtZW50YWxEZXBlbmRlbmN5RmlsZSIgb3IgZGllICJDYW5ub3Qgb3BlbiAkc3VwcGxlbWVudGFs
RGVwZW5kZW5jeUZpbGVcbiI7CisgICAgd2hpbGUgKG15ICRsaW5lID0gPEZIPikgeworICAgICAg
ICBteSAoJGlkbEZpbGUsIEBmb2xsb3dpbmdJZGxGaWxlcykgPSBzcGxpdCgvXHMrLywgJGxpbmUp
OworICAgICAgICBpZiAoJGlkbEZpbGUgYW5kICRpZGxGaWxlIGVxICR0YXJnZXRJZGxGaWxlKSB7
CisgICAgICAgICAgICAkaWRsRm91bmQgPSAxOworICAgICAgICAgICAgQHN1cHBsZW1lbnRlZElk
bEZpbGVzID0gQGZvbGxvd2luZ0lkbEZpbGVzOworICAgICAgICB9CisgICAgfQorICAgIGNsb3Nl
IEZIOworCisgICAgaWYgKCEkaWRsRm91bmQpIHsKKyAgICAgICAgaWYgKCR2ZXJib3NlKSB7Cisg
ICAgICAgICAgICBwcmludCAiJHRhcmdldElkbEZpbGUgaXMgc3VwcGxlbWVudGluZyBhbm90aGVy
IElETCBmaWxlLCBhbmQgdGh1cyAuaCBhbmQgLmNwcCBmb3IgJHRhcmdldElkbEZpbGUgYXJlIG5v
dCBnZW5lcmF0ZWQuXG4iOworICAgICAgICB9CisgICAgICAgIGV4aXQgMDsKKyAgICB9Cit9CisK
KyMgUGFyc2UgdGhlIHRhcmdldCBJREwgZmlsZS4KK215ICR0YXJnZXRQYXJzZXIgPSBJRExQYXJz
ZXItPm5ldyghJHZlcmJvc2UpOworbXkgJHRhcmdldERvY3VtZW50ID0gJHRhcmdldFBhcnNlci0+
UGFyc2UoJHRhcmdldElkbEZpbGUsICRkZWZpbmVzLCAkcHJlcHJvY2Vzc29yKTsKIAotIyBQYXJz
ZSB0aGUgZ2l2ZW4gSURMIGZpbGUuCi1teSAkcGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJi
b3NlKTsKLW15ICRkb2N1bWVudCA9ICRwYXJzZXItPlBhcnNlKCRpZGxGaWxlLCAkZGVmaW5lcywg
JHByZXByb2Nlc3Nvcik7Citmb3JlYWNoIG15ICRpZGxGaWxlIChAc3VwcGxlbWVudGVkSWRsRmls
ZXMpIHsKKyAgICBuZXh0IGlmICRpZGxGaWxlIGVxICR0YXJnZXRJZGxGaWxlOworCisgICAgbXkg
JGludGVyZmFjZU5hbWUgPSBmaWxlcGFyc2UoYmFzZW5hbWUoJGlkbEZpbGUpLCAiLmlkbCIpOwor
ICAgIG15ICRwYXJzZXIgPSBJRExQYXJzZXItPm5ldyghJHZlcmJvc2UpOworICAgIG15ICRkb2N1
bWVudCA9ICRwYXJzZXItPlBhcnNlKCRpZGxGaWxlLCAkZGVmaW5lcywgJHByZXByb2Nlc3Nvcik7
CisKKyAgICBmb3JlYWNoIG15ICRkYXRhTm9kZSAoQHskZG9jdW1lbnQtPmNsYXNzZXN9KSB7Cisg
ICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTdXBwbGVtZW50YWwi
fSBhbmQgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3VwcGxlbWVudGFsIn0gZXEg
JHRhcmdldEludGVyZmFjZU5hbWUpIHsKKyAgICAgICAgICAgIG15ICR0YXJnZXREYXRhTm9kZTsK
KyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNsYXNzIChAeyR0YXJnZXREb2N1bWVudC0+Y2xhc3Nl
c30pIHsKKyAgICAgICAgICAgICAgICBpZiAoJGNsYXNzLT5uYW1lIGVxICR0YXJnZXRJbnRlcmZh
Y2VOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICR0YXJnZXREYXRhTm9kZSA9ICRjbGFzczsK
KyAgICAgICAgICAgICAgICAgICAgbGFzdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBkaWUgIk5vdCBmb3VuZCBhbiBpbnRlcmZhY2UgJHt0YXJnZXRJbnRl
cmZhY2VOYW1lfSBpbiAke3RhcmdldEludGVyZmFjZU5hbWV9LmlkbC4iIHVubGVzcyBkZWZpbmVk
ICR0YXJnZXREYXRhTm9kZTsKKworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChA
eyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgICAgICAjIFJlY29yZCB0aGF0
IHRoaXMgYXR0cmlidXRlIGlzIGltcGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgorICAgICAg
ICAgICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Iklt
cGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lOworCisgICAgICAgICAgICAgICAgIyBBZGQg
aW50ZXJmYWNlLXdpZGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNoIGF0dHJpYnV0ZS4KKyAg
ICAgICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXsk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4
dCBpZiAoJGV4dGVuZGVkQXR0cmlidXRlTmFtZSBlcSAiU3VwcGxlbWVudGFsIik7CisgICAgICAg
ICAgICAgICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
JGV4dGVuZGVkQXR0cmlidXRlTmFtZX0gPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2RlLT5hdHRyaWJ1dGVzfSwgJGF0dHJpYnV0ZSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CiAKLSMgR2VuZXJhdGUgZGVzaXJlZCBv
dXRwdXQgZm9yIGdpdmVuIElETCBmaWxlLgorIyBHZW5lcmF0ZSBkZXNpcmVkIG91dHB1dCBmb3Ig
dGhlIHRhcmdldCBJREwgZmlsZS4KIG15ICRjb2RlR2VuID0gQ29kZUdlbmVyYXRvci0+bmV3KFxA
aWRsRGlyZWN0b3JpZXMsICRnZW5lcmF0b3IsICRvdXRwdXREaXJlY3RvcnksICRvdXRwdXRIZWFk
ZXJzRGlyZWN0b3J5LCAwLCAkcHJlcHJvY2Vzc29yLCAkd3JpdGVEZXBlbmRlbmNpZXMsICR2ZXJi
b3NlKTsKLSRjb2RlR2VuLT5Qcm9jZXNzRG9jdW1lbnQoJGRvY3VtZW50LCAkZGVmaW5lcyk7Cisk
Y29kZUdlbi0+UHJvY2Vzc0RvY3VtZW50KCR0YXJnZXREb2N1bWVudCwgJGRlZmluZXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9yZXNvbHZlLXN1cHBsZW1l
bnRhbC5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcmVzb2x2ZS1zdXBwbGVt
ZW50YWwucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFiMTkwZDUzMmZmZDBmYWY1ZjFkNmFmZmU4NzQzYTdhYTA4
OTNjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
cmVzb2x2ZS1zdXBwbGVtZW50YWwucGwKQEAgLTAsMCArMSw5MyBAQAorIyEvdXNyL2Jpbi9wZXJs
IC13CisjCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyMgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyMgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyMgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisjCisKK3VzZSBzdHJpY3Q7
CisKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBHZXRvcHQ6Okxvbmc7Cit1c2UgQ3dkOworCit1
c2UgSURMUGFyc2VyOworCitteSAkZGVmaW5lczsKK215ICRwcmVwcm9jZXNzb3I7CitteSAkdmVy
Ym9zZTsKK215ICRpZGxGaWxlc0xpc3Q7CitteSAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGU7
CisKK0dldE9wdGlvbnMoJ2RlZmluZXM9cycgPT4gXCRkZWZpbmVzLAorICAgICAgICAgICAncHJl
cHJvY2Vzc29yPXMnID0+IFwkcHJlcHJvY2Vzc29yLAorICAgICAgICAgICAndmVyYm9zZScgPT4g
XCR2ZXJib3NlLAorICAgICAgICAgICAnaWRsRmlsZXNMaXN0PXMnID0+IFwkaWRsRmlsZXNMaXN0
LAorICAgICAgICAgICAnc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGU9cycgPT4gXCRzdXBwbGVt
ZW50YWxEZXBlbmRlbmN5RmlsZSk7CisKK2RpZSgnTXVzdCBzcGVjaWZ5ICNkZWZpbmUgbWFjcm9z
IHVzaW5nIC0tZGVmaW5lcy4nKSB1bmxlc3MgZGVmaW5lZCgkZGVmaW5lcyk7CitkaWUoJ011c3Qg
c3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxl
LicpIHVubGVzcyBkZWZpbmVkKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSk7CitkaWUoJ011
c3Qgc3BlY2lmeSB0aGUgZmlsZSBsaXN0aW5nIGFsbCBJRExzIHVzaW5nIC0taWRsRmlsZXNMaXN0
LicpIHVubGVzcyBkZWZpbmVkKCRpZGxGaWxlc0xpc3QpOworCitpZiAoJHZlcmJvc2UpIHsKKyAg
ICBwcmludCAiUmVzb2x2aW5nIFtTdXBwbGVtZW50YWw9WFhYXSBkZXBlbmRlbmNpZXMgaW4gYWxs
IElETCBmaWxlcy5cbiI7Cit9CisKK29wZW4gRkgsICI8ICRpZGxGaWxlc0xpc3QiIG9yIGRpZSAi
Q2Fubm90IG9wZW4gJGlkbEZpbGVzTGlzdFxuIjsKK215IEBpZGxGaWxlcyA9IDxGSD47CitjaG9t
cChAaWRsRmlsZXMpOworY2xvc2UgRkg7CisKKyMgUGFyc2UgYWxsIElETCBmaWxlcy4KK215ICVk
b2N1bWVudHM7CitteSAlaW50ZXJmYWNlTmFtZVRvSWRsRmlsZTsKK2ZvcmVhY2ggbXkgJGlkbEZp
bGUgKEBpZGxGaWxlcykgeworICAgIG15ICRmdWxsUGF0aCA9IEN3ZDo6cmVhbHBhdGgoJGlkbEZp
bGUpOworICAgIG15ICRwYXJzZXIgPSBJRExQYXJzZXItPm5ldyghJHZlcmJvc2UpOworICAgICRk
b2N1bWVudHN7JGZ1bGxQYXRofSA9ICRwYXJzZXItPlBhcnNlKCRpZGxGaWxlLCAkZGVmaW5lcywg
JHByZXByb2Nlc3Nvcik7CisgICAgJGludGVyZmFjZU5hbWVUb0lkbEZpbGV7ZmlsZXBhcnNlKGJh
c2VuYW1lKCRpZGxGaWxlKSwgIi5pZGwiKX0gPSAkZnVsbFBhdGg7Cit9CisKKyMgUmVzb2x2ZXMg
W1N1cHBsZW1lbnRhbD1YWFhdIGRlcGVuZGVuY2llcy4KK215ICVzdXBwbGVtZW50YWxzOworZm9y
ZWFjaCBteSAkaWRsRmlsZSAoa2V5cyAlZG9jdW1lbnRzKSB7CisgICAgJHN1cHBsZW1lbnRhbHN7
JGlkbEZpbGV9ID0gW107CisgICAgZm9yZWFjaCBteSAkZGF0YU5vZGUgKEB7JGRvY3VtZW50c3sk
aWRsRmlsZX0tPmNsYXNzZXN9KSB7CisgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJTdXBwbGVtZW50YWwifSkgeworICAgICAgICAgICAgbXkgJHRhcmdldElkbEZp
bGUgPSAkaW50ZXJmYWNlTmFtZVRvSWRsRmlsZXskZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJTdXBwbGVtZW50YWwifX07CisgICAgICAgICAgICBwdXNoKEB7JHN1cHBsZW1lbnRhbHN7
JHRhcmdldElkbEZpbGV9fSwgJGlkbEZpbGUpOworICAgICAgICAgICAgIyBUcmVhdHMgYXMgaWYg
dGhpcyBJREwgZmlsZSBkb2VzIG5vdCBleGlzdC4KKyAgICAgICAgICAgIGRlbGV0ZSAkc3VwcGxl
bWVudGFsc3skaWRsRmlsZX07CisgICAgICAgIH0KKyAgICB9Cit9CisKKyMgT3V0cHV0cyB0aGUg
ZGVwZW5kZW5jeS4KKyMgVGhlIGZvcm1hdCBvZiBhIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5IGZp
bGU6CisjCisjIERPTVdpbmRvdy5pZGwgUC5pZGwgUS5pZGwgUi5pZGwKKyMgRG9jdW1lbnQuaWRs
IFMuaWRsCisjIEV2ZW50LmlkbAorIyAuLi4KKyMKKyMgVGhlIGFib3ZlIGluZGljYXRlcyB0aGF0
IERPTVdpbmRvdy5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IFAuaWRsLCBRLmlkbCBhbmQgUi5pZGws
CisjIERvY3VtZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgUy5pZGwsIGFuZCBFdmVudC5pZGwg
aXMgc3VwcGxlbWVudGVkIGJ5IG5vIElETHMuCisjIFRoZSBJREwgdGhhdCBzdXBwbGVtZW50cyBh
bm90aGVyIElETCAoZS5nLiBQLmlkbCkgbmV2ZXIgYXBwZWFycyBpbiB0aGUgZGVwZW5kZW5jeSBm
aWxlLgorb3BlbiBGSCwgIj4gJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlIiBvciBkaWUgIkNh
bm5vdCBvcGVuICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZVxuIjsKK2ZvcmVhY2ggbXkgJGlk
bEZpbGUgKHNvcnQga2V5cyAlc3VwcGxlbWVudGFscykgeworICAgIHByaW50IEZIICRpZGxGaWxl
LCAiIEB7JHN1cHBsZW1lbnRhbHN7JGlkbEZpbGV9fVxuIjsKK30KK2Nsb3NlIEZIOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdEludGVyZmFjZS5jcHAKaW5kZXggN2ZhNGFmMzUyOTI2N2JhNzJiMGE5NDEwMDc4
YjZmNTAwZDU3OWIzZC4uZjExNGY5MDQ4MjM5YzA5NzAzZmZiOTM3NmZiNDUxNzllOGE0MjUyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJE
T01UZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yNCw4ICsyNCwxMiBAQAogCiAj
aW5jbHVkZSAiV2ViRE9NVGVzdEludGVyZmFjZS5oIgogCisjaW5jbHVkZSAiS1VSTC5oIgogI2lu
Y2x1ZGUgIlRlc3RJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJUZXN0U3VwcGxlbWVudGFsLmgiCisj
aW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFuZGxlci5o
IgorI2luY2x1ZGUgInd0Zi90ZXh0L0F0b21pY1N0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc0LDYgKzc4LDM0IEBAIFdlYkRP
TVRlc3RJbnRlcmZhY2U6On5XZWJET01UZXN0SW50ZXJmYWNlKCkKICAgICBtX2ltcGwgPSAwOwog
fQogCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCitXZWJE
T01TdHJpbmcgV2ViRE9NVGVzdEludGVyZmFjZTo6c3RyMSgpIGNvbnN0Cit7CisgICAgaWYgKCFp
bXBsKCkpCisgICAgICAgIHJldHVybiBXZWJET01TdHJpbmcoKTsKKworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBXVEY6OlN0cmluZyY+KFRlc3RTdXBwbGVtZW50YWw6OnN0cjEoaW1wbCgp
KSk7Cit9CisKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQorV2ViRE9NU3RyaW5nIFdlYkRPTVRlc3RJbnRlcmZhY2U6OnN0cjIoKSBjb25zdAor
eworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nKCk7CisKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV1RGOjpTdHJpbmcmPihUZXN0U3VwcGxlbWVudGFs
OjpzdHIyKGltcGwoKSkpOworfQorCit2b2lkIFdlYkRPTVRlc3RJbnRlcmZhY2U6OnNldFN0cjIo
Y29uc3QgV2ViRE9NU3RyaW5nJiBuZXdTdHIyKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdHIyKGltcGwoKSwgbmV3U3Ry
Mik7Cit9CisKKyNlbmRpZgogV2ViQ29yZTo6VGVzdEludGVyZmFjZSogdG9XZWJDb3JlKGNvbnN0
IFdlYkRPTVRlc3RJbnRlcmZhY2UmIHdyYXBwZXIpCiB7CiAgICAgcmV0dXJuIHdyYXBwZXIuaW1w
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaAppbmRleCA1ZGI1ZGI4YWUwOGU1YWVjYzky
YWNhZjdkNjcyMDZmOWI4ZDM3YzlmLi41YWEwM2M3OTUwOThjMjc0YWY2NzBjMzQ3MDUxODc4MmJi
MTZlMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaApAQCAtNDEsNiArNDEsMTMgQEAg
cHVibGljOgogICAgIFdlYkRPTVRlc3RJbnRlcmZhY2UmIG9wZXJhdG9yPShjb25zdCBXZWJET01U
ZXN0SW50ZXJmYWNlJik7CiAgICAgdmlydHVhbCB+V2ViRE9NVGVzdEludGVyZmFjZSgpOwogCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgV2ViRE9N
U3RyaW5nIHN0cjEoKSBjb25zdDsKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQorICAgIFdlYkRPTVN0cmluZyBzdHIyKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRTdHIyKGNvbnN0IFdlYkRPTVN0cmluZyYpOworI2VuZGlmCiAKICAgICBXZWJDb3Jl
OjpUZXN0SW50ZXJmYWNlKiBpbXBsKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEludGVyZmFjZS5jcHAKaW5kZXggNzA4NmM4MGFmZTY3MWE0MjdjYjZhZTk4YzJiMWQx
NzA5NjM1MTQ5YS4uNWY4ZmFmZWQzMTYyNWJkMmFjMGRhNmQxYTQ2ZmZkNjI4OWY0NzFjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiVGVzdEludGVyZmFjZS5oIgorI2luY2x1ZGUgIlRlc3RT
dXBwbGVtZW50YWwuaCIKICNpbmNsdWRlICJXZWJLaXRET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
Z29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERP
TVRlc3RJbnRlcmZhY2UuaCIKQEAgLTUxLDYgKzUyLDQ3IEBAIFdlYktpdERPTVRlc3RJbnRlcmZh
Y2UqIGtpdChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBvYmopCiAgICAgCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQgLy8KIAorZ2NoYXIqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIx
KFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpCit7CisjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwg
MCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNv
cmU6OlRlc3RJbnRlcmZhY2UgKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdjaGFy
KiByZXMgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN0cjEoaXRlbSkp
OworICAgIHJldHVybiByZXM7CisjZWxzZQorICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLworfQorCitnY2hhcioK
K3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjIoV2ViS2l0RE9NVGVzdEludGVyZmFj
ZSogc2VsZikKK3sKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSAqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2NoYXIqIHJlcyA9IGNvbnZlcnRUb1VURjhT
dHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6c3RyMihpdGVtKSk7CisgICAgcmV0dXJuIHJlczsKKyNl
bHNlCisgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpICovCit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZh
Y2Vfc2V0X3N0cjIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiwgY29uc3QgZ2NoYXIqIHZh
bHVlKQoreworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UgKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOworICAgIFdURjo6U3Ry
aW5nIGNvbnZlcnRlZF92YWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7CisgICAg
VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3RyMihpdGVtLCBjb252ZXJ0ZWRfdmFsdWUpOworI2VuZGlm
IC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLworfQorCiAK
IEdfREVGSU5FX1RZUEUoV2ViS2l0RE9NVGVzdEludGVyZmFjZSwgd2Via2l0X2RvbV90ZXN0X2lu
dGVyZmFjZSwgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkKIApAQCAtNjksNiArMTExLDEyIEBAIFdl
YkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmUoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogcmVxdWVz
dCkKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogZW51bSB7CiAgICAgUFJPUF8wLAorI2lmIEVOQUJM
RShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIFBST1BfU1RSMSwKKyNl
bmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KKyNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICBQUk9QX1NU
UjIsCisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
ICovCiB9OwogCiAKQEAgLTkxLDcgKzEzOSwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
c3RfaW50ZXJmYWNlX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCiB7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYktpdERPTVRlc3RJ
bnRlcmZhY2UqIHNlbGYgPSBXRUJLSVRfRE9NX1RFU1RfSU5URVJGQUNFKG9iamVjdCk7CisgICAg
V2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29yZVNlbGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAg
ICAgc3dpdGNoIChwcm9wX2lkKSB7CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCisgICAgY2FzZSBQUk9QX1NUUjI6CisgICAgeworICAgICAgICBUZXN0U3Vw
cGxlbWVudGFsOjpzZXRTdHIyKGNvcmVTZWxmLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgoZ192YWx1
ZV9nZXRfc3RyaW5nKHZhbHVlKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYgLyog
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCiAgICAgZGVmYXVs
dDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTEwMiw3ICsxNTksMjMgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfcHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wX2kKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vf
Z2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcHNwZWMpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYgPSBXRUJLSVRfRE9N
X1RFU1RfSU5URVJGQUNFKG9iamVjdCk7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29y
ZVNlbGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgc3dpdGNoIChwcm9wX2lkKSB7CisjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgY2FzZSBQUk9Q
X1NUUjE6CisgICAgeworICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0
VG9VVEY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN0cjEoY29yZVNlbGYpKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikgKi8KKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRp
b24xMikKKyAgICBjYXNlIFBST1BfU1RSMjoKKyAgICB7CisgICAgICAgIGdfdmFsdWVfdGFrZV9z
dHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6c3RyMihj
b3JlU2VsZikpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmIC8qIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVj
KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMjUsNiArMTk4LDI0IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2VfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0SW50ZXJmYWNlQ2xh
c3MqIHJlCiAgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3Rf
aW50ZXJmYWNlX2dldF9wcm9wZXJ0eTsKICAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0g
d2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9jb25zdHJ1Y3RlZDsKIAorI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJPUF9TVFIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19w
YXJhbV9zcGVjX3N0cmluZygic3RyMSIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RfaW50ZXJmYWNlX3N0
cjEiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZC1vbmx5ICBnY2hhciogVGVzdElu
dGVyZmFjZS5zdHIxIiwgLyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBz
dHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIiLCAvKiBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJM
RSkpOworI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KSAqLworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9TVFIyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygic3RyMiIsIC8qIG5hbWUgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInRlc3RfaW50ZXJmYWNlX3N0cjIiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVh
ZC13cml0ZSAgZ2NoYXIqIFRlc3RJbnRlcmZhY2Uuc3RyMiIsIC8qIGxvbmdlciAtIGNvdWxkIGRv
IHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwgLyogZGVmYXVsdCAqLwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCiAKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEludGVyZmFjZS5oCmluZGV4IGY5YWY4NjZhYTAxZjhkY2UyMzQ5MzM4MzNmMGFhYmNi
N2EyZDJhNGQuLjdjMzY1MDU4YjliODQ0MTJiZWI3YmRiYzc1OGQ3MDU1YzQwZWFjZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmgKQEAgLTQ2LDYgKzQ2LDM3IEBA
IHN0cnVjdCBfV2ViS2l0RE9NVGVzdEludGVyZmFjZUNsYXNzIHsKIFdFQktJVF9BUEkgR1R5cGUK
IHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3R5cGUgKHZvaWQpOwogCisvKioKKyAqIHdl
YmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjE6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9N
VGVzdEludGVyZmFjZQorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGdjaGFy
Kgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfc3RyMShXZWJLaXRET01UZXN0SW50ZXJm
YWNlKiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIy
OgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RJbnRlcmZhY2UKKyAqCisgKiBSZXR1cm5zOgor
ICoKKyoqLworV0VCS0lUX0FQSSBnY2hhcioKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0
X3N0cjIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZik7CisKKy8qKgorICogd2Via2l0X2Rv
bV90ZXN0X2ludGVyZmFjZV9zZXRfc3RyMjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0SW50
ZXJmYWNlCisgKiBAdmFsdWU6IEEgI2djaGFyCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfc3RyMihXZWJLaXRE
T01UZXN0SW50ZXJmYWNlKiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOworCiBHX0VORF9ERUNM
UwogCiAjZW5kaWYgLyogV2ViS2l0RE9NVGVzdEludGVyZmFjZV9oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCmluZGV4IDg1ZDgxMDBlMjc3ZjViMDMwM2YxNDRhZmRkYjNlZThiNGJmNGI2YTQuLmE5
NmM4MzYxYzYzNTQ2ZGU5NjNiMjA3OGI4NjE2ZjNhOTE5MDdlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCkBAIC0yNiwxMCArMjYsMTcgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU1Rlc3RTdXBwbGVtZW50YWwu
aCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRh
bC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2VuZGlmCisKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDEyICs1Nywy
MSBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTVGVzdEludGVyZmFjZSk7CiAKIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VUYWJsZVZhbHVlc1tdID0KIHsK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICB7ICJz
dHIxIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZVN0cjEpLCAoaW50cHRyX3QpMCBU
SFVOS19HRU5FUkFUT1IoMCkgSU5UUklOU0lDKERGRzo6Tm9JbnRyaW5zaWMpIH0sCisjZW5kaWYK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICB7ICJz
dHIyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VTdHIyKSwgKGludHB0cl90KXNldEpTVGVzdEludGVy
ZmFjZVN0cjIgVEhVTktfR0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9
LAorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
CisgICAgeyAic3RyMyIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlU3RyMyksIChpbnRwdHJfdClzZXRK
U1Rlc3RJbnRlcmZhY2VTdHIzIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZHOjpOb0lu
dHJpbnNpYykgfSwKKyNlbmRpZgogICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0gfCBSZWFk
T25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRPUigw
KSBJTlRSSU5TSUMoREZHOjpOb0ludHJpbnNpYykgfSwKICAgICB7IDAsIDAsIDAsIDAgVEhVTktf
R0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9CiB9OwogCiAjdW5kZWYg
VEhVTktfR0VORVJBVE9SCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEludGVyZmFjZVRh
YmxlID0geyAyLCAxLCBKU1Rlc3RJbnRlcmZhY2VUYWJsZVZhbHVlcywgMCB9Oworc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3RJbnRlcmZhY2VUYWJsZSA9IHsgOCwgNywgSlNUZXN0SW50ZXJm
YWNlVGFibGVWYWx1ZXMsIDAgfTsKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAj
aWYgRU5BQkxFKEpJVCkKICNkZWZpbmUgVEhVTktfR0VORVJBVE9SKGdlbmVyYXRvcikgLCBnZW5l
cmF0b3IKQEAgLTE4NywxMiArMjAzLDcwIEBAIGJvb2wgSlNUZXN0SW50ZXJmYWNlOjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjCiAgICAg
cmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RJbnRlcmZhY2UsIEJhc2U+KGV4
ZWMsICZKU1Rlc3RJbnRlcmZhY2VUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTsKIH0KIAorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQorSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCit7CisgICAgSlNUZXN0SW50ZXJmYWNlKiBj
YXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgVGVzdEludGVyZmFjZSogaW1wID0g
c3RhdGljX2Nhc3Q8VGVzdEludGVyZmFjZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBUZXN0U3VwcGxlbWVudGFsOjpzdHIxKGltcCkp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCitKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN0cjIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK3sK
KyAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRl
cmZhY2UqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAg
ICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0SW50ZXJmYWNlKj4oY2FzdGVk
VGhpcy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIFRlc3RT
dXBwbGVtZW50YWw6OnN0cjIoaW1wKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlm
CisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKK0pTVmFs
dWUganNUZXN0SW50ZXJmYWNlU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImKQoreworICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9
IHN0YXRpY19jYXN0PEpTVGVzdEludGVyZmFjZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAg
cmV0dXJuIEpTVGVzdFN1cHBsZW1lbnRhbDo6c3RyMyhjYXN0ZWRUaGlzLCBleGVjKTsKK30KKwor
I2VuZGlmCisKIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKIHsKICAgICBKU1Rlc3RJ
bnRlcmZhY2UqIGRvbU9iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdEludGVyZmFjZSo+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIEpTVGVzdEludGVyZmFjZTo6Z2V0Q29uc3RydWN0
b3IoZXhlYywgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7CiB9CiAKK3ZvaWQgSlNUZXN0SW50
ZXJmYWNlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
eworICAgIEpTVGVzdEludGVyZmFjZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZz
X2luZm8pOworICAgIGxvb2t1cFB1dDxKU1Rlc3RJbnRlcmZhY2UsIEJhc2U+KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsICZKU1Rlc3RJbnRlcmZhY2VUYWJsZSwgdGhpc09iamVjdCwgc2xvdCk7
Cit9CisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKK3Zv
aWQgc2V0SlNUZXN0SW50ZXJmYWNlU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhp
cyA9IHN0YXRpY19jYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNPYmplY3QpOworICAgIFRlc3RJ
bnRlcmZhY2UqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RJbnRlcmZhY2UqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpOworICAgIFRlc3RTdXBwbGVtZW50YWw6OnNldFN0cjIoaW1wLCB1c3RyaW5nVG9TdHJp
bmcodmFsdWUuaXNFbXB0eSgpID8gVVN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYykpKTsK
K30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRp
b24xMikKK3ZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEpTVGVzdFN1cHBsZW1lbnRh
bDo6c2V0U3RyMyhzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzT2JqZWN0KSwgZXhl
YywgdmFsdWUpOworfQorCisjZW5kaWYKKwogSlNWYWx1ZSBKU1Rlc3RJbnRlcmZhY2U6OmdldENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3I+KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmgKaW5kZXggYmMyYjA2N2FkM2EwZmM3YjFmYThmMWY3YmRhOTcyNWQx
YTFkODIwMy4uNWU1ZDM1NzE2NTc2YmUzMDE5YTkzMjdkN2ZmZjI2ZTZmYTM5YjJlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwq
LCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCkBAIC0xMzQsNiArMTM1LDExIEBAIHByb3RlY3RlZDoKIAogLy8gQXR0cmlidXRlcwog
CitKU0M6OkpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3RyMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0SW50
ZXJmYWNlU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdEludGVyZmFjZVN0cjIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VTdHIzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImKTsKK3ZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50
aWZpZXImKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5o
CmluZGV4IGRiN2JlMjhjYjlhZDQwOGNkNTJkODhmNzBiMTg4ZGRkODM4MjVmOTIuLjIzNDI1OWI0
NTQwOWNhMzNlNmE3MjJkOTI3MzEwYTg2YjU1NTQzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNl
LmgKQEAgLTI4LDcgKzI4LDIwIEBACiAKICNpZiBXRUJLSVRfVkVSU0lPTl9NQVhfQUxMT1dFRCA+
PSBXRUJLSVRfVkVSU0lPTl9MQVRFU1QKIAorQGNsYXNzIE5TU3RyaW5nOworCiBAaW50ZXJmYWNl
IERPTVRlc3RJbnRlcmZhY2UgOiBET01PYmplY3QKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKKy0gKE5TU3RyaW5nICopc3RyMTsKKyNlbmRpZgorI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorLSAoTlNTdHJpbmcgKilz
dHIyOworLSAodm9pZClzZXRTdHIyOihOU1N0cmluZyAqKW5ld1N0cjI7CisjZW5kaWYKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKy0gKE5TU3RyaW5nICop
c3RyMzsKKy0gKHZvaWQpc2V0U3RyMzooTlNTdHJpbmcgKiluZXdTdHIzOworI2VuZGlmCiBAZW5k
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KaW5kZXggYWI1OTMzMzBjODcyMGNh
ZThlMWZiYzRhMWJmMTM0NDNjNThiOTBlOC4uZjQ2OWNmMTBhZjg0ZjViOWIxYTJjNjk4YjEzMjEx
Yzc5NzkwZTE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCkBAIC00MSw3ICs0MSw5IEBA
CiAjaW1wb3J0ICJET01UZXN0SW50ZXJmYWNlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlv
bkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbXBvcnQg
IktVUkwuaCIKICNpbXBvcnQgIlRlc3RJbnRlcmZhY2UuaCIKKyNpbXBvcnQgIlRlc3RTdXBwbGVt
ZW50YWwuaCIKICNpbXBvcnQgIlRocmVhZENoZWNrLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4
dHJhcy5oIgogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgpAQCAtNjgsNiArNzAs
NDIgQEAKICAgICBbc3VwZXIgZmluYWxpemVdOwogfQogCisjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChOU1N0cmluZyAqKXN0cjEKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIFRlc3RTdXBwbGVt
ZW50YWw6OnN0cjEoSU1QTCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQorLSAoTlNTdHJpbmcgKilzdHIyCit7CisgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBUZXN0U3VwcGxlbWVu
dGFsOjpzdHIyKElNUEwpOworfQorCistICh2b2lkKXNldFN0cjI6KE5TU3RyaW5nICopbmV3U3Ry
MgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBUZXN0
U3VwcGxlbWVudGFsOjpzZXRTdHIyKElNUEwsIG5ld1N0cjIpOworfQorI2VuZGlmCisKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKy0gKE5TU3RyaW5nICop
c3RyMworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBy
ZXR1cm4gVGVzdFN1cHBsZW1lbnRhbDo6c3RyMyhJTVBMKTsKK30KKworLSAodm9pZClzZXRTdHIz
OihOU1N0cmluZyAqKW5ld1N0cjMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3RyMyhJTVBMLCBuZXdTdHIzKTsK
K30KKyNlbmRpZgorCiBAZW5kCiAKIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmUoRE9NVGVz
dEludGVyZmFjZSAqd3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFsLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFsLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjZmZGQ1
MWE4ZDZlNzhjZjMzMjBlYWVlZjE4NmI5Y2ZiMjZmZjMyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsCkBA
IC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFc3RyQXJnLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBJREwgZmlsZSBpcyBmb3IgdGVzdGlu
ZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3IgYW5kIGZvciB0cmFja2luZworLy8gY2hhbmdl
cyBpbiBpdHMgb3VwdXQuCittb2R1bGUgdGVzdCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
Q29uZGl0aW9uYWw9Q29uZGl0aW9uMTF8Q29uZGl0aW9uMTIsCisgICAgICAgIFN1cHBsZW1lbnRh
bD1UZXN0SW50ZXJmYWNlCisgICAgXSBUZXN0U3VwcGxlbWVudGFsIHsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBzdHIxOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHN0cjI7CisgICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXJdIERP
TVN0cmluZyBzdHIzOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDViNDVh
NmRmMzNjMTY5MmEzYWY3ZDQ1MDU3NjUzMmVjMWE4NmQzZDkuLjU2OWJlOThhNzBmNTFiOTM4YTBl
MzdiYmJlNDhiNWI5OTY2ZmE1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yNSwxMiAr
MjUsMTQgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUg
IlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAi
VjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhU
ZXN0U3VwcGxlbWVudGFsLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQxLDggKzQzLDU4IEBAIG5hbWVzcGFjZSBUZXN0SW50ZXJmYWNl
SW50ZXJuYWwgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHIxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0SW50ZXJmYWNlLnN0cjEuX2dldCIpOworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9
IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4
U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN0cjEoaW1wKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZh
Y2Uuc3RyMi5fZ2V0Iik7CisgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNl
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoVGVzdFN1cHBs
ZW1lbnRhbDo6c3RyMihpbXApKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCisKK3N0YXRpYyB2b2lkIHN0cjJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN0
cjIuX3NldCIpOworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElP
Tl9CTE9DS19WT0lEKFY4UGFyYW1ldGVyPD4sIHYsIHZhbHVlKTsKKyAgICBUZXN0U3VwcGxlbWVu
dGFsOjpzZXRTdHIyKGltcCwgdik7CisgICAgcmV0dXJuOworfQorCisjZW5kaWYgLy8gRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIH0gLy8gbmFtZXNwYWNlIFRl
c3RJbnRlcmZhY2VJbnRlcm5hbAogCitzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0
SW50ZXJmYWNlQXR0cnNbXSA9IHsKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKKyAgICAvLyBBdHRyaWJ1dGUgJ3N0cjEnIChUeXBlOiAncmVhZG9ubHkgYXR0
cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCisgICAgeyJzdHIx
IiwgVGVzdEludGVyZmFjZUludGVybmFsOjpzdHIxQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgLy8g
QXR0cmlidXRlICdzdHIyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFs
IEltcGxlbWVudGVkQnknKQorICAgIHsic3RyMiIsIFRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3Ry
MkF0dHJHZXR0ZXIsIFRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3RyMkF0dHJTZXR0ZXIsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQor
ICAgIC8vIEF0dHJpYnV0ZSAnc3RyMycgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDdXN0
b21TZXR0ZXIgQ3VzdG9tR2V0dGVyIENvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQorICAgIHsi
c3RyMyIsIFY4VGVzdFN1cHBsZW1lbnRhbDo6c3RyM0FjY2Vzc29yR2V0dGVyLCBWOFRlc3RTdXBw
bGVtZW50YWw6OnN0cjNBY2Nlc3NvclNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYgLy8g
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCit9OworCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFj
ZS5Db25zdHJ1Y3RvciIpOwpAQCAtODEsNyArMTMzLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2
ODoKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAg
IGRlZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEludGVyZmFj
ZSIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RJbnRlcmZh
Y2U6OmludGVybmFsRmllbGRDb3VudCwKLSAgICAgICAgMCwgMCwKKyAgICAgICAgVGVzdEludGVy
ZmFjZUF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RJbnRlcmZhY2VBdHRycyksCiAgICAgICAg
IDAsIDApOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBj
YXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRl
c3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDlkM2U0YWJkY2I1MjkxYjIxMWQ5YjUxMWRl
MDBjY2U4ZjFiMGI5MTAuLjJlYTM5MzI4MDRiZjUyYzdhYTJmY2M3ZDY1N2Y1Mjg0OTg5MjE3NmYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxMS0xMS0yOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgSW1wbGVtZW50IFtTdXBwbGVtZW50YWxdIElETCBhbmQgc3VwcG9ydCBp
dCBpbiBydW4tYmluZGluZ3MtdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
KworICAgICAgICBydW4tYmluZGluZ3MtdGVzdHMgc3VwcG9ydHMgdGhlIFtTdXBwbGVtZW50YWxd
IElETCBpbiB0aGUgZm9sbG93aW5nIHdheS4KKyAgICAgICAgICAgICgxKSBJdCBjcmVhdGVzIGEg
ZmlsZSB8eHwgbGlzdGluZyBhbGwgSURMIGZpbGVzLgorICAgICAgICAgICAgKDIpIEl0IGdlbmVy
YXRlcyBhIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5IGZpbGUgfHl8IHVzaW5nIHJlc29sdmUtc3Vw
cGxlbWVudGFsLnBsIGFuZCB8eHwuCisgICAgICAgICAgICAoMykgRm9yIGVhY2ggSURMIGZpbGUg
fHp8LCBpdCBydW5zIGdlbmVyYXRlLWJpbmRpbmdzLnBsIHdpdGggfHl8LgorICAgICAgICAgICAg
ICAgIFRoZW4sIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyAuaCBhbmQgLmNwcCBmaWxl
cyBmb3IgdGhlIElETCBmaWxlIHx6fCwKKyAgICAgICAgICAgICAgICBpbmNsdWRpbmcgYWxsIGF0
dHJpYnV0ZXMgaW4gSURMIGZpbGVzIHRoYXQgYXJlIHN1cHBsZW1lbnRpbmcgdGhlIElETCBmaWxl
IHx6fC4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzOgorICAgICAgICAo
Z2VuZXJhdGVfZnJvbV9pZGwpOgorICAgICAgICAoZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVu
ZGVuY3kpOgorICAgICAgICAoZGV0ZWN0X2NoYW5nZXMpOgorICAgICAgICAocnVuX3Rlc3RzKToK
KyAgICAgICAgKG1haW4pOgorCiAyMDExLTExLTI5ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgTGlzdCBvZiBidWlsZGVycyBpbiB0aGUgZmxha2luZXNzIGRhc2hi
b2FyZCBpcyBvdXQgb2YgZGF0ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tYmluZGlu
Z3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0cwppbmRleCA5YmU3YjQx
ZTY5YTIzMTRlMGI0YzE2YjBhZmE2MTA0MDdiZTZjMDMyLi4xNzQ3ZWI1NDhkOTU1YmI3MTM0YzZm
M2EyODI2MjcwMjlkZjZkODVhIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1iaW5kaW5n
cy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0cwpAQCAtMzgsNyAr
MzgsNyBAQCBpbXBvcnQgdGVtcGZpbGUKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNj
bS5kZXRlY3Rpb24gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCiAKIAotZGVmIGdlbmVyYXRlX2Zy
b21faWRsKGdlbmVyYXRvciwgaWRsX2ZpbGUsIG91dHB1dF9kaXJlY3RvcnkpOgorZGVmIGdlbmVy
YXRlX2Zyb21faWRsKGdlbmVyYXRvciwgaWRsX2ZpbGUsIG91dHB1dF9kaXJlY3RvcnksIHN1cHBs
ZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUpOgogICAgIGNtZCA9IFsncGVybCcsICctdycsCiAgICAg
ICAgICAgICctSVdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cycsCiAgICAgICAgICAgICdXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwnLApAQCAtNDcsNiArNDcsNyBA
QCBkZWYgZ2VuZXJhdGVfZnJvbV9pZGwoZ2VuZXJhdG9yLCBpZGxfZmlsZSwgb3V0cHV0X2RpcmVj
dG9yeSk6CiAgICAgICAgICAgICctLWRlZmluZXMnLCAnVEVTVElOR18lcycgJSBnZW5lcmF0b3Is
CiAgICAgICAgICAgICctLWdlbmVyYXRvcicsIGdlbmVyYXRvciwKICAgICAgICAgICAgJy0tb3V0
cHV0RGlyJywgb3V0cHV0X2RpcmVjdG9yeSwKKyAgICAgICAgICAgJy0tc3VwcGxlbWVudGFsRGVw
ZW5kZW5jeUZpbGUnLCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLAogICAgICAgICAgICBp
ZGxfZmlsZV0KIAogICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0ID0g
c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnIgPSBzdWJwcm9jZXNzLlNURE9VVCkKQEAgLTU3LDYgKzU4
LDMxIEBAIGRlZiBnZW5lcmF0ZV9mcm9tX2lkbChnZW5lcmF0b3IsIGlkbF9maWxlLCBvdXRwdXRf
ZGlyZWN0b3J5KToKICAgICByZXR1cm4gZXhpdF9jb2RlCiAKIAorZGVmIGdlbmVyYXRlX3N1cHBs
ZW1lbnRhbF9kZXBlbmRlbmN5KGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVu
Y3lfZmlsZSk6CisgICAgaWRsX2ZpbGVzX2xpc3QgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICBm
b3IgaW5wdXRfZmlsZSBpbiBvcy5saXN0ZGlyKGlucHV0X2RpcmVjdG9yeSk6CisgICAgICAgIChu
YW1lLCBleHRlbnNpb24pID0gb3MucGF0aC5zcGxpdGV4dChpbnB1dF9maWxlKQorICAgICAgICBp
ZiBleHRlbnNpb24gIT0gJy5pZGwnOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgb3Mu
d3JpdGUoaWRsX2ZpbGVzX2xpc3RbMF0sIG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksIGlu
cHV0X2ZpbGUpICsgIlxuIikKKyAgICBvcy5jbG9zZShpZGxfZmlsZXNfbGlzdFswXSkKKworICAg
IGNtZCA9IFsncGVybCcsICctdycsCisgICAgICAgICAgICctSVdlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cycsCisgICAgICAgICAgICdXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcmVzb2x2ZS1zdXBw
bGVtZW50YWwucGwnLAorICAgICAgICAgICAnLS1pZGxGaWxlc0xpc3QnLCBpZGxfZmlsZXNfbGlz
dFsxXSwKKyAgICAgICAgICAgJy0tZGVmaW5lcycsICcnLAorICAgICAgICAgICAnLS1zdXBwbGVt
ZW50YWxEZXBlbmRlbmN5RmlsZScsIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGVdCisgICAg
cHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQgPSBzdWJwcm9jZXNzLlBJUEUs
IHN0ZGVyciA9IHN1YnByb2Nlc3MuU1RET1VUKQorICAgIGV4aXRfY29kZSA9IHByb2Nlc3Mud2Fp
dCgpCisgICAgb3V0cHV0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpWzBdCisgICAgaWYgb3V0cHV0
OgorICAgICAgICBwcmludCBvdXRwdXQKKworICAgIG9zLnJlbW92ZShpZGxfZmlsZXNfbGlzdFsx
XSkKKyAgICByZXR1cm4gZXhpdF9jb2RlCisKKwogZGVmIGRldGVjdF9jaGFuZ2VzKGdlbmVyYXRv
ciwgd29ya19kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3RvcnkpOgogICAgIGNoYW5nZXNfZm91
bmQgPSBGYWxzZQogICAgIGZvciBvdXRwdXRfZmlsZSBpbiBvcy5saXN0ZGlyKHdvcmtfZGlyZWN0
b3J5KToKQEAgLTc5LDcgKzEwNSw3IEBAIGRlZiBkZXRlY3RfY2hhbmdlcyhnZW5lcmF0b3IsIHdv
cmtfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKICAgICByZXR1cm4gY2hhbmdlc19m
b3VuZAogCiAKLWRlZiBydW5fdGVzdHMoZ2VuZXJhdG9yLCBpbnB1dF9kaXJlY3RvcnksIHJlZmVy
ZW5jZV9kaXJlY3RvcnksIHJlc2V0X3Jlc3VsdHMpOgorZGVmIHJ1bl90ZXN0cyhnZW5lcmF0b3Is
IGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSwgcmVzZXRfcmVzdWx0cywgc3Vw
cGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSk6CiAgICAgd29ya19kaXJlY3RvcnkgPSByZWZlcmVu
Y2VfZGlyZWN0b3J5CiAKICAgICBwYXNzZWQgPSBUcnVlCkBAIC05NCw3ICsxMjAsOCBAQCBkZWYg
cnVuX3Rlc3RzKGdlbmVyYXRvciwgaW5wdXRfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5
LCByZXNldF9yZXN1bHRzKToKIAogICAgICAgICBpZiBnZW5lcmF0ZV9mcm9tX2lkbChnZW5lcmF0
b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihpbnB1dF9kaXJl
Y3RvcnksIGlucHV0X2ZpbGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrX2Rp
cmVjdG9yeSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtfZGlyZWN0b3J5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxl
KToKICAgICAgICAgICAgIHBhc3NlZCA9IEZhbHNlCiAKICAgICAgICAgaWYgcmVzZXRfcmVzdWx0
czoKQEAgLTEzMiwxMiArMTU5LDIwIEBAIGRlZiBtYWluKGFyZ3YpOgogICAgICAgICAnQ1BQJwog
ICAgIF0KIAorICAgIGlucHV0X2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbignV2ViQ29yZScsICdi
aW5kaW5ncycsICdzY3JpcHRzJywgJ3Rlc3QnKQorICAgIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5
X2ZpbGUgPSB0ZW1wZmlsZS5ta3N0ZW1wKClbMV0KKyAgICBpZiBnZW5lcmF0ZV9zdXBwbGVtZW50
YWxfZGVwZW5kZW5jeShpbnB1dF9kaXJlY3RvcnksIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2Zp
bGUpOgorICAgICAgICBwcmludCAnRmFpbGVkIHRvIGdlbmVyYXRlIGEgc3VwcGxlbWVudGFsIGRl
cGVuZGVuY3kgZmlsZS4nCisgICAgICAgIG9zLnJlbW92ZShzdXBwbGVtZW50YWxfZGVwZW5kZW5j
eV9maWxlKQorICAgICAgICByZXR1cm4gLTEKKwogICAgIGZvciBnZW5lcmF0b3IgaW4gZ2VuZXJh
dG9yczoKICAgICAgICAgaW5wdXRfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKCdXZWJDb3JlJywg
J2JpbmRpbmdzJywgJ3NjcmlwdHMnLCAndGVzdCcpCiAgICAgICAgIHJlZmVyZW5jZV9kaXJlY3Rv
cnkgPSBvcy5wYXRoLmpvaW4oJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnc2NyaXB0cycsICd0ZXN0
JywgZ2VuZXJhdG9yKQotICAgICAgICBpZiBub3QgcnVuX3Rlc3RzKGdlbmVyYXRvciwgaW5wdXRf
ZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5LCByZXNldF9yZXN1bHRzKToKKyAgICAgICAg
aWYgbm90IHJ1bl90ZXN0cyhnZW5lcmF0b3IsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2Rp
cmVjdG9yeSwgcmVzZXRfcmVzdWx0cywgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSk6CiAg
ICAgICAgICAgICBhbGxfdGVzdHNfcGFzc2VkID0gRmFsc2UKIAorICAgIG9zLnJlbW92ZShzdXBw
bGVtZW50YWxfZGVwZW5kZW5jeV9maWxlKQogICAgIHByaW50ICcnCiAgICAgaWYgYWxsX3Rlc3Rz
X3Bhc3NlZDoKICAgICAgICAgcHJpbnQgJ0FsbCB0ZXN0cyBQQVNTIScK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117090</attachid>
            <date>2011-11-29 18:15:08 -0800</date>
            <delta_ts>2011-11-29 18:15:08 -0800</delta_ts>
            <desc>to see if mac build passes</desc>
            <filename>bug-73162-20111130111505.patch</filename>
            <type>text/plain</type>
            <size>72774</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA3MWYyZjU2NWY4MzVi
OWMwNGE5Y2RkZmMzNjkwNWVjNWQ3YzIwOC4uOTY5OWRkZDQyZTJhM2UwNzJjNGE3NmE5ZjY0YmU3
NjdkMTU1ZDhkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMS0xMS0yOCAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IFtT
dXBwbGVtZW50YWxdIElETCBhbmQgc3VwcG9ydCBpdCBpbiBydW4tYmluZGluZ3MtdGVzdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTYyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICAtIE92ZXJ2aWV3OgorICAg
ICAgICAgICAgLSBJbXBsZW1lbnQgdGhlIFtTdXBwbGVtZW50YWxdIElETCBpbiByZXNvbHZlLXN1
cHBsZW1lbnRhbC5wbCBhbmQgZ2VuZXJhdGUtYmluZGluZ3MucGwuCisgICAgICAgICAgICAtIFN1
cHBvcnQgdGhlIFtTdXBwbGVtZW50YWxdIElETCBpbiBydW4tYmluZGluZ3MtdGVzdHMuCisgICAg
ICAgICAgICAtIEFkZCBUZXN0U3VwcGxlbWVudGFsLmlkbCBhcyBhIGJpbmRpbmcgdGVzdCBhbmQg
Y29uZmlybSB0aGF0IGl0IHdvcmtzLgorCisgICAgICAgIC0gVGhlIHNwZWMgZm9yIHRoZSBbU3Vw
cGxlbWVudGFsXSBJREw6IGh0dHA6Ly9kZXYudzMub3JnLzIwMDYvd2ViYXBpL1dlYklETC8jZGZu
LXN1cHBsZW1lbnRhbC1pbnRlcmZhY2UKKworICAgICAgICAtIFRoaXMgcGF0Y2ggYWZmZWN0cyBy
dW4tYmluZGluZ3MtdGVzdHMgcmVzdWx0cyBvbmx5IGFuZCBkb2VzIG5vdCBhZmZlY3QgYW55IHJl
YWwgYnVpbGRzCisgICAgICAgIHNpbmNlIG5vIFtTdXBwbGVtZW50YWxdIElETCBoYXMgYmVlbiB3
cml0dGVuIGluIHJlYWwgV2ViQ29yZSBJREwgZmlsZXMgZm9yIG5vdy4KKworICAgICAgICAtIFRo
aXMgcGF0Y2ggbWFrZXMgYSBjaGFuZ2Ugb24gQ29kZUdlbmVyYXRvcioucG0gdG8gc3VwcG9ydCB0
aGUgW1N1cHBsZW1lbnRhbF0gSURMCisgICAgICAgIGZvciAoY3VzdG9tKSBnZXR0ZXJzIGFuZCBz
ZXR0ZXJzLgorCisgICAgICAgIC0gQWRkZWQgcGVybCBzY3JpcHRzIGltcGxlbWVudCB0aGUgW1N1
cHBsZW1lbnRhbF0gSURMIGFzIGZvbGxvd3M6CisKKyAgICAgICAgICAgIFByZXZpb3VzIGJ1aWxk
IGZsb3c6CisgICAgICAgICAgICAgICAgZm9yZWFjaCAkaWRsIChhbGwgSURMIGZpbGVzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGRlcGVuZHMgb24gJGlkbDsK
KyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgcmVhZHMgJGlkbDsKKyAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgZ2VuZXJhdGVzIC5oIGFuZCAu
Y3BwIGZpbGVzIGZvciAkaWRsOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTmV3
IGJ1aWxkIGZsb3cgKFNlZSB0aGUgZGlzY3Vzc2lvbnMgaW4gYnVnIDcyMTM4IGZvciBtb3JlIGRl
dGFpbHMpOgorICAgICAgICAgICAgICAgIHJlc29sdmUtc3VwcGxlbWVudGFsLnBsIGRlcGVuZHMg
b24gYWxsIElETCBmaWxlczsKKyAgICAgICAgICAgICAgICByZXNvbHZlLXN1cHBsZW1lbnRhbC5w
bCByZWFkcyBhbGwgSURMIGZpbGVzOworICAgICAgICAgICAgICAgIHJlc29sdmUtc3VwcGxlbWVu
dGFsLnBsIHJlc29sdmVzIHRoZSBkZXBlbmRlbmN5IG9mIFtTdXBwbGVtZW50YWw9WFhYWF07Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwgb3V0cHV0cyBzdXBwbGVtZW50
YWxfZGVwZW5kZW5jeS50bXA7CisgICAgICAgICAgICAgICAgZm9yZWFjaCAkaWRsIChhbGwgSURM
IGZpbGVzKSB7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGRlcGVu
ZHMgb24gJGlkbCBhbmQgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kudG1wOworICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCByZWFkcyAkaWRsOworICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCByZWFkcyBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50
bXA7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyAu
aCBhbmQgLmNwcCBmaWxlcyBmb3IgJGlkbCwgaW5jbHVkaW5nIGFsbCBhdHRyaWJ1dGVzIGluIElE
TCBmaWxlcyB3aGljaCBhcmUgaW1wbGVtZW50aW5nICRpZGw7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgIFRlc3RzOiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5p
ZGwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGw6IFRo
ZSBpbnB1dCBpcyBhbiBJREwgZmlsZSB8eHwgYW5kIHRoZSBkZXBlbmRlbmN5IGZpbGUuIGdlbmVy
YXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyAuaCBhbmQgLmNwcCBmaWxlcyBmb3IgdGhlIElETCBm
aWxlIHx4fCwgaW5jbHVkaW5nIGFsbCB0aGUgYXR0cmlidXRlcyBpbiB0aGUgSURMIGZpbGVzIHdo
aWNoIGFyZSBpbXBsZW1lbnRpbmcgdGhlIElETCBmaWxlIHx4fC4gZ2VuZXJhdGUtYmluZGluZ3Mu
cGwgYWRkZXMgdGhlIFtJbXBsZW1lbnRlZEJ5XSBJREwgdG8gdGhlIGF0dHJpYnV0ZXMgd2l0aCB0
aGUgW1N1cHBsZW1lbnRhbF0gSURMIGluIG9yZGVyIHRvIGluZGljYXRlIHdoYXQgSURMIGlzIGlt
cGxlbWVudGluZyB0aGUgYXR0cmlidXRlcy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Jl
c29sdmUtc3VwcGxlbWVudGFsLnBsOiBBZGRlZC4gcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwgcmVh
ZHMgYWxsIElETCBmaWxlcywgcmVzb2x2ZXMgW1N1cHBsZW1lbnRhbD1YWFhdIGRlcGVuZGVuY2ll
cywgYW5kIHRoZW4gb3V0cHV0cyB0aGUgZGVwZW5kZW5jeSBmaWxlLiBTZWUgdGhlIGNvbW1lbnQg
aW4gcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwgZm9yIHRoZSBmb3JtYXQgb2YgdGhlIGRlcGVuZGVu
Y3kgZmlsZS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToK
KyAgICAgICAgKEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUpOiBB
dm9pZHMgZHVwbGljYXRlZCBjb25kaXRpb25zLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBJZiBhbiBhdHRy
aWJ1dGUgaXMgW0ltcGxlbWVudGVkQnldIGFub3RoZXIgSURMLCB0aGVuIHdlIG9taXQgdGhlIGRl
Y2xhcmF0aW9uIG9mIHRoZSBjdXN0b20gZ2V0dGVyIGFuZCBzZXR0ZXIuCisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uKTogSWYgYW4gYXR0cmlidXRlIGlzIFtJbXBsZW1lbnRlZEJ5XSBh
bm90aGVyIElETCwgdGhlbiB3ZSBjYWxsIGJhY2sgdGhlIChjdXN0b20pIGdldHRlciBhbmQgc2V0
dGVyIG9mIHRoZSBJREwuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6IElmIGFuIGF0dHJpYnV0ZSBpcyBbSW1w
bGVtZW50ZWRCeV0gYW5vdGhlciBJREwsIHRoZW4gd2Ugb21pdCB0aGUgZGVjbGFyYXRpb24gb2Yg
dGhlIGN1c3RvbSBnZXR0ZXIgYW5kIHNldHRlci4KKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0
ckdldHRlcik6IElmIGFuIGF0dHJpYnV0ZSBpcyBbSW1wbGVtZW50ZWRCeV0gYW5vdGhlciBJREws
IHRoZW4gd2UgY2FsbCBiYWNrIHRoZSBnZXR0ZXIgb2YgdGhlIElETC4KKyAgICAgICAgKEdlbmVy
YXRlTm9ybWFsQXR0clNldHRlcik6IElmIGFuIGF0dHJpYnV0ZSBpcyBbSW1wbGVtZW50ZWRCeV0g
YW5vdGhlciBJREwsIHRoZW4gd2UgY2FsbCBiYWNrIHRoZSBzZXR0ZXIgb2YgdGhlIElETC4KKyAg
ICAgICAgKEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSk6IElmIGFuIGF0dHJpYnV0ZSBp
cyBbSW1wbGVtZW50ZWRCeV0gYW5vdGhlciBJREwsIHRoZW4gd2UgY2FsbCBiYWNrIHRoZSBjdXN0
b20gZ2V0dGVyIG9yIHNldHRlciBvZiB0aGUgSURMLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckNQUC5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24p
OiBJZiBhbiBhdHRyaWJ1dGUgaXMgW0ltcGxlbWVudGVkQnldIGFub3RoZXIgSURMLCB0aGVuIHdl
IGNhbGwgYmFjayB0aGUgZ2V0dGVyIGFuZCBzZXR0ZXIgb2YgdGhlIElETC4gQ29kZUdlbmVyYXRv
ckNQUC5wbSBkb2VzIG5vdCBzdXBwb3J0IGEgY3VzdG9tIGdldHRlciBhbmQgc2V0dGVyLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06CisgICAgICAg
IChHZW5lcmF0ZVByb3BlcnR5KTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBE
aXR0by4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFs
LmlkbDogQWRkZWQuIEEgdGVzdCBjYXNlIGZvciB0aGUgW1N1cHBsZW1lbnRhbF0gSURMLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHA6
IFVwZGF0ZWQgYSBydW4tYmluZGluZ3MtdGVzdHMgcmVzdWx0LgorICAgICAgICAoV2ViRE9NVGVz
dEludGVyZmFjZTo6c3RyMSk6CisgICAgICAgIChXZWJET01UZXN0SW50ZXJmYWNlOjpzdHIyKToK
KyAgICAgICAgKFdlYkRPTVRlc3RJbnRlcmZhY2U6OnNldFN0cjIpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5oOiBEaXR0by4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNl
LmNwcDogRGl0dG8uCisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIx
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjIpOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfc3RyMik6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3RfaW50ZXJmYWNlX2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50
ZXJmYWNlX2NsYXNzX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0SW50ZXJmYWNlU3RyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRl
cmZhY2VTdHIyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN0cjMpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0SW50ZXJmYWNlU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRl
cmZhY2VTdHIzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RJbnRlcmZhY2UuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEludGVyZmFjZS5tbTogRGl0dG8uCisgICAgICAgICgtW0RPTVRlc3RJbnRl
cmZhY2Ugc3RyMV0pOgorICAgICAgICAoLVtET01UZXN0SW50ZXJmYWNlIHN0cjJdKToKKyAgICAg
ICAgKC1bRE9NVGVzdEludGVyZmFjZSBzZXRTdHIyOl0pOgorICAgICAgICAoLVtET01UZXN0SW50
ZXJmYWNlIHN0cjNdKToKKyAgICAgICAgKC1bRE9NVGVzdEludGVyZmFjZSBzZXRTdHIzOl0pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3RyMUF0dHJH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZUludGVybmFsOjpzdHIyQXR0
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW50ZXJuYWw6OnN0cjJB
dHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRl
bXBsYXRlKToKKwogMjAxMS0xMS0yOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gUmViYXNlbGluZWQgYSBydW4tYmluZGluZ3MtdGVz
dHMgcmVzdWx0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtCmluZGV4IDhiMDhmODgzOWQ0NzIzMGQ2YjEyNzk0MzI0ZGEyNTc5ZWYyMmUyYTMu
LjE4NGRmODFhODk5Mzc4MDdhM2FiYmZhNDJmMDIzZjk3NzIxZTc0NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTU2MywxMCAr
NTYzLDEzIEBAIHN1YiBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVl
CiB7CiAgICAgbXkgJGdlbmVyYXRvciA9IHNoaWZ0OwogICAgIG15ICRjb25kaXRpb25hbCA9IHNo
aWZ0OwotICAgIGlmICgkY29uZGl0aW9uYWwgPX4gLyYvKSB7Ci0gICAgICAgIHJldHVybiAiRU5B
QkxFKCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBzcGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4g
IikiOwotICAgIH0gZWxzaWYgKCRjb25kaXRpb25hbCA9fiAvXHwvKSB7Ci0gICAgICAgIHJldHVy
biAiRU5BQkxFKCIgLiBqb2luKCIpIHx8IEVOQUJMRSgiLCBzcGxpdCgvXHwvLCAkY29uZGl0aW9u
YWwpKSAuICIpIjsKKworICAgIG15ICRvcGVyYXRvciA9ICgkY29uZGl0aW9uYWwgPX4gLyYvID8g
JyYnIDogKCRjb25kaXRpb25hbCA9fiAvXHwvID8gJ3wnIDogJycpKTsKKyAgICBpZiAoJG9wZXJh
dG9yKSB7CisgICAgICAgICMgQXZvaWQgZHVwbGljYXRlZCBjb25kaXRpb25zLgorICAgICAgICBt
eSAlY29uZGl0aW9uczsKKyAgICAgICAgbWFwIHsgJGNvbmRpdGlvbnN7JF99ID0gMSB9IHNwbGl0
KCdcXCcgLiAkb3BlcmF0b3IsICRjb25kaXRpb25hbCk7CisgICAgICAgIHJldHVybiAiRU5BQkxF
KCIgLiBqb2luKCIpICRvcGVyYXRvciRvcGVyYXRvciBFTkFCTEUoIiwgc29ydCBrZXlzICVjb25k
aXRpb25zKSAuICIpIjsKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gIkVOQUJMRSgiIC4g
JGNvbmRpdGlvbmFsIC4gIikiOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQppbmRleCBlMTFjN2VlNzg4NDUxZTQ3NDVi
NzlmNDA1NTc1NzYzZTY1Nzg5NTg1Li5mNTQ0MjVjMDVhOGNiMDc4NDFjZThlOWM5ZDE1NzY2NDlj
N2M0NGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JDUFAucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yQ1BQLnBtCkBAIC03MDIsNyArNzAyLDE1IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICAjIC0gR0VUVEVSCiAgICAgICAgICAgICBteSAkZ2V0dGVyU2ln
ID0gIiRhdHRyaWJ1dGVUeXBlICRjbGFzc05hbWVcOlw6JGF0dHJpYnV0ZU5hbWUoKSBjb25zdFxu
IjsKICAgICAgICAgICAgIG15ICRoYXNHZXR0ZXJFeGNlcHRpb24gPSBAeyRhdHRyaWJ1dGUtPmdl
dHRlckV4Y2VwdGlvbnN9OwotICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnRIZWFkID0gImlt
cGwoKS0+IiAuICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbElu
Y2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkZ2V0
dGVyQ29udGVudEhlYWQ7CisgICAgICAgICAgICBteSAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9
ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAk
aW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAg
ICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgICAgICRn
ZXR0ZXJDb250ZW50SGVhZCA9ICIke2ltcGxlbWVudGVkQnl9Ojoke2dldHRlckV4cHJlc3Npb25Q
cmVmaXh9aW1wbCgpIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRIZWFkID0gImltcGwoKS0+JHtnZXR0ZXJFeHByZXNzaW9uUHJlZml4fSI7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVudFRhaWwgPSAiKSI7CiAK
ICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlcwpAQCAtNzIwLDcgKzcyOCw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIG15ICRnZXR0ZXJDb250ZW50OwogICAg
ICAgICAgICAgaWYgKCRoYXNHZXR0ZXJFeGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICAkZ2V0
dGVyQ29udGVudCA9ICRnZXR0ZXJDb250ZW50SGVhZCAuICJlYyIgLiAkZ2V0dGVyQ29udGVudFRh
aWw7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnQgPSAkZ2V0dGVyQ29udGVudEhlYWQg
LiAoJGdldHRlckNvbnRlbnRIZWFkID1+IC9cKCQvID8gImVjIiA6ICIsIGVjIikgLiAkZ2V0dGVy
Q29udGVudFRhaWw7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICRnZXR0
ZXJDb250ZW50ID0gJGdldHRlckNvbnRlbnRIZWFkIC4gJGdldHRlckNvbnRlbnRUYWlsOwogICAg
ICAgICAgICAgfQpAQCAtNzczLDcgKzc4MSwxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRleGNlcHRpb25Jbml0
XG4iKSBpZiAkaGFzU2V0dGVyRXhjZXB0aW9uOwogICAgICAgICAgICAgICAgIG15ICRlYyA9ICRo
YXNTZXR0ZXJFeGNlcHRpb24gPyAiLCBlYyIgOiAiIjsKICAgICAgICAgICAgICAgICBteSAkc2V0
dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJl
Zml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wbCgpLT4kc2V0dGVyRXhwcmVzc2lv
blByZWZpeCRhcmckZWMpO1xuIik7CisgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAg
ICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2ltcGxlbWVudGVkQnl9Ojoke3NldHRl
ckV4cHJlc3Npb25QcmVmaXh9aW1wbCgpLCAke2FyZ30ke2VjfSk7XG4iKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpbXBsKCktPiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JGFyZyRlYyk7XG4iKTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2Vw
dGlvblJhaXNlT25FcnJvclxuIikgaWYgJGhhc1NldHRlckV4Y2VwdGlvbjsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVj
dC5wbQppbmRleCA3YWI4OWRlYTliNGI0MTQxMTAzNzczYjNhMzBmZjlmNDNjOGYzY2E5Li5iNGVi
NGM5MmQ2MGM0ZjUzNTk2NDJkYjQzMmQ3ZTlkMjA5ZjMzNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAg
LTM4Miw4ICszODIsMTcgQEAgc3ViIEdlbmVyYXRlUHJvcGVydHkgewogICAgIG15ICRnZXR0ZXJF
eHByZXNzaW9uUHJlZml4ID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb25QcmVmaXgo
XCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKICAgICBteSAkc2V0
dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJl
Zml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICBt
eSAkZ2V0dGVyQ29udGVudEhlYWQgPSAiY29yZVNlbGYtPiRnZXR0ZXJFeHByZXNzaW9uUHJlZml4
IjsKLSAgICBteSAkc2V0dGVyQ29udGVudEhlYWQgPSAiY29yZVNlbGYtPiRzZXR0ZXJFeHByZXNz
aW9uUHJlZml4JHtjb252ZXJ0RnVuY3Rpb259KGdfdmFsdWVfZ2V0XyRndHlwZSh2YWx1ZSkpIjsK
KyAgICBteSAkZ2V0dGVyQ29udGVudEhlYWQ7CisgICAgbXkgJHNldHRlckNvbnRlbnRIZWFkOwor
ICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAg
ICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgJGdldHRl
ckNvbnRlbnRIZWFkID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7Z2V0dGVyRXhwcmVzc2lvblByZWZp
eH1jb3JlU2VsZiI7CisgICAgICAgICRzZXR0ZXJDb250ZW50SGVhZCA9ICIke2ltcGxlbWVudGVk
Qnl9Ojoke3NldHRlckV4cHJlc3Npb25QcmVmaXh9Y29yZVNlbGYsICR7Y29udmVydEZ1bmN0aW9u
fShnX3ZhbHVlX2dldF8kZ3R5cGUodmFsdWUpKSI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJGdl
dHRlckNvbnRlbnRIZWFkID0gImNvcmVTZWxmLT4kZ2V0dGVyRXhwcmVzc2lvblByZWZpeCI7Cisg
ICAgICAgICRzZXR0ZXJDb250ZW50SGVhZCA9ICJjb3JlU2VsZi0+JHNldHRlckV4cHJlc3Npb25Q
cmVmaXgke2NvbnZlcnRGdW5jdGlvbn0oZ192YWx1ZV9nZXRfJGd0eXBlKHZhbHVlKSkiOworICAg
IH0KIAogICAgIGlmIChncmVwIHskXyBlcSAkYXR0cmlidXRlfSBAd3JpdGVhYmxlUHJvcGVydGll
cykgewogICAgICAgICBwdXNoKEB0eHRTZXRQcm9wcywgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtNDA4LDcgKzQxNyw3IEBAIHN1YiBHZW5l
cmF0ZVByb3BlcnR5IHsKICAgICBteSAkcG9zdENvbnZlcnRGdW5jdGlvbiA9ICIiOwogICAgIG15
ICRkb25lID0gMDsKICAgICBpZiAoJGd0eXBlIGVxICJzdHJpbmciKSB7Ci0gICAgICAgIHB1c2go
QHR4dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0
VG9VVEY4U3RyaW5nKCR7Z2V0dGVyQ29udGVudEhlYWR9JHtleGNlcHRpb259KSkpO1xuIik7Cisg
ICAgICAgIHB1c2goQHR4dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZh
bHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKCR7Z2V0dGVyQ29udGVudEhlYWR9IiAuICgkZ2V0dGVy
Q29udGVudEhlYWQgIX4gL1woJC8gJiYgJGV4Y2VwdGlvbiA/ICIsICRleGNlcHRpb24iIDogIiRl
eGNlcHRpb24iKSAuICIpKSk7XG4iKTsKICAgICAgICAgJGRvbmUgPSAxOwogICAgIH0gZWxzaWYg
KCRndHlwZSBlcSAib2JqZWN0IikgewogICAgICAgICAkdHh0R2V0UHJvcCA9IDw8ICJFT0YiOwpA
QCAtNDI2LDcgKzQzNSwxMyBAQCBFT0YKICAgICB9CiAKICAgICBpZiAoISRkb25lKSB7Ci0gICAg
ICAgIHB1c2goQHR4dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3NldF8kX2d0eXBlKHZhbHVl
LCAke2NvbnZlcnRGdW5jdGlvbn1jb3JlU2VsZi0+JHtnZXR0ZXJFeHByZXNzaW9uUHJlZml4fSR7
ZXhjZXB0aW9ufSkke3Bvc3RDb252ZXJ0RnVuY3Rpb259KTtcbiIpOworICAgICAgICBpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9
KSB7CisgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgIHB1c2go
QHR4dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3NldF8kX2d0eXBlKHZhbHVlLCAke2NvbnZl
cnRGdW5jdGlvbn0ke2ltcGxlbWVudGVkQnl9Ojoke2dldHRlckV4cHJlc3Npb25QcmVmaXh9Y29y
ZVNlbGYsICR7ZXhjZXB0aW9ufSkke3Bvc3RDb252ZXJ0RnVuY3Rpb259KTtcbiIpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAdHh0R2V0UHJvcHMsICIgICAgICAgIGdfdmFs
dWVfc2V0XyRfZ3R5cGUodmFsdWUsICR7Y29udmVydEZ1bmN0aW9ufWNvcmVTZWxmLT4ke2dldHRl
ckV4cHJlc3Npb25QcmVmaXh9JHtleGNlcHRpb259KSR7cG9zdENvbnZlcnRGdW5jdGlvbn0pO1xu
Iik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdXNoKEB0eHRHZXRQcm9wcywgIiAgICAgICAg
YnJlYWs7XG4gICAgfVxuIik7CkBAIC05MzIsNyArOTQ3LDE0IEBAIEVPRgogICAgICAgICBteSAk
Z2V0dGVyQ29udGVudEhlYWQ7CiAgICAgICAgIGlmICgkcHJlZml4KSB7CiAgICAgICAgICAgICBt
eSAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNz
aW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9uKTsKLSAg
ICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICIke2Fzc2lnbn1jb252ZXJ0VG9VVEY4U3Ry
aW5nKGl0ZW0tPiRnZXR0ZXJFeHByZXNzaW9uUHJlZml4JHtleGNlcHRpb25zfSkpO1xuIjsKKyAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0g
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5
In07CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0g
PSAxOworICAgICAgICAgICAgICAgIG15ICRpdGVtID0gISRjYWxsSW1wbFBhcmFtcyAmJiAhJGV4
Y2VwdGlvbnMgPyAiaXRlbSIgOiAiaXRlbSwgIjsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29u
dGVudEhlYWQgPSAiJHthc3NpZ259Y29udmVydFRvVVRGOFN0cmluZygke2ltcGxlbWVudGVkQnl9
OjokZ2V0dGVyRXhwcmVzc2lvblByZWZpeCRpdGVtJHtleGNlcHRpb25zfSkpO1xuIjsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIiR7
YXNzaWdufWNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+JGdldHRlckV4cHJlc3Npb25QcmVmaXgk
e2V4Y2VwdGlvbnN9KSk7XG4iOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIiR7YXNzaWdufWNvbnZlcnRUb1VURjhTdHJp
bmcoaXRlbS0+JHtmdW5jdGlvblNpZ05hbWV9KCR7Y2FsbEltcGxQYXJhbXN9JHtleGNlcHRpb25z
fSkpO1xuIjsKICAgICAgICAgfQpAQCAtOTQxLDEwICs5NjMsMjQgQEAgRU9GCiAgICAgICAgIG15
ICRjb250ZW50SGVhZDsKICAgICAgICAgaWYgKCRwcmVmaXggZXEgImdldF8iKSB7CiAgICAgICAg
ICAgICBteSAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJF
eHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9u
KTsKLSAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIke2Fzc2lnbn0ke2Fzc2lnblByZX1pdGVt
LT4kZ2V0dGVyRXhwcmVzc2lvblByZWZpeCR7Y2FsbEltcGxQYXJhbXN9JHtleGNlcHRpb25zfSR7
YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAg
IG15ICRpbXBsZW1lbnRlZEJ5ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
JHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgICAgIG15ICRpdGVtID0gISRj
YWxsSW1wbFBhcmFtcyAmJiAhJGV4Y2VwdGlvbnMgPyAiaXRlbSIgOiAiaXRlbSwgIjsKKyAgICAg
ICAgICAgICAgICAkY29udGVudEhlYWQgPSAiJHthc3NpZ259JHthc3NpZ25QcmV9JHtpbXBsZW1l
bnRlZEJ5fTo6JGdldHRlckV4cHJlc3Npb25QcmVmaXgkaXRlbSR7Y2FsbEltcGxQYXJhbXN9JHtl
eGNlcHRpb25zfSR7YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgJGNvbnRlbnRIZWFkID0gIiR7YXNzaWdufSR7YXNzaWduUHJlfWl0ZW0tPiRn
ZXR0ZXJFeHByZXNzaW9uUHJlZml4JHtjYWxsSW1wbFBhcmFtc30ke2V4Y2VwdGlvbnN9JHthc3Np
Z25Qb3N0fSk7XG4iOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2lmICgkcHJlZml4IGVx
ICJzZXRfIikgewogICAgICAgICAgICAgbXkgJHNldHRlckV4cHJlc3Npb25QcmVmaXggPSAkY29k
ZUdlbmVyYXRvci0+U2V0dGVyRXhwcmVzc2lvblByZWZpeChcJWltcGxJbmNsdWRlcywgJGludGVy
ZmFjZU5hbWUsICRmdW5jdGlvbik7Ci0gICAgICAgICAgICAkY29udGVudEhlYWQgPSAiJHthc3Np
Z259JHthc3NpZ25QcmV9aXRlbS0+JHNldHRlckV4cHJlc3Npb25QcmVmaXgke2NhbGxJbXBsUGFy
YW1zfSR7ZXhjZXB0aW9uc30ke2Fzc2lnblBvc3R9KTtcbiI7CisgICAgICAgICAgICBpZiAoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0p
IHsKKyAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAg
ICAgICBteSAkaXRlbSA9ICEkY2FsbEltcGxQYXJhbXMgJiYgISRleGNlcHRpb25zID8gIml0ZW0i
IDogIml0ZW0sICI7CisgICAgICAgICAgICAgICAgJGNvbnRlbnRIZWFkID0gIiR7YXNzaWdufSR7
YXNzaWduUHJlfSR7aW1wbGVtZW50ZWRCeX06OiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JGl0ZW0k
e2NhbGxJbXBsUGFyYW1zfSR7ZXhjZXB0aW9uc30ke2Fzc2lnblBvc3R9KTtcbiI7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIke2Fzc2lnbn0k
e2Fzc2lnblByZX1pdGVtLT4kc2V0dGVyRXhwcmVzc2lvblByZWZpeCR7Y2FsbEltcGxQYXJhbXN9
JHtleGNlcHRpb25zfSR7YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIke2Fzc2lnbn0ke2Fzc2lnblBy
ZX1pdGVtLT4ke2Z1bmN0aW9uU2lnTmFtZX0oJHtjYWxsSW1wbFBhcmFtc30ke2V4Y2VwdGlvbnN9
JHthc3NpZ25Qb3N0fSk7XG4iOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDZjZTNhZDY3OTY0NDY2YjJh
NWNmZjFlMjY5ZjEyYzY3ZGYxZjI4ZjUuLmE3NWFmMGQzOWViZmEzMTc1YWFkZDFlYmJiN2ZmYjgw
ZWU3MzM1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCkBAIC04NzcsOCArODc3LDggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICAgICAg
bXkgJGF0dHJpYnV0ZSA9ICRfOwogICAgICAgICAgICAgJG51bUN1c3RvbUF0dHJpYnV0ZXMrKyBp
ZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSB8
fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0NDdXN0b20i
fTsKLSAgICAgICAgICAgICRudW1DdXN0b21BdHRyaWJ1dGVzKysgaWYgJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0dGVyIn0gfHwgJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tR2V0dGVyIn07Ci0g
ICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbVNldHRlciJ9OworICAgICAg
ICAgICAgJG51bUN1c3RvbUF0dHJpYnV0ZXMrKyBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tR2V0dGVyIn0pICYmICEkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07Cisg
ICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlmICgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21TZXR0ZXIifSB8fCAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0NDdXN0b21TZXR0ZXIifSkgJiYgISRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnki
fTsKICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDYWNoZWRBdHRyaWJ1dGUifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpVbmtub3duPiBtXyIgLiAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgJG51bUNh
Y2hlZEF0dHJpYnV0ZXMrKzsKQEAgLTkwMiw5ICs5MDIsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5Lykgewog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgc2V0IiAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkg
LiAiKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUdldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbUdldHRlciJ9KSB7CisgICAgICAgICAgICB9IGVs
c2lmICgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
R2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNDQ3VzdG9tR2V0dGVyIn0pICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSAiIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmly
c3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoSlNDOjpFeGVjU3RhdGUqKSBjb25z
dDtcbiIpOwotICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tU2V0dGVyIn0pIHsKKyAgICAgICAgICAg
IH0gZWxzaWYgKCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21TZXR0ZXIifSB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJKU0NDdXN0b21TZXR0ZXIifSkgJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgewogICAgICAgICAgICAgICAgIGlmICgk
YXR0cmlidXRlLT50eXBlICF+IC9ecmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTcxMSw3ICsxNzExLDEz
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTQ0N1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUdldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkpTQ0N1c3RvbUdldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT4kaW1wbEdldHRlckZ1bmN0
aW9uTmFtZShleGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpT
JHtpbXBsZW1lbnRlZEJ5fTo6JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoY2FzdGVkVGhpcywgZXhl
Yyk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT4kaW1wbEdl
dHRlckZ1bmN0aW9uTmFtZShleGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2hlY2tOb2RlU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRp
bXBsQ2xhc3NOYW1lKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOwpAQCAtMTc2Miw3ICsxNzY4
LDE2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2
ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiaW1w
LiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgbXkgJGdldHRlckV4cHJlc3Npb24gPSAiaW1wLT4iIC4gJGNv
ZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVkZXMsICRpbnRl
cmZhY2VOYW1lLCAkYXR0cmlidXRlKSAuICIpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15
ICRnZXR0ZXJFeHByZXNzaW9uUHJlZml4ID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Np
b25QcmVmaXgoXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG15ICRnZXR0ZXJFeHByZXNzaW9uOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRp
bXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkZ2V0dGVyRXhwcmVzc2lvbiA9ICIke2ltcGxlbWVudGVkQnl9Ojoke2dldHRlckV4cHJl
c3Npb25QcmVmaXh9aW1wKSI7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRnZXR0ZXJFeHByZXNzaW9uID0gImltcC0+IiAuICRn
ZXR0ZXJFeHByZXNzaW9uUHJlZml4IC4gIikiOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICRnZXR0ZXJFeHByZXNzaW9u
LCAiY2FzdGVkVGhpcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1l
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKQEAgLTE3NzIsNyAr
MTc4Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAkanNUeXBl
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgbV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIi5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCByZXN1bHQpO1xuIikgaWYgKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hlZEF0dHJpYnV0ZSJ9KTsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwog
CkBAIC0xODg1LDcgKzE5MDAsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbSJ9IHx8ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9
IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3Rv
bVNldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5zZXQkaW1wbFNl
dHRlckZ1bmN0aW9uTmFtZShleGVjLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRp
bXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJKUyR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlMke2ltcGxlbWVudGVkQnl9
OjpzZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhp
c09iamVjdCksIGV4ZWMsIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+c2V0JGltcGxT
ZXR0ZXJGdW5jdGlvbk5hbWUoZXhlYywgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2
ZW50TGlzdGVuZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siSlNFdmVudExpc3RlbmVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIik7CkBAIC0xOTcw
LDE3ICsxOTkxLDIxIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkc2V0dGVyRXhwcmVzc2lvblBy
ZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1
ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC0+JHNldHRlckV4cHJlc3Npb25Q
cmVmaXgkbmF0aXZlVmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVk
QnkifSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVu
dGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2ltcGxlbWVudGVkQnl9Ojok
e3NldHRlckV4cHJlc3Npb25QcmVmaXh9aW1wLCAkbmF0aXZlVmFsdWUiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC0+JHNldHRlckV4cHJlc3Npb25Q
cmVmaXgkbmF0aXZlVmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiwgZWMi
KSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIik7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2VuZGlmXG4iKSBpZiAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmc7Ci0KICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4IDI3NDEwMjg5N2I1OTFm
Y2QwNDAxYmQ0ZjI3ZjcwNDk0MjkxNzU5Y2EuLjgwYTljZjRlZWYzNTE4ZjA3M2QwNmEzZGU3OWMy
OTA3MDRkNjcyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMTIwNyw3ICsxMjA3LDE1IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9fiBz
L1xib3duZXJEb2N1bWVudFxiL2RvY3VtZW50LzsKIAogICAgICAgICAgICAgbXkgJGhhc0dldHRl
ckV4Y2VwdGlvbiA9IEB7JGF0dHJpYnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc307Ci0gICAgICAgICAg
ICBteSAkZ2V0dGVyQ29udGVudEhlYWQgPSAiSU1QTC0+JGdldHRlckV4cHJlc3Npb25QcmVmaXgi
OworICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnRIZWFkOworICAgICAgICAgICAgaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnki
fSkgeworICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAg
ICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiJHtpbXBsZW1lbnRlZEJ5fTo6JHtnZXR0ZXJF
eHByZXNzaW9uUHJlZml4fUlNUEwiOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiSU1QTC0+JGdldHRlckV4cHJlc3Npb25QcmVmaXgi
OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVudFRhaWwgPSAi
KSI7CiAKICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7CkBAIC0xMzQxLDcgKzEz
NDksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBteSAkZ2V0
dGVyQ29udGVudDsKICAgICAgICAgICAgIGlmICgkaGFzR2V0dGVyRXhjZXB0aW9uKSB7Ci0gICAg
ICAgICAgICAgICAgJGdldHRlckNvbnRlbnQgPSAkZ2V0dGVyQ29udGVudEhlYWQgLiAiZWMiIC4g
JGdldHRlckNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50ID0gJGdl
dHRlckNvbnRlbnRIZWFkIC4gKCRnZXR0ZXJDb250ZW50SGVhZCA9fiAvXCgkLyA/ICJlYyIgOiAi
LCBlYyIpIC4gJGdldHRlckNvbnRlbnRUYWlsOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAkZ2V0dGVyQ29udGVudCA9ICRnZXR0ZXJDb250ZW50SGVhZCAuICRnZXR0ZXJD
b250ZW50VGFpbDsKICAgICAgICAgICAgIH0KQEAgLTE0MzcsNyArMTQ0NSwxMyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBteSAkc2V0dGVyRXhwcmVz
c2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1w
bEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAg
ICAgIG15ICRlYyA9ICRoYXNTZXR0ZXJFeGNlcHRpb24gPyAiLCBlYyIgOiAiIjsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpIGlm
ICRoYXNTZXR0ZXJFeGNlcHRpb247Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIElNUEwtPiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JGFyZyRlYyk7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbXkg
JGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAke2ltcGxlbWVudGVkQnl9Ojoke3NldHRlckV4cHJlc3Np
b25QcmVmaXh9SU1QTCwgJHthcmd9JHtlY30pO1xuIik7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJ
TVBMLT4kc2V0dGVyRXhwcmVzc2lvblByZWZpeCRhcmckZWMpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4
Y2VwdGlvblJhaXNlT25FcnJvclxuIikgaWYgJGhhc1NldHRlckV4Y2VwdGlvbjsKICAgICAgICAg
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KaW5kZXggNmFmZDgxMGRjNGM0ZmRhNjhhMjA5ZjdjZjg0NDcyNmQ2NGNm
YmQ1Ny4uZmM2NWQwMjhmYThkYjVjMTJmOTQ3MTBjYjYxYTE1ZTJkOThlM2FmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAg
LTM5NSwxNCArMzk1LDE2IEBAIEVORAogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0
YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lOwogICAgICAgICBteSAkYXR0ckV4dCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwotICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhDdXN0b21H
ZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifQotICAgICAgICAgICAgfHwgJGF0
dHJFeHQtPnsiVjhDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSkgeworICAgICAgICBp
ZiAoKCRhdHRyRXh0LT57IlY4Q3VzdG9tR2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tR2V0
dGVyIn0gfHwKKyAgICAgICAgICAgICAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9IHx8ICRhdHRyRXh0
LT57IkN1c3RvbSJ9KSAmJgorICAgICAgICAgICAgISRhdHRyRXh0LT57IkltcGxlbWVudGVkQnki
fSkgewogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJik7CiBFTkQKICAgICAgICAg
fQotICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSB8fCAkYXR0ckV4dC0+
eyJDdXN0b21TZXR0ZXIifQotICAgICAgICAgICAgfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSB8
fCAkYXR0ckV4dC0+eyJDdXN0b20ifSkgeworICAgICAgICBpZiAoKCRhdHRyRXh0LT57IlY4Q3Vz
dG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0gfHwKKyAgICAgICAgICAg
ICAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9IHx8ICRhdHRyRXh0LT57IkN1c3RvbSJ9KSAmJgorICAg
ICAgICAgICAgISRhdHRyRXh0LT57IkltcGxlbWVudGVkQnkifSkgewogICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgIHN0YXRpYyB2b2lkICR7bmFtZX1BY2Nlc3Nv
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4s
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mKTsKIEVORApAQCAtODc0LDggKzg3NiwxNiBAQCBFTkQK
IAogICAgIG15ICRnZXR0ZXJTdHJpbmc7CiAgICAgaWYgKCRnZXR0ZXJTdHJpbmdVc2VzSW1wKSB7
Ci0gICAgICAgICRnZXR0ZXJTdHJpbmcgPSAiaW1wLT4iIC4gJGNvZGVHZW5lcmF0b3ItPkdldHRl
ckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmli
dXRlKTsKLSAgICAgICAgJGdldHRlclN0cmluZyAuPSAiZWMiIGlmICR1c2VFeGNlcHRpb25zOwor
ICAgICAgICBteSAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0
ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJp
YnV0ZSk7CisgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5
ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50
ZWRCeSJ9OworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7aW1wbGVtZW50ZWRCeX0u
aCIpOworICAgICAgICAgICAgJGdldHRlclN0cmluZyA9ICIke2ltcGxlbWVudGVkQnl9Ojoke2dl
dHRlckV4cHJlc3Npb25QcmVmaXh9aW1wIjsKKyAgICAgICAgICAgICRnZXR0ZXJTdHJpbmcgLj0g
IiwgZWMiIGlmICR1c2VFeGNlcHRpb25zOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
JGdldHRlclN0cmluZyA9ICJpbXAtPiRnZXR0ZXJFeHByZXNzaW9uUHJlZml4IjsKKyAgICAgICAg
ICAgICRnZXR0ZXJTdHJpbmcgLj0gImVjIiBpZiAkdXNlRXhjZXB0aW9uczsKKyAgICAgICAgfQog
ICAgICAgICAkZ2V0dGVyU3RyaW5nIC49ICIpIjsKICAgICB9IGVsc2UgewogICAgICAgICAkZ2V0
dGVyU3RyaW5nID0gImltcEluc3RhbmNlIjsKQEAgLTg4NCwxNiArODk0LDE2IEBAIEVORAogICAg
IG15ICRyZXN1bHQ7CiAgICAgbXkgJHdyYXBwZXI7CiAKLSAgICAgICAgaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIgJiYgJGRhdGFOb2RlLT5uYW1lIGVx
ICJET01XaW5kb3ciKSB7CisgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAi
RXZlbnRMaXN0ZW5lciIgJiYgJGRhdGFOb2RlLT5uYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKCFpbXAtPmRvY3VtZW50KCkpXG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpO1xuIik7CiAgICAgfQogCiAgICAgaWYgKCR1c2VFeGNlcHRpb25z
KSB7CiAgICAgICAgIGlmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLykgewotICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVy
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJG5hdGl2ZVR5cGUsICJ2IiwgJGdldHRlclN0cmluZykg
LiAiO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICIgLiBD
b252ZXJ0VG9WOFBhcmFtZXRlcigkYXR0cmlidXRlLT5zaWduYXR1cmUsICRuYXRpdmVUeXBlLCAi
diIsICRnZXR0ZXJTdHJpbmcpIC4gIjtcbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUgdiA9ICRnZXR0ZXJTdHJp
bmc7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2
ZVR5cGUgdiA9ICRnZXR0ZXJTdHJpbmc7XG4iKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZVNldERPTUV4Y2VwdGlvbigiICAgICIpKTsKICAgICAg
ICAgJHJlc3VsdCA9ICJ2IjsKQEAgLTExMTYsNyArMTEyNiwxMyBAQCBFTkQKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG15ICRzZXR0ZXJFeHByZXNzaW9uUHJl
Zml4ID0gJGNvZGVHZW5lcmF0b3ItPlNldHRlckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVk
ZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgaW1wLT4kc2V0dGVyRXhwcmVzc2lvblByZWZpeCRyZXN1bHQiKTsK
KyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRC
eSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVu
dGVkQnkifTsKKyAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1lbnRl
ZEJ5fS5oIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAk
e2ltcGxlbWVudGVkQnl9Ojoke3NldHRlckV4cHJlc3Npb25QcmVmaXh9aW1wLCAkcmVzdWx0Iik7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgaW1wLT4kc2V0dGVyRXhwcmVzc2lvblByZWZpeCRyZXN1bHQiKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiLCBl
YyIpIGlmICR1c2VFeGNlcHRpb25zOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
KTtcbiIpOwpAQCAtMTg2OCw3ICsxODg0LDEyIEBAIHN1YiBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRB
dHRyaWJ1dGUKICAgICAgICAgIiI7CiAgICAgaWYgKCRjdXN0b21BY2Nlc3NvciBlcSAxKSB7CiAg
ICAgICAgICMgdXNlIHRoZSBuYW1pbmcgY29udmVuc2lvbiwgaW50ZXJmYWNlICsgKGNhcGl0YWxp
emUpIGF0dHIgbmFtZQotICAgICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFtZSAu
ICI6OiIgLiAkYXR0ck5hbWU7CisgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgICRjdXN0
b21BY2Nlc3NvciA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifSAuICI6OiIgLiAkYXR0ck5hbWU7CisgICAgICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiVjgiIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9IC4gIi5oIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFtZSAuICI6OiIgLiAkYXR0ck5hbWU7
CisgICAgICAgIH0KICAgICB9CiAKICAgICBteSAkZ2V0dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwKaW5kZXggNTdhMzky
ODNjM2Q4ZTUxMjdiODQ1MjFlN2E4M2FiNzljYTMzMjlkYS4uYmY0ZDcwMWNmZmY1MDI2OTlkZjU4
MGE0ZmNlZWU5ZDJmNWJkNjAwNSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCkBAIC0zMSw2ICszMSw3IEBACiB1c2Ugc3Ry
aWN0OwogCiB1c2UgRmlsZTo6UGF0aDsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBHZXRvcHQ6
Okxvbmc7CiB1c2UgQ3dkOwogCkBAIC00Nyw2ICs0OCw3IEBAIG15ICRwcmVmaXg7CiBteSAkcHJl
cHJvY2Vzc29yOwogbXkgJHdyaXRlRGVwZW5kZW5jaWVzOwogbXkgJHZlcmJvc2U7CitteSAkc3Vw
cGxlbWVudGFsRGVwZW5kZW5jeUZpbGU7CiAKIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+IFxA
aWRsRGlyZWN0b3JpZXMsCiAgICAgICAgICAgICdvdXRwdXREaXI9cycgPT4gXCRvdXRwdXREaXJl
Y3RvcnksCkBAIC01NywxMSArNTksMTIgQEAgR2V0T3B0aW9ucygnaW5jbHVkZT1zQCcgPT4gXEBp
ZGxEaXJlY3RvcmllcywKICAgICAgICAgICAgJ3ByZWZpeD1zJyA9PiBcJHByZWZpeCwKICAgICAg
ICAgICAgJ3ByZXByb2Nlc3Nvcj1zJyA9PiBcJHByZXByb2Nlc3NvciwKICAgICAgICAgICAgJ3Zl
cmJvc2UnID0+IFwkdmVyYm9zZSwKLSAgICAgICAgICAgJ3dyaXRlLWRlcGVuZGVuY2llcycgPT4g
XCR3cml0ZURlcGVuZGVuY2llcyk7CisgICAgICAgICAgICd3cml0ZS1kZXBlbmRlbmNpZXMnID0+
IFwkd3JpdGVEZXBlbmRlbmNpZXMsCisgICAgICAgICAgICdzdXBwbGVtZW50YWxEZXBlbmRlbmN5
RmlsZT1zJyA9PiBcJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlKTsKIAotbXkgJGlkbEZpbGUg
PSAkQVJHVlswXTsKK215ICR0YXJnZXRJZGxGaWxlID0gJEFSR1ZbMF07CiAKLWRpZSgnTXVzdCBz
cGVjaWZ5IGlucHV0IGZpbGUuJykgdW5sZXNzIGRlZmluZWQoJGlkbEZpbGUpOworZGllKCdNdXN0
IHNwZWNpZnkgaW5wdXQgZmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkdGFyZ2V0SWRsRmlsZSk7CiBk
aWUoJ011c3Qgc3BlY2lmeSBnZW5lcmF0b3InKSB1bmxlc3MgZGVmaW5lZCgkZ2VuZXJhdG9yKTsK
IGRpZSgnTXVzdCBzcGVjaWZ5IG91dHB1dCBkaXJlY3RvcnkuJykgdW5sZXNzIGRlZmluZWQoJG91
dHB1dERpcmVjdG9yeSk7CiBkaWUoJ011c3Qgc3BlY2lmeSBkZWZpbmVzJykgdW5sZXNzIGRlZmlu
ZWQoJGRlZmluZXMpOwpAQCAtNjksMTUgKzcyLDgxIEBAIGRpZSgnTXVzdCBzcGVjaWZ5IGRlZmlu
ZXMnKSB1bmxlc3MgZGVmaW5lZCgkZGVmaW5lcyk7CiBpZiAoISRvdXRwdXRIZWFkZXJzRGlyZWN0
b3J5KSB7CiAgICAgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnkgPSAkb3V0cHV0RGlyZWN0b3J5Owog
fQorJGRlZmluZXMgPX4gcy9eXHMrfFxzKyQvL2c7ICMgdHJpbSB3aGl0ZXNwYWNlCiskdGFyZ2V0
SWRsRmlsZSA9IEN3ZDo6cmVhbHBhdGgoJHRhcmdldElkbEZpbGUpOwogaWYgKCR2ZXJib3NlKSB7
Ci0gICAgcHJpbnQgIiRnZW5lcmF0b3I6ICRpZGxGaWxlXG4iOworICAgIHByaW50ICIkZ2VuZXJh
dG9yOiAkdGFyZ2V0SWRsRmlsZVxuIjsKIH0KLSRkZWZpbmVzID1+IHMvXlxzK3xccyskLy9nOyAj
IHRyaW0gd2hpdGVzcGFjZQorbXkgJHRhcmdldEludGVyZmFjZU5hbWUgPSBmaWxlcGFyc2UoYmFz
ZW5hbWUoJHRhcmdldElkbEZpbGUpLCAiLmlkbCIpOworCitteSAkaWRsRm91bmQgPSAwOworbXkg
QHN1cHBsZW1lbnRlZElkbEZpbGVzOworaWYgKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSkg
eworICAgICMgVGhlIGZvcm1hdCBvZiBhIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5IGZpbGU6Cisg
ICAgIworICAgICMgRE9NV2luZG93LmlkbCBQLmlkbCBRLmlkbCBSLmlkbAorICAgICMgRG9jdW1l
bnQuaWRsIFMuaWRsCisgICAgIyBFdmVudC5pZGwKKyAgICAjIC4uLgorICAgICMKKyAgICAjIFRo
ZSBhYm92ZSBpbmRpY2F0ZXMgdGhhdCBET01XaW5kb3cuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBQ
LmlkbCwgUS5pZGwgYW5kIFIuaWRsLAorICAgICMgRG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRl
ZCBieSBTLmlkbCwgYW5kIEV2ZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KKyAg
ICAjIFRoZSBJREwgdGhhdCBzdXBwbGVtZW50cyBhbm90aGVyIElETCAoZS5nLiBQLmlkbCkgbmV2
ZXIgYXBwZWFycyBpbiB0aGUgZGVwZW5kZW5jeSBmaWxlLgorICAgIG9wZW4gRkgsICI8ICRzdXBw
bGVtZW50YWxEZXBlbmRlbmN5RmlsZSIgb3IgZGllICJDYW5ub3Qgb3BlbiAkc3VwcGxlbWVudGFs
RGVwZW5kZW5jeUZpbGVcbiI7CisgICAgd2hpbGUgKG15ICRsaW5lID0gPEZIPikgeworICAgICAg
ICBteSAoJGlkbEZpbGUsIEBmb2xsb3dpbmdJZGxGaWxlcykgPSBzcGxpdCgvXHMrLywgJGxpbmUp
OworICAgICAgICBpZiAoJGlkbEZpbGUgYW5kICRpZGxGaWxlIGVxICR0YXJnZXRJZGxGaWxlKSB7
CisgICAgICAgICAgICAkaWRsRm91bmQgPSAxOworICAgICAgICAgICAgQHN1cHBsZW1lbnRlZElk
bEZpbGVzID0gQGZvbGxvd2luZ0lkbEZpbGVzOworICAgICAgICB9CisgICAgfQorICAgIGNsb3Nl
IEZIOworCisgICAgaWYgKCEkaWRsRm91bmQpIHsKKyAgICAgICAgaWYgKCR2ZXJib3NlKSB7Cisg
ICAgICAgICAgICBwcmludCAiJHRhcmdldElkbEZpbGUgaXMgc3VwcGxlbWVudGluZyBhbm90aGVy
IElETCBmaWxlLCBhbmQgdGh1cyAuaCBhbmQgLmNwcCBmb3IgJHRhcmdldElkbEZpbGUgYXJlIG5v
dCBnZW5lcmF0ZWQuXG4iOworICAgICAgICB9CisgICAgICAgIGV4aXQgMDsKKyAgICB9Cit9CisK
KyMgUGFyc2UgdGhlIHRhcmdldCBJREwgZmlsZS4KK215ICR0YXJnZXRQYXJzZXIgPSBJRExQYXJz
ZXItPm5ldyghJHZlcmJvc2UpOworbXkgJHRhcmdldERvY3VtZW50ID0gJHRhcmdldFBhcnNlci0+
UGFyc2UoJHRhcmdldElkbEZpbGUsICRkZWZpbmVzLCAkcHJlcHJvY2Vzc29yKTsKIAotIyBQYXJz
ZSB0aGUgZ2l2ZW4gSURMIGZpbGUuCi1teSAkcGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJi
b3NlKTsKLW15ICRkb2N1bWVudCA9ICRwYXJzZXItPlBhcnNlKCRpZGxGaWxlLCAkZGVmaW5lcywg
JHByZXByb2Nlc3Nvcik7Citmb3JlYWNoIG15ICRpZGxGaWxlIChAc3VwcGxlbWVudGVkSWRsRmls
ZXMpIHsKKyAgICBuZXh0IGlmICRpZGxGaWxlIGVxICR0YXJnZXRJZGxGaWxlOworCisgICAgbXkg
JGludGVyZmFjZU5hbWUgPSBmaWxlcGFyc2UoYmFzZW5hbWUoJGlkbEZpbGUpLCAiLmlkbCIpOwor
ICAgIG15ICRwYXJzZXIgPSBJRExQYXJzZXItPm5ldyghJHZlcmJvc2UpOworICAgIG15ICRkb2N1
bWVudCA9ICRwYXJzZXItPlBhcnNlKCRpZGxGaWxlLCAkZGVmaW5lcywgJHByZXByb2Nlc3Nvcik7
CisKKyAgICBmb3JlYWNoIG15ICRkYXRhTm9kZSAoQHskZG9jdW1lbnQtPmNsYXNzZXN9KSB7Cisg
ICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTdXBwbGVtZW50YWwi
fSBhbmQgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3VwcGxlbWVudGFsIn0gZXEg
JHRhcmdldEludGVyZmFjZU5hbWUpIHsKKyAgICAgICAgICAgIG15ICR0YXJnZXREYXRhTm9kZTsK
KyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNsYXNzIChAeyR0YXJnZXREb2N1bWVudC0+Y2xhc3Nl
c30pIHsKKyAgICAgICAgICAgICAgICBpZiAoJGNsYXNzLT5uYW1lIGVxICR0YXJnZXRJbnRlcmZh
Y2VOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICR0YXJnZXREYXRhTm9kZSA9ICRjbGFzczsK
KyAgICAgICAgICAgICAgICAgICAgbGFzdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBkaWUgIk5vdCBmb3VuZCBhbiBpbnRlcmZhY2UgJHt0YXJnZXRJbnRl
cmZhY2VOYW1lfSBpbiAke3RhcmdldEludGVyZmFjZU5hbWV9LmlkbC4iIHVubGVzcyBkZWZpbmVk
ICR0YXJnZXREYXRhTm9kZTsKKworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChA
eyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgICAgICAjIFJlY29yZCB0aGF0
IHRoaXMgYXR0cmlidXRlIGlzIGltcGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgorICAgICAg
ICAgICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Iklt
cGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lOworCisgICAgICAgICAgICAgICAgIyBBZGQg
aW50ZXJmYWNlLXdpZGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNoIGF0dHJpYnV0ZS4KKyAg
ICAgICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXsk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4
dCBpZiAoJGV4dGVuZGVkQXR0cmlidXRlTmFtZSBlcSAiU3VwcGxlbWVudGFsIik7CisgICAgICAg
ICAgICAgICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
JGV4dGVuZGVkQXR0cmlidXRlTmFtZX0gPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2RlLT5hdHRyaWJ1dGVzfSwgJGF0dHJpYnV0ZSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CiAKLSMgR2VuZXJhdGUgZGVzaXJlZCBv
dXRwdXQgZm9yIGdpdmVuIElETCBmaWxlLgorIyBHZW5lcmF0ZSBkZXNpcmVkIG91dHB1dCBmb3Ig
dGhlIHRhcmdldCBJREwgZmlsZS4KIG15ICRjb2RlR2VuID0gQ29kZUdlbmVyYXRvci0+bmV3KFxA
aWRsRGlyZWN0b3JpZXMsICRnZW5lcmF0b3IsICRvdXRwdXREaXJlY3RvcnksICRvdXRwdXRIZWFk
ZXJzRGlyZWN0b3J5LCAwLCAkcHJlcHJvY2Vzc29yLCAkd3JpdGVEZXBlbmRlbmNpZXMsICR2ZXJi
b3NlKTsKLSRjb2RlR2VuLT5Qcm9jZXNzRG9jdW1lbnQoJGRvY3VtZW50LCAkZGVmaW5lcyk7Cisk
Y29kZUdlbi0+UHJvY2Vzc0RvY3VtZW50KCR0YXJnZXREb2N1bWVudCwgJGRlZmluZXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9yZXNvbHZlLXN1cHBsZW1l
bnRhbC5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcmVzb2x2ZS1zdXBwbGVt
ZW50YWwucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFiMTkwZDUzMmZmZDBmYWY1ZjFkNmFmZmU4NzQzYTdhYTA4
OTNjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
cmVzb2x2ZS1zdXBwbGVtZW50YWwucGwKQEAgLTAsMCArMSw5MyBAQAorIyEvdXNyL2Jpbi9wZXJs
IC13CisjCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyMgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyMgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyMgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisjCisKK3VzZSBzdHJpY3Q7
CisKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBHZXRvcHQ6Okxvbmc7Cit1c2UgQ3dkOworCit1
c2UgSURMUGFyc2VyOworCitteSAkZGVmaW5lczsKK215ICRwcmVwcm9jZXNzb3I7CitteSAkdmVy
Ym9zZTsKK215ICRpZGxGaWxlc0xpc3Q7CitteSAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGU7
CisKK0dldE9wdGlvbnMoJ2RlZmluZXM9cycgPT4gXCRkZWZpbmVzLAorICAgICAgICAgICAncHJl
cHJvY2Vzc29yPXMnID0+IFwkcHJlcHJvY2Vzc29yLAorICAgICAgICAgICAndmVyYm9zZScgPT4g
XCR2ZXJib3NlLAorICAgICAgICAgICAnaWRsRmlsZXNMaXN0PXMnID0+IFwkaWRsRmlsZXNMaXN0
LAorICAgICAgICAgICAnc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGU9cycgPT4gXCRzdXBwbGVt
ZW50YWxEZXBlbmRlbmN5RmlsZSk7CisKK2RpZSgnTXVzdCBzcGVjaWZ5ICNkZWZpbmUgbWFjcm9z
IHVzaW5nIC0tZGVmaW5lcy4nKSB1bmxlc3MgZGVmaW5lZCgkZGVmaW5lcyk7CitkaWUoJ011c3Qg
c3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxl
LicpIHVubGVzcyBkZWZpbmVkKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSk7CitkaWUoJ011
c3Qgc3BlY2lmeSB0aGUgZmlsZSBsaXN0aW5nIGFsbCBJRExzIHVzaW5nIC0taWRsRmlsZXNMaXN0
LicpIHVubGVzcyBkZWZpbmVkKCRpZGxGaWxlc0xpc3QpOworCitpZiAoJHZlcmJvc2UpIHsKKyAg
ICBwcmludCAiUmVzb2x2aW5nIFtTdXBwbGVtZW50YWw9WFhYXSBkZXBlbmRlbmNpZXMgaW4gYWxs
IElETCBmaWxlcy5cbiI7Cit9CisKK29wZW4gRkgsICI8ICRpZGxGaWxlc0xpc3QiIG9yIGRpZSAi
Q2Fubm90IG9wZW4gJGlkbEZpbGVzTGlzdFxuIjsKK215IEBpZGxGaWxlcyA9IDxGSD47CitjaG9t
cChAaWRsRmlsZXMpOworY2xvc2UgRkg7CisKKyMgUGFyc2UgYWxsIElETCBmaWxlcy4KK215ICVk
b2N1bWVudHM7CitteSAlaW50ZXJmYWNlTmFtZVRvSWRsRmlsZTsKK2ZvcmVhY2ggbXkgJGlkbEZp
bGUgKEBpZGxGaWxlcykgeworICAgIG15ICRmdWxsUGF0aCA9IEN3ZDo6cmVhbHBhdGgoJGlkbEZp
bGUpOworICAgIG15ICRwYXJzZXIgPSBJRExQYXJzZXItPm5ldyghJHZlcmJvc2UpOworICAgICRk
b2N1bWVudHN7JGZ1bGxQYXRofSA9ICRwYXJzZXItPlBhcnNlKCRpZGxGaWxlLCAkZGVmaW5lcywg
JHByZXByb2Nlc3Nvcik7CisgICAgJGludGVyZmFjZU5hbWVUb0lkbEZpbGV7ZmlsZXBhcnNlKGJh
c2VuYW1lKCRpZGxGaWxlKSwgIi5pZGwiKX0gPSAkZnVsbFBhdGg7Cit9CisKKyMgUmVzb2x2ZXMg
W1N1cHBsZW1lbnRhbD1YWFhdIGRlcGVuZGVuY2llcy4KK215ICVzdXBwbGVtZW50YWxzOworZm9y
ZWFjaCBteSAkaWRsRmlsZSAoa2V5cyAlZG9jdW1lbnRzKSB7CisgICAgJHN1cHBsZW1lbnRhbHN7
JGlkbEZpbGV9ID0gW107CisgICAgZm9yZWFjaCBteSAkZGF0YU5vZGUgKEB7JGRvY3VtZW50c3sk
aWRsRmlsZX0tPmNsYXNzZXN9KSB7CisgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJTdXBwbGVtZW50YWwifSkgeworICAgICAgICAgICAgbXkgJHRhcmdldElkbEZp
bGUgPSAkaW50ZXJmYWNlTmFtZVRvSWRsRmlsZXskZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJTdXBwbGVtZW50YWwifX07CisgICAgICAgICAgICBwdXNoKEB7JHN1cHBsZW1lbnRhbHN7
JHRhcmdldElkbEZpbGV9fSwgJGlkbEZpbGUpOworICAgICAgICAgICAgIyBUcmVhdHMgYXMgaWYg
dGhpcyBJREwgZmlsZSBkb2VzIG5vdCBleGlzdC4KKyAgICAgICAgICAgIGRlbGV0ZSAkc3VwcGxl
bWVudGFsc3skaWRsRmlsZX07CisgICAgICAgIH0KKyAgICB9Cit9CisKKyMgT3V0cHV0cyB0aGUg
ZGVwZW5kZW5jeS4KKyMgVGhlIGZvcm1hdCBvZiBhIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5IGZp
bGU6CisjCisjIERPTVdpbmRvdy5pZGwgUC5pZGwgUS5pZGwgUi5pZGwKKyMgRG9jdW1lbnQuaWRs
IFMuaWRsCisjIEV2ZW50LmlkbAorIyAuLi4KKyMKKyMgVGhlIGFib3ZlIGluZGljYXRlcyB0aGF0
IERPTVdpbmRvdy5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IFAuaWRsLCBRLmlkbCBhbmQgUi5pZGws
CisjIERvY3VtZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgUy5pZGwsIGFuZCBFdmVudC5pZGwg
aXMgc3VwcGxlbWVudGVkIGJ5IG5vIElETHMuCisjIFRoZSBJREwgdGhhdCBzdXBwbGVtZW50cyBh
bm90aGVyIElETCAoZS5nLiBQLmlkbCkgbmV2ZXIgYXBwZWFycyBpbiB0aGUgZGVwZW5kZW5jeSBm
aWxlLgorb3BlbiBGSCwgIj4gJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlIiBvciBkaWUgIkNh
bm5vdCBvcGVuICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZVxuIjsKK2ZvcmVhY2ggbXkgJGlk
bEZpbGUgKHNvcnQga2V5cyAlc3VwcGxlbWVudGFscykgeworICAgIHByaW50IEZIICRpZGxGaWxl
LCAiIEB7JHN1cHBsZW1lbnRhbHN7JGlkbEZpbGV9fVxuIjsKK30KK2Nsb3NlIEZIOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdEludGVyZmFjZS5jcHAKaW5kZXggN2ZhNGFmMzUyOTI2N2JhNzJiMGE5NDEwMDc4
YjZmNTAwZDU3OWIzZC4uZjExNGY5MDQ4MjM5YzA5NzAzZmZiOTM3NmZiNDUxNzllOGE0MjUyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJE
T01UZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yNCw4ICsyNCwxMiBAQAogCiAj
aW5jbHVkZSAiV2ViRE9NVGVzdEludGVyZmFjZS5oIgogCisjaW5jbHVkZSAiS1VSTC5oIgogI2lu
Y2x1ZGUgIlRlc3RJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJUZXN0U3VwcGxlbWVudGFsLmgiCisj
aW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFuZGxlci5o
IgorI2luY2x1ZGUgInd0Zi90ZXh0L0F0b21pY1N0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTc0LDYgKzc4LDM0IEBAIFdlYkRP
TVRlc3RJbnRlcmZhY2U6On5XZWJET01UZXN0SW50ZXJmYWNlKCkKICAgICBtX2ltcGwgPSAwOwog
fQogCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCitXZWJE
T01TdHJpbmcgV2ViRE9NVGVzdEludGVyZmFjZTo6c3RyMSgpIGNvbnN0Cit7CisgICAgaWYgKCFp
bXBsKCkpCisgICAgICAgIHJldHVybiBXZWJET01TdHJpbmcoKTsKKworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBXVEY6OlN0cmluZyY+KFRlc3RTdXBwbGVtZW50YWw6OnN0cjEoaW1wbCgp
KSk7Cit9CisKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQorV2ViRE9NU3RyaW5nIFdlYkRPTVRlc3RJbnRlcmZhY2U6OnN0cjIoKSBjb25zdAor
eworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nKCk7CisKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV1RGOjpTdHJpbmcmPihUZXN0U3VwcGxlbWVudGFs
OjpzdHIyKGltcGwoKSkpOworfQorCit2b2lkIFdlYkRPTVRlc3RJbnRlcmZhY2U6OnNldFN0cjIo
Y29uc3QgV2ViRE9NU3RyaW5nJiBuZXdTdHIyKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdHIyKGltcGwoKSwgbmV3U3Ry
Mik7Cit9CisKKyNlbmRpZgogV2ViQ29yZTo6VGVzdEludGVyZmFjZSogdG9XZWJDb3JlKGNvbnN0
IFdlYkRPTVRlc3RJbnRlcmZhY2UmIHdyYXBwZXIpCiB7CiAgICAgcmV0dXJuIHdyYXBwZXIuaW1w
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaAppbmRleCA1ZGI1ZGI4YWUwOGU1YWVjYzky
YWNhZjdkNjcyMDZmOWI4ZDM3YzlmLi41YWEwM2M3OTUwOThjMjc0YWY2NzBjMzQ3MDUxODc4MmJi
MTZlMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaApAQCAtNDEsNiArNDEsMTMgQEAg
cHVibGljOgogICAgIFdlYkRPTVRlc3RJbnRlcmZhY2UmIG9wZXJhdG9yPShjb25zdCBXZWJET01U
ZXN0SW50ZXJmYWNlJik7CiAgICAgdmlydHVhbCB+V2ViRE9NVGVzdEludGVyZmFjZSgpOwogCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgV2ViRE9N
U3RyaW5nIHN0cjEoKSBjb25zdDsKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQorICAgIFdlYkRPTVN0cmluZyBzdHIyKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRTdHIyKGNvbnN0IFdlYkRPTVN0cmluZyYpOworI2VuZGlmCiAKICAgICBXZWJDb3Jl
OjpUZXN0SW50ZXJmYWNlKiBpbXBsKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEludGVyZmFjZS5jcHAKaW5kZXggNzA4NmM4MGFmZTY3MWE0MjdjYjZhZTk4YzJiMWQx
NzA5NjM1MTQ5YS4uNWY4ZmFmZWQzMTYyNWJkMmFjMGRhNmQxYTQ2ZmZkNjI4OWY0NzFjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiVGVzdEludGVyZmFjZS5oIgorI2luY2x1ZGUgIlRlc3RT
dXBwbGVtZW50YWwuaCIKICNpbmNsdWRlICJXZWJLaXRET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
Z29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERP
TVRlc3RJbnRlcmZhY2UuaCIKQEAgLTUxLDYgKzUyLDQ3IEBAIFdlYktpdERPTVRlc3RJbnRlcmZh
Y2UqIGtpdChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBvYmopCiAgICAgCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQgLy8KIAorZ2NoYXIqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIx
KFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpCit7CisjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwg
MCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNv
cmU6OlRlc3RJbnRlcmZhY2UgKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdjaGFy
KiByZXMgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN0cjEoaXRlbSkp
OworICAgIHJldHVybiByZXM7CisjZWxzZQorICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLworfQorCitnY2hhcioK
K3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjIoV2ViS2l0RE9NVGVzdEludGVyZmFj
ZSogc2VsZikKK3sKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSAqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2NoYXIqIHJlcyA9IGNvbnZlcnRUb1VURjhT
dHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6c3RyMihpdGVtKSk7CisgICAgcmV0dXJuIHJlczsKKyNl
bHNlCisgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpICovCit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZh
Y2Vfc2V0X3N0cjIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiwgY29uc3QgZ2NoYXIqIHZh
bHVlKQoreworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UgKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOworICAgIFdURjo6U3Ry
aW5nIGNvbnZlcnRlZF92YWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7CisgICAg
VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3RyMihpdGVtLCBjb252ZXJ0ZWRfdmFsdWUpOworI2VuZGlm
IC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLworfQorCiAK
IEdfREVGSU5FX1RZUEUoV2ViS2l0RE9NVGVzdEludGVyZmFjZSwgd2Via2l0X2RvbV90ZXN0X2lu
dGVyZmFjZSwgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkKIApAQCAtNjksNiArMTExLDEyIEBAIFdl
YkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmUoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogcmVxdWVz
dCkKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogZW51bSB7CiAgICAgUFJPUF8wLAorI2lmIEVOQUJM
RShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIFBST1BfU1RSMSwKKyNl
bmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KKyNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICBQUk9QX1NU
UjIsCisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
ICovCiB9OwogCiAKQEAgLTkxLDcgKzEzOSwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
c3RfaW50ZXJmYWNlX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCiB7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYktpdERPTVRlc3RJ
bnRlcmZhY2UqIHNlbGYgPSBXRUJLSVRfRE9NX1RFU1RfSU5URVJGQUNFKG9iamVjdCk7CisgICAg
V2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29yZVNlbGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAg
ICAgc3dpdGNoIChwcm9wX2lkKSB7CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCisgICAgY2FzZSBQUk9QX1NUUjI6CisgICAgeworICAgICAgICBUZXN0U3Vw
cGxlbWVudGFsOjpzZXRTdHIyKGNvcmVTZWxmLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgoZ192YWx1
ZV9nZXRfc3RyaW5nKHZhbHVlKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYgLyog
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCiAgICAgZGVmYXVs
dDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTEwMiw3ICsxNTksMjMgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfcHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wX2kKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vf
Z2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcHNwZWMpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYgPSBXRUJLSVRfRE9N
X1RFU1RfSU5URVJGQUNFKG9iamVjdCk7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29y
ZVNlbGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgc3dpdGNoIChwcm9wX2lkKSB7CisjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgY2FzZSBQUk9Q
X1NUUjE6CisgICAgeworICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0
VG9VVEY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN0cjEoY29yZVNlbGYpKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikgKi8KKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRp
b24xMikKKyAgICBjYXNlIFBST1BfU1RSMjoKKyAgICB7CisgICAgICAgIGdfdmFsdWVfdGFrZV9z
dHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6c3RyMihj
b3JlU2VsZikpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmIC8qIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVj
KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMjUsNiArMTk4LDI0IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2VfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0SW50ZXJmYWNlQ2xh
c3MqIHJlCiAgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3Rf
aW50ZXJmYWNlX2dldF9wcm9wZXJ0eTsKICAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0g
d2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9jb25zdHJ1Y3RlZDsKIAorI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJPUF9TVFIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19w
YXJhbV9zcGVjX3N0cmluZygic3RyMSIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RfaW50ZXJmYWNlX3N0
cjEiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZC1vbmx5ICBnY2hhciogVGVzdElu
dGVyZmFjZS5zdHIxIiwgLyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBz
dHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIiLCAvKiBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJM
RSkpOworI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KSAqLworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9TVFIyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygic3RyMiIsIC8qIG5hbWUgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInRlc3RfaW50ZXJmYWNlX3N0cjIiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVh
ZC13cml0ZSAgZ2NoYXIqIFRlc3RJbnRlcmZhY2Uuc3RyMiIsIC8qIGxvbmdlciAtIGNvdWxkIGRv
IHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwgLyogZGVmYXVsdCAqLwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCiAKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEludGVyZmFjZS5oCmluZGV4IGY5YWY4NjZhYTAxZjhkY2UyMzQ5MzM4MzNmMGFhYmNi
N2EyZDJhNGQuLjdjMzY1MDU4YjliODQ0MTJiZWI3YmRiYzc1OGQ3MDU1YzQwZWFjZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmgKQEAgLTQ2LDYgKzQ2LDM3IEBA
IHN0cnVjdCBfV2ViS2l0RE9NVGVzdEludGVyZmFjZUNsYXNzIHsKIFdFQktJVF9BUEkgR1R5cGUK
IHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3R5cGUgKHZvaWQpOwogCisvKioKKyAqIHdl
YmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjE6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9N
VGVzdEludGVyZmFjZQorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGdjaGFy
Kgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfc3RyMShXZWJLaXRET01UZXN0SW50ZXJm
YWNlKiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIy
OgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RJbnRlcmZhY2UKKyAqCisgKiBSZXR1cm5zOgor
ICoKKyoqLworV0VCS0lUX0FQSSBnY2hhcioKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0
X3N0cjIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZik7CisKKy8qKgorICogd2Via2l0X2Rv
bV90ZXN0X2ludGVyZmFjZV9zZXRfc3RyMjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0SW50
ZXJmYWNlCisgKiBAdmFsdWU6IEEgI2djaGFyCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfc3RyMihXZWJLaXRE
T01UZXN0SW50ZXJmYWNlKiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOworCiBHX0VORF9ERUNM
UwogCiAjZW5kaWYgLyogV2ViS2l0RE9NVGVzdEludGVyZmFjZV9oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCmluZGV4IDg1ZDgxMDBlMjc3ZjViMDMwM2YxNDRhZmRkYjNlZThiNGJmNGI2YTQuLmE5
NmM4MzYxYzYzNTQ2ZGU5NjNiMjA3OGI4NjE2ZjNhOTE5MDdlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCkBAIC0yNiwxMCArMjYsMTcgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU1Rlc3RTdXBwbGVtZW50YWwu
aCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRh
bC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2VuZGlmCisKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDEyICs1Nywy
MSBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTVGVzdEludGVyZmFjZSk7CiAKIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VUYWJsZVZhbHVlc1tdID0KIHsK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICB7ICJz
dHIxIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZVN0cjEpLCAoaW50cHRyX3QpMCBU
SFVOS19HRU5FUkFUT1IoMCkgSU5UUklOU0lDKERGRzo6Tm9JbnRyaW5zaWMpIH0sCisjZW5kaWYK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICB7ICJz
dHIyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VTdHIyKSwgKGludHB0cl90KXNldEpTVGVzdEludGVy
ZmFjZVN0cjIgVEhVTktfR0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9
LAorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
CisgICAgeyAic3RyMyIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlU3RyMyksIChpbnRwdHJfdClzZXRK
U1Rlc3RJbnRlcmZhY2VTdHIzIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZHOjpOb0lu
dHJpbnNpYykgfSwKKyNlbmRpZgogICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0gfCBSZWFk
T25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRPUigw
KSBJTlRSSU5TSUMoREZHOjpOb0ludHJpbnNpYykgfSwKICAgICB7IDAsIDAsIDAsIDAgVEhVTktf
R0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9CiB9OwogCiAjdW5kZWYg
VEhVTktfR0VORVJBVE9SCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEludGVyZmFjZVRh
YmxlID0geyAyLCAxLCBKU1Rlc3RJbnRlcmZhY2VUYWJsZVZhbHVlcywgMCB9Oworc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3RJbnRlcmZhY2VUYWJsZSA9IHsgOCwgNywgSlNUZXN0SW50ZXJm
YWNlVGFibGVWYWx1ZXMsIDAgfTsKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAj
aWYgRU5BQkxFKEpJVCkKICNkZWZpbmUgVEhVTktfR0VORVJBVE9SKGdlbmVyYXRvcikgLCBnZW5l
cmF0b3IKQEAgLTE4NywxMiArMjAzLDcwIEBAIGJvb2wgSlNUZXN0SW50ZXJmYWNlOjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjCiAgICAg
cmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RJbnRlcmZhY2UsIEJhc2U+KGV4
ZWMsICZKU1Rlc3RJbnRlcmZhY2VUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTsKIH0KIAorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQorSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCit7CisgICAgSlNUZXN0SW50ZXJmYWNlKiBj
YXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgVGVzdEludGVyZmFjZSogaW1wID0g
c3RhdGljX2Nhc3Q8VGVzdEludGVyZmFjZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBUZXN0U3VwcGxlbWVudGFsOjpzdHIxKGltcCkp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCitKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN0cjIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK3sK
KyAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRl
cmZhY2UqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAg
ICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0SW50ZXJmYWNlKj4oY2FzdGVk
VGhpcy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIFRlc3RT
dXBwbGVtZW50YWw6OnN0cjIoaW1wKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlm
CisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKK0pTVmFs
dWUganNUZXN0SW50ZXJmYWNlU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImKQoreworICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9
IHN0YXRpY19jYXN0PEpTVGVzdEludGVyZmFjZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAg
cmV0dXJuIEpTVGVzdFN1cHBsZW1lbnRhbDo6c3RyMyhjYXN0ZWRUaGlzLCBleGVjKTsKK30KKwor
I2VuZGlmCisKIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKIHsKICAgICBKU1Rlc3RJ
bnRlcmZhY2UqIGRvbU9iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdEludGVyZmFjZSo+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSk7CiAgICAgcmV0dXJuIEpTVGVzdEludGVyZmFjZTo6Z2V0Q29uc3RydWN0
b3IoZXhlYywgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7CiB9CiAKK3ZvaWQgSlNUZXN0SW50
ZXJmYWNlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
eworICAgIEpTVGVzdEludGVyZmFjZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZz
X2luZm8pOworICAgIGxvb2t1cFB1dDxKU1Rlc3RJbnRlcmZhY2UsIEJhc2U+KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsICZKU1Rlc3RJbnRlcmZhY2VUYWJsZSwgdGhpc09iamVjdCwgc2xvdCk7
Cit9CisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKK3Zv
aWQgc2V0SlNUZXN0SW50ZXJmYWNlU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhp
cyA9IHN0YXRpY19jYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNPYmplY3QpOworICAgIFRlc3RJ
bnRlcmZhY2UqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RJbnRlcmZhY2UqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpOworICAgIFRlc3RTdXBwbGVtZW50YWw6OnNldFN0cjIoaW1wLCB1c3RyaW5nVG9TdHJp
bmcodmFsdWUuaXNFbXB0eSgpID8gVVN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYykpKTsK
K30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRp
b24xMikKK3ZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEpTVGVzdFN1cHBsZW1lbnRh
bDo6c2V0U3RyMyhzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzT2JqZWN0KSwgZXhl
YywgdmFsdWUpOworfQorCisjZW5kaWYKKwogSlNWYWx1ZSBKU1Rlc3RJbnRlcmZhY2U6OmdldENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3I+KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmgKaW5kZXggYmMyYjA2N2FkM2EwZmM3YjFmYThmMWY3YmRhOTcyNWQx
YTFkODIwMy4uNWU1ZDM1NzE2NTc2YmUzMDE5YTkzMjdkN2ZmZjI2ZTZmYTM5YjJlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwq
LCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCkBAIC0xMzQsNiArMTM1LDExIEBAIHByb3RlY3RlZDoKIAogLy8gQXR0cmlidXRlcwog
CitKU0M6OkpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3RyMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0SW50
ZXJmYWNlU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdEludGVyZmFjZVN0cjIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VTdHIzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImKTsKK3ZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50
aWZpZXImKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5o
CmluZGV4IGRiN2JlMjhjYjlhZDQwOGNkNTJkODhmNzBiMTg4ZGRkODM4MjVmOTIuLjIzNDI1OWI0
NTQwOWNhMzNlNmE3MjJkOTI3MzEwYTg2YjU1NTQzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNl
LmgKQEAgLTI4LDcgKzI4LDIwIEBACiAKICNpZiBXRUJLSVRfVkVSU0lPTl9NQVhfQUxMT1dFRCA+
PSBXRUJLSVRfVkVSU0lPTl9MQVRFU1QKIAorQGNsYXNzIE5TU3RyaW5nOworCiBAaW50ZXJmYWNl
IERPTVRlc3RJbnRlcmZhY2UgOiBET01PYmplY3QKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKKy0gKE5TU3RyaW5nICopc3RyMTsKKyNlbmRpZgorI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorLSAoTlNTdHJpbmcgKilz
dHIyOworLSAodm9pZClzZXRTdHIyOihOU1N0cmluZyAqKW5ld1N0cjI7CisjZW5kaWYKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKy0gKE5TU3RyaW5nICop
c3RyMzsKKy0gKHZvaWQpc2V0U3RyMzooTlNTdHJpbmcgKiluZXdTdHIzOworI2VuZGlmCiBAZW5k
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KaW5kZXggYWI1OTMzMzBjODcyMGNh
ZThlMWZiYzRhMWJmMTM0NDNjNThiOTBlOC4uZjQ2OWNmMTBhZjg0ZjViOWIxYTJjNjk4YjEzMjEx
Yzc5NzkwZTE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCkBAIC00MSw3ICs0MSw5IEBA
CiAjaW1wb3J0ICJET01UZXN0SW50ZXJmYWNlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlv
bkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbXBvcnQg
IktVUkwuaCIKICNpbXBvcnQgIlRlc3RJbnRlcmZhY2UuaCIKKyNpbXBvcnQgIlRlc3RTdXBwbGVt
ZW50YWwuaCIKICNpbXBvcnQgIlRocmVhZENoZWNrLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4
dHJhcy5oIgogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgpAQCAtNjgsNiArNzAs
NDIgQEAKICAgICBbc3VwZXIgZmluYWxpemVdOwogfQogCisjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChOU1N0cmluZyAqKXN0cjEKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIFRlc3RTdXBwbGVt
ZW50YWw6OnN0cjEoSU1QTCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQorLSAoTlNTdHJpbmcgKilzdHIyCit7CisgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBUZXN0U3VwcGxlbWVu
dGFsOjpzdHIyKElNUEwpOworfQorCistICh2b2lkKXNldFN0cjI6KE5TU3RyaW5nICopbmV3U3Ry
MgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBUZXN0
U3VwcGxlbWVudGFsOjpzZXRTdHIyKElNUEwsIG5ld1N0cjIpOworfQorI2VuZGlmCisKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKy0gKE5TU3RyaW5nICop
c3RyMworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBy
ZXR1cm4gVGVzdFN1cHBsZW1lbnRhbDo6c3RyMyhJTVBMKTsKK30KKworLSAodm9pZClzZXRTdHIz
OihOU1N0cmluZyAqKW5ld1N0cjMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3RyMyhJTVBMLCBuZXdTdHIzKTsK
K30KKyNlbmRpZgorCiBAZW5kCiAKIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmUoRE9NVGVz
dEludGVyZmFjZSAqd3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFsLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFsLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjZmZGQ1
MWE4ZDZlNzhjZjMzMjBlYWVlZjE4NmI5Y2ZiMjZmZjMyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsCkBA
IC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFc3RyQXJnLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBJREwgZmlsZSBpcyBmb3IgdGVzdGlu
ZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3IgYW5kIGZvciB0cmFja2luZworLy8gY2hhbmdl
cyBpbiBpdHMgb3VwdXQuCittb2R1bGUgdGVzdCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
Q29uZGl0aW9uYWw9Q29uZGl0aW9uMTF8Q29uZGl0aW9uMTIsCisgICAgICAgIFN1cHBsZW1lbnRh
bD1UZXN0SW50ZXJmYWNlCisgICAgXSBUZXN0U3VwcGxlbWVudGFsIHsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBzdHIxOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHN0cjI7CisgICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXJdIERP
TVN0cmluZyBzdHIzOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDViNDVh
NmRmMzNjMTY5MmEzYWY3ZDQ1MDU3NjUzMmVjMWE4NmQzZDkuLjU2OWJlOThhNzBmNTFiOTM4YTBl
MzdiYmJlNDhiNWI5OTY2ZmE1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yNSwxMiAr
MjUsMTQgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUg
IlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAi
VjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhU
ZXN0U3VwcGxlbWVudGFsLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQxLDggKzQzLDU4IEBAIG5hbWVzcGFjZSBUZXN0SW50ZXJmYWNl
SW50ZXJuYWwgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHIxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0SW50ZXJmYWNlLnN0cjEuX2dldCIpOworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9
IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4
U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN0cjEoaW1wKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZh
Y2Uuc3RyMi5fZ2V0Iik7CisgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNl
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoVGVzdFN1cHBs
ZW1lbnRhbDo6c3RyMihpbXApKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCisKK3N0YXRpYyB2b2lkIHN0cjJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN0
cjIuX3NldCIpOworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElP
Tl9CTE9DS19WT0lEKFY4UGFyYW1ldGVyPD4sIHYsIHZhbHVlKTsKKyAgICBUZXN0U3VwcGxlbWVu
dGFsOjpzZXRTdHIyKGltcCwgdik7CisgICAgcmV0dXJuOworfQorCisjZW5kaWYgLy8gRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIH0gLy8gbmFtZXNwYWNlIFRl
c3RJbnRlcmZhY2VJbnRlcm5hbAogCitzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0
SW50ZXJmYWNlQXR0cnNbXSA9IHsKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKKyAgICAvLyBBdHRyaWJ1dGUgJ3N0cjEnIChUeXBlOiAncmVhZG9ubHkgYXR0
cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCisgICAgeyJzdHIx
IiwgVGVzdEludGVyZmFjZUludGVybmFsOjpzdHIxQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgLy8g
QXR0cmlidXRlICdzdHIyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFs
IEltcGxlbWVudGVkQnknKQorICAgIHsic3RyMiIsIFRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3Ry
MkF0dHJHZXR0ZXIsIFRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3RyMkF0dHJTZXR0ZXIsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQor
ICAgIC8vIEF0dHJpYnV0ZSAnc3RyMycgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDdXN0
b21TZXR0ZXIgQ3VzdG9tR2V0dGVyIENvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQorICAgIHsi
c3RyMyIsIFY4VGVzdFN1cHBsZW1lbnRhbDo6c3RyM0FjY2Vzc29yR2V0dGVyLCBWOFRlc3RTdXBw
bGVtZW50YWw6OnN0cjNBY2Nlc3NvclNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYgLy8g
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCit9OworCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFj
ZS5Db25zdHJ1Y3RvciIpOwpAQCAtODEsNyArMTMzLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2
ODoKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAg
IGRlZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEludGVyZmFj
ZSIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RJbnRlcmZh
Y2U6OmludGVybmFsRmllbGRDb3VudCwKLSAgICAgICAgMCwgMCwKKyAgICAgICAgVGVzdEludGVy
ZmFjZUF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RJbnRlcmZhY2VBdHRycyksCiAgICAgICAg
IDAsIDApOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBj
YXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRl
c3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDlkM2U0YWJkY2I1MjkxYjIxMWQ5YjUxMWRl
MDBjY2U4ZjFiMGI5MTAuLjJlYTM5MzI4MDRiZjUyYzdhYTJmY2M3ZDY1N2Y1Mjg0OTg5MjE3NmYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxMS0xMS0yOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgSW1wbGVtZW50IFtTdXBwbGVtZW50YWxdIElETCBhbmQgc3VwcG9ydCBp
dCBpbiBydW4tYmluZGluZ3MtdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
KworICAgICAgICBydW4tYmluZGluZ3MtdGVzdHMgc3VwcG9ydHMgdGhlIFtTdXBwbGVtZW50YWxd
IElETCBpbiB0aGUgZm9sbG93aW5nIHdheS4KKyAgICAgICAgICAgICgxKSBJdCBjcmVhdGVzIGEg
ZmlsZSB8eHwgbGlzdGluZyBhbGwgSURMIGZpbGVzLgorICAgICAgICAgICAgKDIpIEl0IGdlbmVy
YXRlcyBhIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5IGZpbGUgfHl8IHVzaW5nIHJlc29sdmUtc3Vw
cGxlbWVudGFsLnBsIGFuZCB8eHwuCisgICAgICAgICAgICAoMykgRm9yIGVhY2ggSURMIGZpbGUg
fHp8LCBpdCBydW5zIGdlbmVyYXRlLWJpbmRpbmdzLnBsIHdpdGggfHl8LgorICAgICAgICAgICAg
ICAgIFRoZW4sIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyAuaCBhbmQgLmNwcCBmaWxl
cyBmb3IgdGhlIElETCBmaWxlIHx6fCwKKyAgICAgICAgICAgICAgICBpbmNsdWRpbmcgYWxsIGF0
dHJpYnV0ZXMgaW4gSURMIGZpbGVzIHRoYXQgYXJlIHN1cHBsZW1lbnRpbmcgdGhlIElETCBmaWxl
IHx6fC4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzOgorICAgICAgICAo
Z2VuZXJhdGVfZnJvbV9pZGwpOgorICAgICAgICAoZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVu
ZGVuY3kpOgorICAgICAgICAoZGV0ZWN0X2NoYW5nZXMpOgorICAgICAgICAocnVuX3Rlc3RzKToK
KyAgICAgICAgKG1haW4pOgorCiAyMDExLTExLTI5ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgTGlzdCBvZiBidWlsZGVycyBpbiB0aGUgZmxha2luZXNzIGRhc2hi
b2FyZCBpcyBvdXQgb2YgZGF0ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tYmluZGlu
Z3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0cwppbmRleCA5YmU3YjQx
ZTY5YTIzMTRlMGI0YzE2YjBhZmE2MTA0MDdiZTZjMDMyLi4xNzQ3ZWI1NDhkOTU1YmI3MTM0YzZm
M2EyODI2MjcwMjlkZjZkODVhIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1iaW5kaW5n
cy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0cwpAQCAtMzgsNyAr
MzgsNyBAQCBpbXBvcnQgdGVtcGZpbGUKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNj
bS5kZXRlY3Rpb24gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCiAKIAotZGVmIGdlbmVyYXRlX2Zy
b21faWRsKGdlbmVyYXRvciwgaWRsX2ZpbGUsIG91dHB1dF9kaXJlY3RvcnkpOgorZGVmIGdlbmVy
YXRlX2Zyb21faWRsKGdlbmVyYXRvciwgaWRsX2ZpbGUsIG91dHB1dF9kaXJlY3RvcnksIHN1cHBs
ZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUpOgogICAgIGNtZCA9IFsncGVybCcsICctdycsCiAgICAg
ICAgICAgICctSVdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cycsCiAgICAgICAgICAgICdXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwnLApAQCAtNDcsNiArNDcsNyBA
QCBkZWYgZ2VuZXJhdGVfZnJvbV9pZGwoZ2VuZXJhdG9yLCBpZGxfZmlsZSwgb3V0cHV0X2RpcmVj
dG9yeSk6CiAgICAgICAgICAgICctLWRlZmluZXMnLCAnVEVTVElOR18lcycgJSBnZW5lcmF0b3Is
CiAgICAgICAgICAgICctLWdlbmVyYXRvcicsIGdlbmVyYXRvciwKICAgICAgICAgICAgJy0tb3V0
cHV0RGlyJywgb3V0cHV0X2RpcmVjdG9yeSwKKyAgICAgICAgICAgJy0tc3VwcGxlbWVudGFsRGVw
ZW5kZW5jeUZpbGUnLCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLAogICAgICAgICAgICBp
ZGxfZmlsZV0KIAogICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0ID0g
c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnIgPSBzdWJwcm9jZXNzLlNURE9VVCkKQEAgLTU3LDYgKzU4
LDMxIEBAIGRlZiBnZW5lcmF0ZV9mcm9tX2lkbChnZW5lcmF0b3IsIGlkbF9maWxlLCBvdXRwdXRf
ZGlyZWN0b3J5KToKICAgICByZXR1cm4gZXhpdF9jb2RlCiAKIAorZGVmIGdlbmVyYXRlX3N1cHBs
ZW1lbnRhbF9kZXBlbmRlbmN5KGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVu
Y3lfZmlsZSk6CisgICAgaWRsX2ZpbGVzX2xpc3QgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICBm
b3IgaW5wdXRfZmlsZSBpbiBvcy5saXN0ZGlyKGlucHV0X2RpcmVjdG9yeSk6CisgICAgICAgIChu
YW1lLCBleHRlbnNpb24pID0gb3MucGF0aC5zcGxpdGV4dChpbnB1dF9maWxlKQorICAgICAgICBp
ZiBleHRlbnNpb24gIT0gJy5pZGwnOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgb3Mu
d3JpdGUoaWRsX2ZpbGVzX2xpc3RbMF0sIG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksIGlu
cHV0X2ZpbGUpICsgIlxuIikKKyAgICBvcy5jbG9zZShpZGxfZmlsZXNfbGlzdFswXSkKKworICAg
IGNtZCA9IFsncGVybCcsICctdycsCisgICAgICAgICAgICctSVdlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cycsCisgICAgICAgICAgICdXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcmVzb2x2ZS1zdXBw
bGVtZW50YWwucGwnLAorICAgICAgICAgICAnLS1pZGxGaWxlc0xpc3QnLCBpZGxfZmlsZXNfbGlz
dFsxXSwKKyAgICAgICAgICAgJy0tZGVmaW5lcycsICcnLAorICAgICAgICAgICAnLS1zdXBwbGVt
ZW50YWxEZXBlbmRlbmN5RmlsZScsIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGVdCisgICAg
cHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQgPSBzdWJwcm9jZXNzLlBJUEUs
IHN0ZGVyciA9IHN1YnByb2Nlc3MuU1RET1VUKQorICAgIGV4aXRfY29kZSA9IHByb2Nlc3Mud2Fp
dCgpCisgICAgb3V0cHV0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpWzBdCisgICAgaWYgb3V0cHV0
OgorICAgICAgICBwcmludCBvdXRwdXQKKworICAgIG9zLnJlbW92ZShpZGxfZmlsZXNfbGlzdFsx
XSkKKyAgICByZXR1cm4gZXhpdF9jb2RlCisKKwogZGVmIGRldGVjdF9jaGFuZ2VzKGdlbmVyYXRv
ciwgd29ya19kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3RvcnkpOgogICAgIGNoYW5nZXNfZm91
bmQgPSBGYWxzZQogICAgIGZvciBvdXRwdXRfZmlsZSBpbiBvcy5saXN0ZGlyKHdvcmtfZGlyZWN0
b3J5KToKQEAgLTc5LDcgKzEwNSw3IEBAIGRlZiBkZXRlY3RfY2hhbmdlcyhnZW5lcmF0b3IsIHdv
cmtfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKICAgICByZXR1cm4gY2hhbmdlc19m
b3VuZAogCiAKLWRlZiBydW5fdGVzdHMoZ2VuZXJhdG9yLCBpbnB1dF9kaXJlY3RvcnksIHJlZmVy
ZW5jZV9kaXJlY3RvcnksIHJlc2V0X3Jlc3VsdHMpOgorZGVmIHJ1bl90ZXN0cyhnZW5lcmF0b3Is
IGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSwgcmVzZXRfcmVzdWx0cywgc3Vw
cGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSk6CiAgICAgd29ya19kaXJlY3RvcnkgPSByZWZlcmVu
Y2VfZGlyZWN0b3J5CiAKICAgICBwYXNzZWQgPSBUcnVlCkBAIC05NCw3ICsxMjAsOCBAQCBkZWYg
cnVuX3Rlc3RzKGdlbmVyYXRvciwgaW5wdXRfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5
LCByZXNldF9yZXN1bHRzKToKIAogICAgICAgICBpZiBnZW5lcmF0ZV9mcm9tX2lkbChnZW5lcmF0
b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihpbnB1dF9kaXJl
Y3RvcnksIGlucHV0X2ZpbGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrX2Rp
cmVjdG9yeSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtfZGlyZWN0b3J5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxl
KToKICAgICAgICAgICAgIHBhc3NlZCA9IEZhbHNlCiAKICAgICAgICAgaWYgcmVzZXRfcmVzdWx0
czoKQEAgLTEzMiwxMiArMTU5LDIwIEBAIGRlZiBtYWluKGFyZ3YpOgogICAgICAgICAnQ1BQJwog
ICAgIF0KIAorICAgIGlucHV0X2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbignV2ViQ29yZScsICdi
aW5kaW5ncycsICdzY3JpcHRzJywgJ3Rlc3QnKQorICAgIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5
X2ZpbGUgPSB0ZW1wZmlsZS5ta3N0ZW1wKClbMV0KKyAgICBpZiBnZW5lcmF0ZV9zdXBwbGVtZW50
YWxfZGVwZW5kZW5jeShpbnB1dF9kaXJlY3RvcnksIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2Zp
bGUpOgorICAgICAgICBwcmludCAnRmFpbGVkIHRvIGdlbmVyYXRlIGEgc3VwcGxlbWVudGFsIGRl
cGVuZGVuY3kgZmlsZS4nCisgICAgICAgIG9zLnJlbW92ZShzdXBwbGVtZW50YWxfZGVwZW5kZW5j
eV9maWxlKQorICAgICAgICByZXR1cm4gLTEKKwogICAgIGZvciBnZW5lcmF0b3IgaW4gZ2VuZXJh
dG9yczoKICAgICAgICAgaW5wdXRfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKCdXZWJDb3JlJywg
J2JpbmRpbmdzJywgJ3NjcmlwdHMnLCAndGVzdCcpCiAgICAgICAgIHJlZmVyZW5jZV9kaXJlY3Rv
cnkgPSBvcy5wYXRoLmpvaW4oJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnc2NyaXB0cycsICd0ZXN0
JywgZ2VuZXJhdG9yKQotICAgICAgICBpZiBub3QgcnVuX3Rlc3RzKGdlbmVyYXRvciwgaW5wdXRf
ZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5LCByZXNldF9yZXN1bHRzKToKKyAgICAgICAg
aWYgbm90IHJ1bl90ZXN0cyhnZW5lcmF0b3IsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2Rp
cmVjdG9yeSwgcmVzZXRfcmVzdWx0cywgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSk6CiAg
ICAgICAgICAgICBhbGxfdGVzdHNfcGFzc2VkID0gRmFsc2UKIAorICAgIG9zLnJlbW92ZShzdXBw
bGVtZW50YWxfZGVwZW5kZW5jeV9maWxlKQogICAgIHByaW50ICcnCiAgICAgaWYgYWxsX3Rlc3Rz
X3Bhc3NlZDoKICAgICAgICAgcHJpbnQgJ0FsbCB0ZXN0cyBQQVNTIScK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117098</attachid>
            <date>2011-11-29 18:55:26 -0800</date>
            <delta_ts>2011-11-29 18:55:26 -0800</delta_ts>
            <desc>Test: Ignore this patch</desc>
            <filename>bug-73162-20111130115525.patch</filename>
            <type>text/plain</type>
            <size>1497</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA3MWYyZjU2NWY4MzVi
OWMwNGE5Y2RkZmMzNjkwNWVjNWQ3YzIwOC4uM2Y1NjFmNWVkZmQwN2Q3NDllOWI2YWVmNjg5YWE2
YWNkNWZlYTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDExLTExLTI5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBJbXBsZW1lbnQgW1N1
cHBsZW1lbnRhbF0gSURMIGFuZCBzdXBwb3J0IGl0IGluIHJ1bi1iaW5kaW5ncy10ZXN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxNjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKdXN0IHRvIGNoZWNr
IGlmIHRoZSBtYWMgYnVpbGQgZmFpbHVyZSBpcyBkdWUgdG8gbXkgcGF0Y2ggb3Igbm90LgorCisg
ICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisKKzIwMTEtMTEtMjkgIEtlbnRhcm8gSGFyYSAg
PGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFVucmV2aWV3ZWQuIFJlYmFzZWxpbmVk
IGEgcnVuLWJpbmRpbmdzLXRlc3RzIHJlc3VsdC4KIAogICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRl
eCBiYWRlNDQ0ZjUzYjk2OGIzMzZiMTljZDU0M2FkNmM1NDVkNTY4ODhmLi41OGNhMGVkY2FkZmY5
OWU4ODMwYWRlOWM2M2IxZjBiMzNhZWQ1NjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApA
QCAtMTM1LDE0ICsxMzUsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJvdGVjdGVk
OgogICAgICAgICB2aXJ0dWFsIH5FdmVudFRhcmdldCgpOwotICAgICAgICAKKwogICAgICAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgPSAwOwogICAgICAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgPSAwOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpID0gMDsKLSAgICAgICAgCisK
ICAgICAgICAgdm9pZCBmaXJlRXZlbnRMaXN0ZW5lcnMoRXZlbnQqLCBFdmVudFRhcmdldERhdGEq
LCBFdmVudExpc3RlbmVyVmVjdG9yJik7CiAKICAgICAgICAgZnJpZW5kIGNsYXNzIEV2ZW50TGlz
dGVuZXJJdGVyYXRvcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117101</attachid>
            <date>2011-11-29 19:42:39 -0800</date>
            <delta_ts>2011-11-29 20:43:20 -0800</delta_ts>
            <desc>rebased patch for commit</desc>
            <filename>bug-73162-20111130124237.patch</filename>
            <type>text/plain</type>
            <size>72778</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA3MWYyZjU2NWY4MzVi
OWMwNGE5Y2RkZmMzNjkwNWVjNWQ3YzIwOC4uOTY5OWRkZDQyZTJhM2UwNzJjNGE3NmE5ZjY0YmU3
NjdkMTU1ZDhkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMS0xMS0yOCAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IFtT
dXBwbGVtZW50YWxdIElETCBhbmQgc3VwcG9ydCBpdCBpbiBydW4tYmluZGluZ3MtdGVzdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTYyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICAtIE92ZXJ2aWV3OgorICAg
ICAgICAgICAgLSBJbXBsZW1lbnQgdGhlIFtTdXBwbGVtZW50YWxdIElETCBpbiByZXNvbHZlLXN1
cHBsZW1lbnRhbC5wbCBhbmQgZ2VuZXJhdGUtYmluZGluZ3MucGwuCisgICAgICAgICAgICAtIFN1
cHBvcnQgdGhlIFtTdXBwbGVtZW50YWxdIElETCBpbiBydW4tYmluZGluZ3MtdGVzdHMuCisgICAg
ICAgICAgICAtIEFkZCBUZXN0U3VwcGxlbWVudGFsLmlkbCBhcyBhIGJpbmRpbmcgdGVzdCBhbmQg
Y29uZmlybSB0aGF0IGl0IHdvcmtzLgorCisgICAgICAgIC0gVGhlIHNwZWMgZm9yIHRoZSBbU3Vw
cGxlbWVudGFsXSBJREw6IGh0dHA6Ly9kZXYudzMub3JnLzIwMDYvd2ViYXBpL1dlYklETC8jZGZu
LXN1cHBsZW1lbnRhbC1pbnRlcmZhY2UKKworICAgICAgICAtIFRoaXMgcGF0Y2ggYWZmZWN0cyBy
dW4tYmluZGluZ3MtdGVzdHMgcmVzdWx0cyBvbmx5IGFuZCBkb2VzIG5vdCBhZmZlY3QgYW55IHJl
YWwgYnVpbGRzCisgICAgICAgIHNpbmNlIG5vIFtTdXBwbGVtZW50YWxdIElETCBoYXMgYmVlbiB3
cml0dGVuIGluIHJlYWwgV2ViQ29yZSBJREwgZmlsZXMgZm9yIG5vdy4KKworICAgICAgICAtIFRo
aXMgcGF0Y2ggbWFrZXMgYSBjaGFuZ2Ugb24gQ29kZUdlbmVyYXRvcioucG0gdG8gc3VwcG9ydCB0
aGUgW1N1cHBsZW1lbnRhbF0gSURMCisgICAgICAgIGZvciAoY3VzdG9tKSBnZXR0ZXJzIGFuZCBz
ZXR0ZXJzLgorCisgICAgICAgIC0gQWRkZWQgcGVybCBzY3JpcHRzIGltcGxlbWVudCB0aGUgW1N1
cHBsZW1lbnRhbF0gSURMIGFzIGZvbGxvd3M6CisKKyAgICAgICAgICAgIFByZXZpb3VzIGJ1aWxk
IGZsb3c6CisgICAgICAgICAgICAgICAgZm9yZWFjaCAkaWRsIChhbGwgSURMIGZpbGVzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGRlcGVuZHMgb24gJGlkbDsK
KyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgcmVhZHMgJGlkbDsKKyAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgZ2VuZXJhdGVzIC5oIGFuZCAu
Y3BwIGZpbGVzIGZvciAkaWRsOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTmV3
IGJ1aWxkIGZsb3cgKFNlZSB0aGUgZGlzY3Vzc2lvbnMgaW4gYnVnIDcyMTM4IGZvciBtb3JlIGRl
dGFpbHMpOgorICAgICAgICAgICAgICAgIHJlc29sdmUtc3VwcGxlbWVudGFsLnBsIGRlcGVuZHMg
b24gYWxsIElETCBmaWxlczsKKyAgICAgICAgICAgICAgICByZXNvbHZlLXN1cHBsZW1lbnRhbC5w
bCByZWFkcyBhbGwgSURMIGZpbGVzOworICAgICAgICAgICAgICAgIHJlc29sdmUtc3VwcGxlbWVu
dGFsLnBsIHJlc29sdmVzIHRoZSBkZXBlbmRlbmN5IG9mIFtTdXBwbGVtZW50YWw9WFhYWF07Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwgb3V0cHV0cyBzdXBwbGVtZW50
YWxfZGVwZW5kZW5jeS50bXA7CisgICAgICAgICAgICAgICAgZm9yZWFjaCAkaWRsIChhbGwgSURM
IGZpbGVzKSB7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGRlcGVu
ZHMgb24gJGlkbCBhbmQgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kudG1wOworICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCByZWFkcyAkaWRsOworICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCByZWFkcyBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50
bXA7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyAu
aCBhbmQgLmNwcCBmaWxlcyBmb3IgJGlkbCwgaW5jbHVkaW5nIGFsbCBhdHRyaWJ1dGVzIGluIElE
TCBmaWxlcyB3aGljaCBhcmUgaW1wbGVtZW50aW5nICRpZGw7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgIFRlc3RzOiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5p
ZGwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGw6IFRo
ZSBpbnB1dCBpcyBhbiBJREwgZmlsZSB8eHwgYW5kIHRoZSBkZXBlbmRlbmN5IGZpbGUuIGdlbmVy
YXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyAuaCBhbmQgLmNwcCBmaWxlcyBmb3IgdGhlIElETCBm
aWxlIHx4fCwgaW5jbHVkaW5nIGFsbCB0aGUgYXR0cmlidXRlcyBpbiB0aGUgSURMIGZpbGVzIHdo
aWNoIGFyZSBpbXBsZW1lbnRpbmcgdGhlIElETCBmaWxlIHx4fC4gZ2VuZXJhdGUtYmluZGluZ3Mu
cGwgYWRkZXMgdGhlIFtJbXBsZW1lbnRlZEJ5XSBJREwgdG8gdGhlIGF0dHJpYnV0ZXMgd2l0aCB0
aGUgW1N1cHBsZW1lbnRhbF0gSURMIGluIG9yZGVyIHRvIGluZGljYXRlIHdoYXQgSURMIGlzIGlt
cGxlbWVudGluZyB0aGUgYXR0cmlidXRlcy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Jl
c29sdmUtc3VwcGxlbWVudGFsLnBsOiBBZGRlZC4gcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwgcmVh
ZHMgYWxsIElETCBmaWxlcywgcmVzb2x2ZXMgW1N1cHBsZW1lbnRhbD1YWFhdIGRlcGVuZGVuY2ll
cywgYW5kIHRoZW4gb3V0cHV0cyB0aGUgZGVwZW5kZW5jeSBmaWxlLiBTZWUgdGhlIGNvbW1lbnQg
aW4gcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwgZm9yIHRoZSBmb3JtYXQgb2YgdGhlIGRlcGVuZGVu
Y3kgZmlsZS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToK
KyAgICAgICAgKEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUpOiBB
dm9pZHMgZHVwbGljYXRlZCBjb25kaXRpb25zLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBJZiBhbiBhdHRy
aWJ1dGUgaXMgW0ltcGxlbWVudGVkQnldIGFub3RoZXIgSURMLCB0aGVuIHdlIG9taXQgdGhlIGRl
Y2xhcmF0aW9uIG9mIHRoZSBjdXN0b20gZ2V0dGVyIGFuZCBzZXR0ZXIuCisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uKTogSWYgYW4gYXR0cmlidXRlIGlzIFtJbXBsZW1lbnRlZEJ5XSBh
bm90aGVyIElETCwgdGhlbiB3ZSBjYWxsIGJhY2sgdGhlIChjdXN0b20pIGdldHRlciBhbmQgc2V0
dGVyIG9mIHRoZSBJREwuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6IElmIGFuIGF0dHJpYnV0ZSBpcyBbSW1w
bGVtZW50ZWRCeV0gYW5vdGhlciBJREwsIHRoZW4gd2Ugb21pdCB0aGUgZGVjbGFyYXRpb24gb2Yg
dGhlIGN1c3RvbSBnZXR0ZXIgYW5kIHNldHRlci4KKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0
ckdldHRlcik6IElmIGFuIGF0dHJpYnV0ZSBpcyBbSW1wbGVtZW50ZWRCeV0gYW5vdGhlciBJREws
IHRoZW4gd2UgY2FsbCBiYWNrIHRoZSBnZXR0ZXIgb2YgdGhlIElETC4KKyAgICAgICAgKEdlbmVy
YXRlTm9ybWFsQXR0clNldHRlcik6IElmIGFuIGF0dHJpYnV0ZSBpcyBbSW1wbGVtZW50ZWRCeV0g
YW5vdGhlciBJREwsIHRoZW4gd2UgY2FsbCBiYWNrIHRoZSBzZXR0ZXIgb2YgdGhlIElETC4KKyAg
ICAgICAgKEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSk6IElmIGFuIGF0dHJpYnV0ZSBp
cyBbSW1wbGVtZW50ZWRCeV0gYW5vdGhlciBJREwsIHRoZW4gd2UgY2FsbCBiYWNrIHRoZSBjdXN0
b20gZ2V0dGVyIG9yIHNldHRlciBvZiB0aGUgSURMLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckNQUC5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24p
OiBJZiBhbiBhdHRyaWJ1dGUgaXMgW0ltcGxlbWVudGVkQnldIGFub3RoZXIgSURMLCB0aGVuIHdl
IGNhbGwgYmFjayB0aGUgZ2V0dGVyIGFuZCBzZXR0ZXIgb2YgdGhlIElETC4gQ29kZUdlbmVyYXRv
ckNQUC5wbSBkb2VzIG5vdCBzdXBwb3J0IGEgY3VzdG9tIGdldHRlciBhbmQgc2V0dGVyLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06CisgICAgICAg
IChHZW5lcmF0ZVByb3BlcnR5KTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBE
aXR0by4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFs
LmlkbDogQWRkZWQuIEEgdGVzdCBjYXNlIGZvciB0aGUgW1N1cHBsZW1lbnRhbF0gSURMLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHA6
IFVwZGF0ZWQgYSBydW4tYmluZGluZ3MtdGVzdHMgcmVzdWx0LgorICAgICAgICAoV2ViRE9NVGVz
dEludGVyZmFjZTo6c3RyMSk6CisgICAgICAgIChXZWJET01UZXN0SW50ZXJmYWNlOjpzdHIyKToK
KyAgICAgICAgKFdlYkRPTVRlc3RJbnRlcmZhY2U6OnNldFN0cjIpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5oOiBEaXR0by4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNl
LmNwcDogRGl0dG8uCisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIx
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjIpOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfc3RyMik6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3RfaW50ZXJmYWNlX2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50
ZXJmYWNlX2NsYXNzX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0SW50ZXJmYWNlU3RyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRl
cmZhY2VTdHIyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN0cjMpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0SW50ZXJmYWNlU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRl
cmZhY2VTdHIzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RJbnRlcmZhY2UuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEludGVyZmFjZS5tbTogRGl0dG8uCisgICAgICAgICgtW0RPTVRlc3RJbnRl
cmZhY2Ugc3RyMV0pOgorICAgICAgICAoLVtET01UZXN0SW50ZXJmYWNlIHN0cjJdKToKKyAgICAg
ICAgKC1bRE9NVGVzdEludGVyZmFjZSBzZXRTdHIyOl0pOgorICAgICAgICAoLVtET01UZXN0SW50
ZXJmYWNlIHN0cjNdKToKKyAgICAgICAgKC1bRE9NVGVzdEludGVyZmFjZSBzZXRTdHIzOl0pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3RyMUF0dHJH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZUludGVybmFsOjpzdHIyQXR0
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW50ZXJuYWw6OnN0cjJB
dHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRl
bXBsYXRlKToKKwogMjAxMS0xMS0yOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gUmViYXNlbGluZWQgYSBydW4tYmluZGluZ3MtdGVz
dHMgcmVzdWx0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtCmluZGV4IDhiMDhmODgzOWQ0NzIzMGQ2YjEyNzk0MzI0ZGEyNTc5ZWYyMmUyYTMu
LjE4NGRmODFhODk5Mzc4MDdhM2FiYmZhNDJmMDIzZjk3NzIxZTc0NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTU2MywxMCAr
NTYzLDEzIEBAIHN1YiBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVl
CiB7CiAgICAgbXkgJGdlbmVyYXRvciA9IHNoaWZ0OwogICAgIG15ICRjb25kaXRpb25hbCA9IHNo
aWZ0OwotICAgIGlmICgkY29uZGl0aW9uYWwgPX4gLyYvKSB7Ci0gICAgICAgIHJldHVybiAiRU5B
QkxFKCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBzcGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4g
IikiOwotICAgIH0gZWxzaWYgKCRjb25kaXRpb25hbCA9fiAvXHwvKSB7Ci0gICAgICAgIHJldHVy
biAiRU5BQkxFKCIgLiBqb2luKCIpIHx8IEVOQUJMRSgiLCBzcGxpdCgvXHwvLCAkY29uZGl0aW9u
YWwpKSAuICIpIjsKKworICAgIG15ICRvcGVyYXRvciA9ICgkY29uZGl0aW9uYWwgPX4gLyYvID8g
JyYnIDogKCRjb25kaXRpb25hbCA9fiAvXHwvID8gJ3wnIDogJycpKTsKKyAgICBpZiAoJG9wZXJh
dG9yKSB7CisgICAgICAgICMgQXZvaWQgZHVwbGljYXRlZCBjb25kaXRpb25zLgorICAgICAgICBt
eSAlY29uZGl0aW9uczsKKyAgICAgICAgbWFwIHsgJGNvbmRpdGlvbnN7JF99ID0gMSB9IHNwbGl0
KCdcXCcgLiAkb3BlcmF0b3IsICRjb25kaXRpb25hbCk7CisgICAgICAgIHJldHVybiAiRU5BQkxF
KCIgLiBqb2luKCIpICRvcGVyYXRvciRvcGVyYXRvciBFTkFCTEUoIiwgc29ydCBrZXlzICVjb25k
aXRpb25zKSAuICIpIjsKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gIkVOQUJMRSgiIC4g
JGNvbmRpdGlvbmFsIC4gIikiOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQppbmRleCBlMTFjN2VlNzg4NDUxZTQ3NDVi
NzlmNDA1NTc1NzYzZTY1Nzg5NTg1Li5mNTQ0MjVjMDVhOGNiMDc4NDFjZThlOWM5ZDE1NzY2NDlj
N2M0NGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JDUFAucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yQ1BQLnBtCkBAIC03MDIsNyArNzAyLDE1IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICAjIC0gR0VUVEVSCiAgICAgICAgICAgICBteSAkZ2V0dGVyU2ln
ID0gIiRhdHRyaWJ1dGVUeXBlICRjbGFzc05hbWVcOlw6JGF0dHJpYnV0ZU5hbWUoKSBjb25zdFxu
IjsKICAgICAgICAgICAgIG15ICRoYXNHZXR0ZXJFeGNlcHRpb24gPSBAeyRhdHRyaWJ1dGUtPmdl
dHRlckV4Y2VwdGlvbnN9OwotICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnRIZWFkID0gImlt
cGwoKS0+IiAuICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbElu
Y2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkZ2V0
dGVyQ29udGVudEhlYWQ7CisgICAgICAgICAgICBteSAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9
ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAk
aW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAg
ICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgICAgICRn
ZXR0ZXJDb250ZW50SGVhZCA9ICIke2ltcGxlbWVudGVkQnl9Ojoke2dldHRlckV4cHJlc3Npb25Q
cmVmaXh9aW1wbCgpIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRIZWFkID0gImltcGwoKS0+JHtnZXR0ZXJFeHByZXNzaW9uUHJlZml4fSI7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVudFRhaWwgPSAiKSI7CiAK
ICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlcwpAQCAtNzIwLDcgKzcyOCw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIG15ICRnZXR0ZXJDb250ZW50OwogICAg
ICAgICAgICAgaWYgKCRoYXNHZXR0ZXJFeGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICAkZ2V0
dGVyQ29udGVudCA9ICRnZXR0ZXJDb250ZW50SGVhZCAuICJlYyIgLiAkZ2V0dGVyQ29udGVudFRh
aWw7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnQgPSAkZ2V0dGVyQ29udGVudEhlYWQg
LiAoJGdldHRlckNvbnRlbnRIZWFkID1+IC9cKCQvID8gImVjIiA6ICIsIGVjIikgLiAkZ2V0dGVy
Q29udGVudFRhaWw7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICRnZXR0
ZXJDb250ZW50ID0gJGdldHRlckNvbnRlbnRIZWFkIC4gJGdldHRlckNvbnRlbnRUYWlsOwogICAg
ICAgICAgICAgfQpAQCAtNzczLDcgKzc4MSwxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRleGNlcHRpb25Jbml0
XG4iKSBpZiAkaGFzU2V0dGVyRXhjZXB0aW9uOwogICAgICAgICAgICAgICAgIG15ICRlYyA9ICRo
YXNTZXR0ZXJFeGNlcHRpb24gPyAiLCBlYyIgOiAiIjsKICAgICAgICAgICAgICAgICBteSAkc2V0
dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJl
Zml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wbCgpLT4kc2V0dGVyRXhwcmVzc2lv
blByZWZpeCRhcmckZWMpO1xuIik7CisgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAg
ICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2ltcGxlbWVudGVkQnl9Ojoke3NldHRl
ckV4cHJlc3Npb25QcmVmaXh9aW1wbCgpLCAke2FyZ30ke2VjfSk7XG4iKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpbXBsKCktPiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JGFyZyRlYyk7XG4iKTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2Vw
dGlvblJhaXNlT25FcnJvclxuIikgaWYgJGhhc1NldHRlckV4Y2VwdGlvbjsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVj
dC5wbQppbmRleCA3YWI4OWRlYTliNGI0MTQxMTAzNzczYjNhMzBmZjlmNDNjOGYzY2E5Li5iNGVi
NGM5MmQ2MGM0ZjUzNTk2NDJkYjQzMmQ3ZTlkMjA5ZjMzNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAg
LTM4Miw4ICszODIsMTcgQEAgc3ViIEdlbmVyYXRlUHJvcGVydHkgewogICAgIG15ICRnZXR0ZXJF
eHByZXNzaW9uUHJlZml4ID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb25QcmVmaXgo
XCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKICAgICBteSAkc2V0
dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJl
Zml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICBt
eSAkZ2V0dGVyQ29udGVudEhlYWQgPSAiY29yZVNlbGYtPiRnZXR0ZXJFeHByZXNzaW9uUHJlZml4
IjsKLSAgICBteSAkc2V0dGVyQ29udGVudEhlYWQgPSAiY29yZVNlbGYtPiRzZXR0ZXJFeHByZXNz
aW9uUHJlZml4JHtjb252ZXJ0RnVuY3Rpb259KGdfdmFsdWVfZ2V0XyRndHlwZSh2YWx1ZSkpIjsK
KyAgICBteSAkZ2V0dGVyQ29udGVudEhlYWQ7CisgICAgbXkgJHNldHRlckNvbnRlbnRIZWFkOwor
ICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAg
ICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgJGdldHRl
ckNvbnRlbnRIZWFkID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7Z2V0dGVyRXhwcmVzc2lvblByZWZp
eH1jb3JlU2VsZiI7CisgICAgICAgICRzZXR0ZXJDb250ZW50SGVhZCA9ICIke2ltcGxlbWVudGVk
Qnl9Ojoke3NldHRlckV4cHJlc3Npb25QcmVmaXh9Y29yZVNlbGYsICR7Y29udmVydEZ1bmN0aW9u
fShnX3ZhbHVlX2dldF8kZ3R5cGUodmFsdWUpKSI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJGdl
dHRlckNvbnRlbnRIZWFkID0gImNvcmVTZWxmLT4kZ2V0dGVyRXhwcmVzc2lvblByZWZpeCI7Cisg
ICAgICAgICRzZXR0ZXJDb250ZW50SGVhZCA9ICJjb3JlU2VsZi0+JHNldHRlckV4cHJlc3Npb25Q
cmVmaXgke2NvbnZlcnRGdW5jdGlvbn0oZ192YWx1ZV9nZXRfJGd0eXBlKHZhbHVlKSkiOworICAg
IH0KIAogICAgIGlmIChncmVwIHskXyBlcSAkYXR0cmlidXRlfSBAd3JpdGVhYmxlUHJvcGVydGll
cykgewogICAgICAgICBwdXNoKEB0eHRTZXRQcm9wcywgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtNDA4LDcgKzQxNyw3IEBAIHN1YiBHZW5l
cmF0ZVByb3BlcnR5IHsKICAgICBteSAkcG9zdENvbnZlcnRGdW5jdGlvbiA9ICIiOwogICAgIG15
ICRkb25lID0gMDsKICAgICBpZiAoJGd0eXBlIGVxICJzdHJpbmciKSB7Ci0gICAgICAgIHB1c2go
QHR4dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0
VG9VVEY4U3RyaW5nKCR7Z2V0dGVyQ29udGVudEhlYWR9JHtleGNlcHRpb259KSkpO1xuIik7Cisg
ICAgICAgIHB1c2goQHR4dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZh
bHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKCR7Z2V0dGVyQ29udGVudEhlYWR9IiAuICgkZ2V0dGVy
Q29udGVudEhlYWQgIX4gL1woJC8gJiYgJGV4Y2VwdGlvbiA/ICIsICRleGNlcHRpb24iIDogIiRl
eGNlcHRpb24iKSAuICIpKSk7XG4iKTsKICAgICAgICAgJGRvbmUgPSAxOwogICAgIH0gZWxzaWYg
KCRndHlwZSBlcSAib2JqZWN0IikgewogICAgICAgICAkdHh0R2V0UHJvcCA9IDw8ICJFT0YiOwpA
QCAtNDI2LDcgKzQzNSwxMyBAQCBFT0YKICAgICB9CiAKICAgICBpZiAoISRkb25lKSB7Ci0gICAg
ICAgIHB1c2goQHR4dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3NldF8kX2d0eXBlKHZhbHVl
LCAke2NvbnZlcnRGdW5jdGlvbn1jb3JlU2VsZi0+JHtnZXR0ZXJFeHByZXNzaW9uUHJlZml4fSR7
ZXhjZXB0aW9ufSkke3Bvc3RDb252ZXJ0RnVuY3Rpb259KTtcbiIpOworICAgICAgICBpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9
KSB7CisgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgIHB1c2go
QHR4dEdldFByb3BzLCAiICAgICAgICBnX3ZhbHVlX3NldF8kX2d0eXBlKHZhbHVlLCAke2NvbnZl
cnRGdW5jdGlvbn0ke2ltcGxlbWVudGVkQnl9Ojoke2dldHRlckV4cHJlc3Npb25QcmVmaXh9Y29y
ZVNlbGYsICR7ZXhjZXB0aW9ufSkke3Bvc3RDb252ZXJ0RnVuY3Rpb259KTtcbiIpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAdHh0R2V0UHJvcHMsICIgICAgICAgIGdfdmFs
dWVfc2V0XyRfZ3R5cGUodmFsdWUsICR7Y29udmVydEZ1bmN0aW9ufWNvcmVTZWxmLT4ke2dldHRl
ckV4cHJlc3Npb25QcmVmaXh9JHtleGNlcHRpb259KSR7cG9zdENvbnZlcnRGdW5jdGlvbn0pO1xu
Iik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdXNoKEB0eHRHZXRQcm9wcywgIiAgICAgICAg
YnJlYWs7XG4gICAgfVxuIik7CkBAIC05MzIsNyArOTQ3LDE0IEBAIEVPRgogICAgICAgICBteSAk
Z2V0dGVyQ29udGVudEhlYWQ7CiAgICAgICAgIGlmICgkcHJlZml4KSB7CiAgICAgICAgICAgICBt
eSAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNz
aW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9uKTsKLSAg
ICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICIke2Fzc2lnbn1jb252ZXJ0VG9VVEY4U3Ry
aW5nKGl0ZW0tPiRnZXR0ZXJFeHByZXNzaW9uUHJlZml4JHtleGNlcHRpb25zfSkpO1xuIjsKKyAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0g
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5
In07CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0g
PSAxOworICAgICAgICAgICAgICAgIG15ICRpdGVtID0gISRjYWxsSW1wbFBhcmFtcyAmJiAhJGV4
Y2VwdGlvbnMgPyAiaXRlbSIgOiAiaXRlbSwgIjsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29u
dGVudEhlYWQgPSAiJHthc3NpZ259Y29udmVydFRvVVRGOFN0cmluZygke2ltcGxlbWVudGVkQnl9
OjokZ2V0dGVyRXhwcmVzc2lvblByZWZpeCRpdGVtJHtleGNlcHRpb25zfSkpO1xuIjsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIiR7
YXNzaWdufWNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+JGdldHRlckV4cHJlc3Npb25QcmVmaXgk
e2V4Y2VwdGlvbnN9KSk7XG4iOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIiR7YXNzaWdufWNvbnZlcnRUb1VURjhTdHJp
bmcoaXRlbS0+JHtmdW5jdGlvblNpZ05hbWV9KCR7Y2FsbEltcGxQYXJhbXN9JHtleGNlcHRpb25z
fSkpO1xuIjsKICAgICAgICAgfQpAQCAtOTQxLDEwICs5NjMsMjQgQEAgRU9GCiAgICAgICAgIG15
ICRjb250ZW50SGVhZDsKICAgICAgICAgaWYgKCRwcmVmaXggZXEgImdldF8iKSB7CiAgICAgICAg
ICAgICBteSAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJF
eHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9u
KTsKLSAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIke2Fzc2lnbn0ke2Fzc2lnblByZX1pdGVt
LT4kZ2V0dGVyRXhwcmVzc2lvblByZWZpeCR7Y2FsbEltcGxQYXJhbXN9JHtleGNlcHRpb25zfSR7
YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAg
IG15ICRpbXBsZW1lbnRlZEJ5ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
JHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgICAgIG15ICRpdGVtID0gISRj
YWxsSW1wbFBhcmFtcyAmJiAhJGV4Y2VwdGlvbnMgPyAiaXRlbSIgOiAiaXRlbSwgIjsKKyAgICAg
ICAgICAgICAgICAkY29udGVudEhlYWQgPSAiJHthc3NpZ259JHthc3NpZ25QcmV9JHtpbXBsZW1l
bnRlZEJ5fTo6JGdldHRlckV4cHJlc3Npb25QcmVmaXgkaXRlbSR7Y2FsbEltcGxQYXJhbXN9JHtl
eGNlcHRpb25zfSR7YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgJGNvbnRlbnRIZWFkID0gIiR7YXNzaWdufSR7YXNzaWduUHJlfWl0ZW0tPiRn
ZXR0ZXJFeHByZXNzaW9uUHJlZml4JHtjYWxsSW1wbFBhcmFtc30ke2V4Y2VwdGlvbnN9JHthc3Np
Z25Qb3N0fSk7XG4iOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2lmICgkcHJlZml4IGVx
ICJzZXRfIikgewogICAgICAgICAgICAgbXkgJHNldHRlckV4cHJlc3Npb25QcmVmaXggPSAkY29k
ZUdlbmVyYXRvci0+U2V0dGVyRXhwcmVzc2lvblByZWZpeChcJWltcGxJbmNsdWRlcywgJGludGVy
ZmFjZU5hbWUsICRmdW5jdGlvbik7Ci0gICAgICAgICAgICAkY29udGVudEhlYWQgPSAiJHthc3Np
Z259JHthc3NpZ25QcmV9aXRlbS0+JHNldHRlckV4cHJlc3Npb25QcmVmaXgke2NhbGxJbXBsUGFy
YW1zfSR7ZXhjZXB0aW9uc30ke2Fzc2lnblBvc3R9KTtcbiI7CisgICAgICAgICAgICBpZiAoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0p
IHsKKyAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAg
ICAgICBteSAkaXRlbSA9ICEkY2FsbEltcGxQYXJhbXMgJiYgISRleGNlcHRpb25zID8gIml0ZW0i
IDogIml0ZW0sICI7CisgICAgICAgICAgICAgICAgJGNvbnRlbnRIZWFkID0gIiR7YXNzaWdufSR7
YXNzaWduUHJlfSR7aW1wbGVtZW50ZWRCeX06OiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JGl0ZW0k
e2NhbGxJbXBsUGFyYW1zfSR7ZXhjZXB0aW9uc30ke2Fzc2lnblBvc3R9KTtcbiI7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIke2Fzc2lnbn0k
e2Fzc2lnblByZX1pdGVtLT4kc2V0dGVyRXhwcmVzc2lvblByZWZpeCR7Y2FsbEltcGxQYXJhbXN9
JHtleGNlcHRpb25zfSR7YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIke2Fzc2lnbn0ke2Fzc2lnblBy
ZX1pdGVtLT4ke2Z1bmN0aW9uU2lnTmFtZX0oJHtjYWxsSW1wbFBhcmFtc30ke2V4Y2VwdGlvbnN9
JHthc3NpZ25Qb3N0fSk7XG4iOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDZjZTNhZDY3OTY0NDY2YjJh
NWNmZjFlMjY5ZjEyYzY3ZGYxZjI4ZjUuLmE3NWFmMGQzOWViZmEzMTc1YWFkZDFlYmJiN2ZmYjgw
ZWU3MzM1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCkBAIC04NzcsOCArODc3LDggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICAgICAg
bXkgJGF0dHJpYnV0ZSA9ICRfOwogICAgICAgICAgICAgJG51bUN1c3RvbUF0dHJpYnV0ZXMrKyBp
ZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSB8
fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0NDdXN0b20i
fTsKLSAgICAgICAgICAgICRudW1DdXN0b21BdHRyaWJ1dGVzKysgaWYgJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0dGVyIn0gfHwgJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tR2V0dGVyIn07Ci0g
ICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbVNldHRlciJ9OworICAgICAg
ICAgICAgJG51bUN1c3RvbUF0dHJpYnV0ZXMrKyBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tR2V0dGVyIn0pICYmICEkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07Cisg
ICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlmICgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21TZXR0ZXIifSB8fCAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0NDdXN0b21TZXR0ZXIifSkgJiYgISRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnki
fTsKICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDYWNoZWRBdHRyaWJ1dGUifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpVbmtub3duPiBtXyIgLiAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgJG51bUNh
Y2hlZEF0dHJpYnV0ZXMrKzsKQEAgLTkwMiw5ICs5MDIsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5Lykgewog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgc2V0IiAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkg
LiAiKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUdldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbUdldHRlciJ9KSB7CisgICAgICAgICAgICB9IGVs
c2lmICgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
R2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNDQ3VzdG9tR2V0dGVyIn0pICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSAiIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmly
c3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoSlNDOjpFeGVjU3RhdGUqKSBjb25z
dDtcbiIpOwotICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9tU2V0dGVyIn0pIHsKKyAgICAgICAgICAg
IH0gZWxzaWYgKCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21TZXR0ZXIifSB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJKU0NDdXN0b21TZXR0ZXIifSkgJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgewogICAgICAgICAgICAgICAgIGlmICgk
YXR0cmlidXRlLT50eXBlICF+IC9ecmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTcxMSw3ICsxNzExLDEz
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTQ0N1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUdldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkpTQ0N1c3RvbUdldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT4kaW1wbEdldHRlckZ1bmN0
aW9uTmFtZShleGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpT
JHtpbXBsZW1lbnRlZEJ5fTo6JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoY2FzdGVkVGhpcywgZXhl
Yyk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT4kaW1wbEdl
dHRlckZ1bmN0aW9uTmFtZShleGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2hlY2tOb2RlU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRp
bXBsQ2xhc3NOYW1lKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOwpAQCAtMTc2Miw3ICsxNzY4
LDE2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2
ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiaW1w
LiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgbXkgJGdldHRlckV4cHJlc3Npb24gPSAiaW1wLT4iIC4gJGNv
ZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb25QcmVmaXgoXCVpbXBsSW5jbHVkZXMsICRpbnRl
cmZhY2VOYW1lLCAkYXR0cmlidXRlKSAuICIpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15
ICRnZXR0ZXJFeHByZXNzaW9uUHJlZml4ID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Np
b25QcmVmaXgoXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG15ICRnZXR0ZXJFeHByZXNzaW9uOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRp
bXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkZ2V0dGVyRXhwcmVzc2lvbiA9ICIke2ltcGxlbWVudGVkQnl9Ojoke2dldHRlckV4cHJl
c3Npb25QcmVmaXh9aW1wKSI7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRnZXR0ZXJFeHByZXNzaW9uID0gImltcC0+IiAuICRn
ZXR0ZXJFeHByZXNzaW9uUHJlZml4IC4gIikiOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICRnZXR0ZXJFeHByZXNzaW9u
LCAiY2FzdGVkVGhpcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1l
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKQEAgLTE3NzIsNyAr
MTc4Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAkanNUeXBl
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgbV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIi5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCByZXN1bHQpO1xuIikgaWYgKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hlZEF0dHJpYnV0ZSJ9KTsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwog
CkBAIC0xODg1LDcgKzE5MDAsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbSJ9IHx8ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9
IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3Rv
bVNldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5zZXQkaW1wbFNl
dHRlckZ1bmN0aW9uTmFtZShleGVjLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRp
bXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJKUyR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlMke2ltcGxlbWVudGVkQnl9
OjpzZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhp
c09iamVjdCksIGV4ZWMsIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+c2V0JGltcGxT
ZXR0ZXJGdW5jdGlvbk5hbWUoZXhlYywgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2
ZW50TGlzdGVuZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siSlNFdmVudExpc3RlbmVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIik7CkBAIC0xOTcw
LDE3ICsxOTkxLDIxIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkc2V0dGVyRXhwcmVzc2lvblBy
ZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1
ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC0+JHNldHRlckV4cHJlc3Npb25Q
cmVmaXgkbmF0aXZlVmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVk
QnkifSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVu
dGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2ltcGxlbWVudGVkQnl9Ojok
e3NldHRlckV4cHJlc3Npb25QcmVmaXh9aW1wLCAkbmF0aXZlVmFsdWUiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC0+JHNldHRlckV4cHJlc3Npb25Q
cmVmaXgkbmF0aXZlVmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiwgZWMi
KSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIik7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2VuZGlmXG4iKSBpZiAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmc7Ci0KICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4IDI3NDEwMjg5N2I1OTFm
Y2QwNDAxYmQ0ZjI3ZjcwNDk0MjkxNzU5Y2EuLjc4MmYzNWUzMzM0MTVjYmQ1ZmNjNDcxZjU3Mjg5
NWY5OTE1NTY2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMTIwNyw3ICsxMjA3LDE1IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9fiBz
L1xib3duZXJEb2N1bWVudFxiL2RvY3VtZW50LzsKIAogICAgICAgICAgICAgbXkgJGhhc0dldHRl
ckV4Y2VwdGlvbiA9IEB7JGF0dHJpYnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc307Ci0gICAgICAgICAg
ICBteSAkZ2V0dGVyQ29udGVudEhlYWQgPSAiSU1QTC0+JGdldHRlckV4cHJlc3Npb25QcmVmaXgi
OworICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnRIZWFkOworICAgICAgICAgICAgaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnki
fSkgeworICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAg
ICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiJHtpbXBsZW1lbnRlZEJ5fTo6JHtnZXR0ZXJF
eHByZXNzaW9uUHJlZml4fUlNUEwiOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiSU1QTC0+JGdldHRlckV4cHJlc3Npb25QcmVmaXgi
OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVudFRhaWwgPSAi
KSI7CiAKICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7CkBAIC0xMzQxLDcgKzEz
NDksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBteSAkZ2V0
dGVyQ29udGVudDsKICAgICAgICAgICAgIGlmICgkaGFzR2V0dGVyRXhjZXB0aW9uKSB7Ci0gICAg
ICAgICAgICAgICAgJGdldHRlckNvbnRlbnQgPSAkZ2V0dGVyQ29udGVudEhlYWQgLiAiZWMiIC4g
JGdldHRlckNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50ID0gJGdl
dHRlckNvbnRlbnRIZWFkIC4gKCRnZXR0ZXJDb250ZW50SGVhZCA9fiAvXCgkfCwgJC8gPyAiZWMi
IDogIiwgZWMiKSAuICRnZXR0ZXJDb250ZW50VGFpbDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnQgPSAkZ2V0dGVyQ29udGVudEhlYWQgLiAkZ2V0
dGVyQ29udGVudFRhaWw7CiAgICAgICAgICAgICB9CkBAIC0xNDM3LDcgKzE0NDUsMTMgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgbXkgJHNldHRlckV4
cHJlc3Npb25QcmVmaXggPSAkY29kZUdlbmVyYXRvci0+U2V0dGVyRXhwcmVzc2lvblByZWZpeChc
JWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAg
ICAgICAgICBteSAkZWMgPSAkaGFzU2V0dGVyRXhjZXB0aW9uID8gIiwgZWMiIDogIiI7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRleGNlcHRpb25Jbml0XG4i
KSBpZiAkaGFzU2V0dGVyRXhjZXB0aW9uOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBJTVBMLT4kc2V0dGVyRXhwcmVzc2lvblByZWZpeCRhcmckZWMpO1xuIik7
CisgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJ
bmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtpbXBsZW1lbnRlZEJ5fTo6JHtzZXR0ZXJFeHBy
ZXNzaW9uUHJlZml4fUlNUEwsICR7YXJnfSR7ZWN9KTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgSU1QTC0+JHNldHRlckV4cHJlc3Npb25QcmVmaXgkYXJnJGVjKTtcbiIpOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICRleGNlcHRpb25SYWlzZU9uRXJyb3JcbiIpIGlmICRoYXNTZXR0ZXJFeGNlcHRpb247CiAgICAg
ICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDZhZmQ4MTBkYzRjNGZkYTY4YTIwOWY3Y2Y4NDQ3MjZk
NjRjZmJkNTcuLmZjNjVkMDI4ZmE4ZGI1YzEyZjk0NzEwY2I2MWExNWUyZDk4ZTNhZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CkBAIC0zOTUsMTQgKzM5NSwxNiBAQCBFTkQKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7
JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4Q3Vz
dG9tR2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0KLSAgICAgICAgICAgIHx8
ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0pIHsKKyAgICAg
ICAgaWYgKCgkYXR0ckV4dC0+eyJWOEN1c3RvbUdldHRlciJ9IHx8ICRhdHRyRXh0LT57IkN1c3Rv
bUdldHRlciJ9IHx8CisgICAgICAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSB8fCAkYXR0
ckV4dC0+eyJDdXN0b20ifSkgJiYKKyAgICAgICAgICAgICEkYXR0ckV4dC0+eyJJbXBsZW1lbnRl
ZEJ5In0pIHsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKICAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7bmFtZX1BY2Nlc3NvckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYpOwogRU5ECiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJF
eHQtPnsiQ3VzdG9tU2V0dGVyIn0KLSAgICAgICAgICAgIHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9t
In0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0pIHsKKyAgICAgICAgaWYgKCgkYXR0ckV4dC0+eyJW
OEN1c3RvbVNldHRlciJ9IHx8ICRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8CisgICAgICAg
ICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSkgJiYK
KyAgICAgICAgICAgICEkYXR0ckV4dC0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKICAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKICAgICBzdGF0aWMgdm9pZCAke25hbWV9QWNj
ZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJik7CiBFTkQKQEAgLTg3NCw4ICs4NzYsMTYgQEAg
RU5ECiAKICAgICBteSAkZ2V0dGVyU3RyaW5nOwogICAgIGlmICgkZ2V0dGVyU3RyaW5nVXNlc0lt
cCkgewotICAgICAgICAkZ2V0dGVyU3RyaW5nID0gImltcC0+IiAuICRjb2RlR2VuZXJhdG9yLT5H
ZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0
dHJpYnV0ZSk7Ci0gICAgICAgICRnZXR0ZXJTdHJpbmcgLj0gImVjIiBpZiAkdXNlRXhjZXB0aW9u
czsKKyAgICAgICAgbXkgJGdldHRlckV4cHJlc3Npb25QcmVmaXggPSAkY29kZUdlbmVyYXRvci0+
R2V0dGVyRXhwcmVzc2lvblByZWZpeChcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRh
dHRyaWJ1dGUpOworICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICBteSAkaW1wbGVtZW50
ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxl
bWVudGVkQnkifTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVk
Qnl9LmgiKTsKKyAgICAgICAgICAgICRnZXR0ZXJTdHJpbmcgPSAiJHtpbXBsZW1lbnRlZEJ5fTo6
JHtnZXR0ZXJFeHByZXNzaW9uUHJlZml4fWltcCI7CisgICAgICAgICAgICAkZ2V0dGVyU3RyaW5n
IC49ICIsIGVjIiBpZiAkdXNlRXhjZXB0aW9uczsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICRnZXR0ZXJTdHJpbmcgPSAiaW1wLT4kZ2V0dGVyRXhwcmVzc2lvblByZWZpeCI7CisgICAg
ICAgICAgICAkZ2V0dGVyU3RyaW5nIC49ICJlYyIgaWYgJHVzZUV4Y2VwdGlvbnM7CisgICAgICAg
IH0KICAgICAgICAgJGdldHRlclN0cmluZyAuPSAiKSI7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
JGdldHRlclN0cmluZyA9ICJpbXBJbnN0YW5jZSI7CkBAIC04ODQsMTYgKzg5NCwxNiBAQCBFTkQK
ICAgICBteSAkcmVzdWx0OwogICAgIG15ICR3cmFwcGVyOwogCi0gICAgICAgIGlmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiICYmICRkYXRhTm9kZS0+bmFt
ZSBlcSAiRE9NV2luZG93IikgeworICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUg
ZXEgIkV2ZW50TGlzdGVuZXIiICYmICRkYXRhTm9kZS0+bmFtZSBlcSAiRE9NV2luZG93Iikgewog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICghaW1wLT5kb2N1bWVudCgp
KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIpOwogICAgIH0KIAogICAgIGlmICgkdXNlRXhjZXB0
aW9ucykgewogICAgICAgICBpZiAoJG5hdGl2ZVR5cGUgPX4gL15WOFBhcmFtZXRlci8pIHsKLSAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICIgLiBDb252ZXJ0VG9WOFBhcmFt
ZXRlcigkYXR0cmlidXRlLT5zaWduYXR1cmUsICRuYXRpdmVUeXBlLCAidiIsICRnZXR0ZXJTdHJp
bmcpIC4gIjtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAi
IC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkbmF0aXZlVHlw
ZSwgInYiLCAkZ2V0dGVyU3RyaW5nKSAuICI7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVUeXBlIHYgPSAkZ2V0dGVy
U3RyaW5nO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRu
YXRpdmVUeXBlIHYgPSAkZ2V0dGVyU3RyaW5nO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgR2VuZXJhdGVTZXRET01FeGNlcHRpb24oIiAgICAiKSk7CiAg
ICAgICAgICRyZXN1bHQgPSAidiI7CkBAIC0xMTE2LDcgKzExMjYsMTMgQEAgRU5ECiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBteSAkc2V0dGVyRXhwcmVzc2lv
blByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uUHJlZml4KFwlaW1wbElu
Y2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiICAgIGltcC0+JHNldHRlckV4cHJlc3Npb25QcmVmaXgkcmVzdWx0
Iik7CisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVu
dGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7aW1wbGVt
ZW50ZWRCeX0uaCIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgJHtpbXBsZW1lbnRlZEJ5fTo6JHtzZXR0ZXJFeHByZXNzaW9uUHJlZml4fWltcCwgJHJlc3Vs
dCIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgIGltcC0+JHNldHRlckV4cHJlc3Npb25QcmVmaXgkcmVzdWx0Iik7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiwgZWMiKSBpZiAkdXNlRXhjZXB0aW9uczsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIik7XG4iKTsKQEAgLTE4NjgsNyArMTg4NCwxMiBAQCBzdWIgR2VuZXJhdGVTaW5nbGVCYXRj
aGVkQXR0cmlidXRlCiAgICAgICAgICIiOwogICAgIGlmICgkY3VzdG9tQWNjZXNzb3IgZXEgMSkg
ewogICAgICAgICAjIHVzZSB0aGUgbmFtaW5nIGNvbnZlbnNpb24sIGludGVyZmFjZSArIChjYXBp
dGFsaXplKSBhdHRyIG5hbWUKLSAgICAgICAgJGN1c3RvbUFjY2Vzc29yID0gJGludGVyZmFjZU5h
bWUgLiAiOjoiIC4gJGF0dHJOYW1lOworICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAk
Y3VzdG9tQWNjZXNzb3IgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJJbXBsZW1lbnRlZEJ5In0gLiAiOjoiIC4gJGF0dHJOYW1lOworICAgICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIlY4IiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSAuICIuaCIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgJGN1c3RvbUFjY2Vzc29yID0gJGludGVyZmFjZU5hbWUgLiAiOjoiIC4gJGF0dHJO
YW1lOworICAgICAgICB9CiAgICAgfQogCiAgICAgbXkgJGdldHRlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCmluZGV4IDU3
YTM5MjgzYzNkOGU1MTI3Yjg0NTIxZTdhODNhYjc5Y2EzMzI5ZGEuLmJmNGQ3MDFjZmZmNTAyNjk5
ZGY1ODBhNGZjZWVlOWQyZjViZDYwMDUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbApAQCAtMzEsNiArMzEsNyBAQAogdXNl
IHN0cmljdDsKIAogdXNlIEZpbGU6OlBhdGg7Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgR2V0
b3B0OjpMb25nOwogdXNlIEN3ZDsKIApAQCAtNDcsNiArNDgsNyBAQCBteSAkcHJlZml4OwogbXkg
JHByZXByb2Nlc3NvcjsKIG15ICR3cml0ZURlcGVuZGVuY2llczsKIG15ICR2ZXJib3NlOworbXkg
JHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlOwogCiBHZXRPcHRpb25zKCdpbmNsdWRlPXNAJyA9
PiBcQGlkbERpcmVjdG9yaWVzLAogICAgICAgICAgICAnb3V0cHV0RGlyPXMnID0+IFwkb3V0cHV0
RGlyZWN0b3J5LApAQCAtNTcsMTEgKzU5LDEyIEBAIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+
IFxAaWRsRGlyZWN0b3JpZXMsCiAgICAgICAgICAgICdwcmVmaXg9cycgPT4gXCRwcmVmaXgsCiAg
ICAgICAgICAgICdwcmVwcm9jZXNzb3I9cycgPT4gXCRwcmVwcm9jZXNzb3IsCiAgICAgICAgICAg
ICd2ZXJib3NlJyA9PiBcJHZlcmJvc2UsCi0gICAgICAgICAgICd3cml0ZS1kZXBlbmRlbmNpZXMn
ID0+IFwkd3JpdGVEZXBlbmRlbmNpZXMpOworICAgICAgICAgICAnd3JpdGUtZGVwZW5kZW5jaWVz
JyA9PiBcJHdyaXRlRGVwZW5kZW5jaWVzLAorICAgICAgICAgICAnc3VwcGxlbWVudGFsRGVwZW5k
ZW5jeUZpbGU9cycgPT4gXCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSk7CiAKLW15ICRpZGxG
aWxlID0gJEFSR1ZbMF07CitteSAkdGFyZ2V0SWRsRmlsZSA9ICRBUkdWWzBdOwogCi1kaWUoJ011
c3Qgc3BlY2lmeSBpbnB1dCBmaWxlLicpIHVubGVzcyBkZWZpbmVkKCRpZGxGaWxlKTsKK2RpZSgn
TXVzdCBzcGVjaWZ5IGlucHV0IGZpbGUuJykgdW5sZXNzIGRlZmluZWQoJHRhcmdldElkbEZpbGUp
OwogZGllKCdNdXN0IHNwZWNpZnkgZ2VuZXJhdG9yJykgdW5sZXNzIGRlZmluZWQoJGdlbmVyYXRv
cik7CiBkaWUoJ011c3Qgc3BlY2lmeSBvdXRwdXQgZGlyZWN0b3J5LicpIHVubGVzcyBkZWZpbmVk
KCRvdXRwdXREaXJlY3RvcnkpOwogZGllKCdNdXN0IHNwZWNpZnkgZGVmaW5lcycpIHVubGVzcyBk
ZWZpbmVkKCRkZWZpbmVzKTsKQEAgLTY5LDE1ICs3Miw4MSBAQCBkaWUoJ011c3Qgc3BlY2lmeSBk
ZWZpbmVzJykgdW5sZXNzIGRlZmluZWQoJGRlZmluZXMpOwogaWYgKCEkb3V0cHV0SGVhZGVyc0Rp
cmVjdG9yeSkgewogICAgICRvdXRwdXRIZWFkZXJzRGlyZWN0b3J5ID0gJG91dHB1dERpcmVjdG9y
eTsKIH0KKyRkZWZpbmVzID1+IHMvXlxzK3xccyskLy9nOyAjIHRyaW0gd2hpdGVzcGFjZQorJHRh
cmdldElkbEZpbGUgPSBDd2Q6OnJlYWxwYXRoKCR0YXJnZXRJZGxGaWxlKTsKIGlmICgkdmVyYm9z
ZSkgewotICAgIHByaW50ICIkZ2VuZXJhdG9yOiAkaWRsRmlsZVxuIjsKKyAgICBwcmludCAiJGdl
bmVyYXRvcjogJHRhcmdldElkbEZpbGVcbiI7CiB9Ci0kZGVmaW5lcyA9fiBzL15ccyt8XHMrJC8v
ZzsgIyB0cmltIHdoaXRlc3BhY2UKK215ICR0YXJnZXRJbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNl
KGJhc2VuYW1lKCR0YXJnZXRJZGxGaWxlKSwgIi5pZGwiKTsKKworbXkgJGlkbEZvdW5kID0gMDsK
K215IEBzdXBwbGVtZW50ZWRJZGxGaWxlczsKK2lmICgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZp
bGUpIHsKKyAgICAjIFRoZSBmb3JtYXQgb2YgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBmaWxl
OgorICAgICMKKyAgICAjIERPTVdpbmRvdy5pZGwgUC5pZGwgUS5pZGwgUi5pZGwKKyAgICAjIERv
Y3VtZW50LmlkbCBTLmlkbAorICAgICMgRXZlbnQuaWRsCisgICAgIyAuLi4KKyAgICAjCisgICAg
IyBUaGUgYWJvdmUgaW5kaWNhdGVzIHRoYXQgRE9NV2luZG93LmlkbCBpcyBzdXBwbGVtZW50ZWQg
YnkgUC5pZGwsIFEuaWRsIGFuZCBSLmlkbCwKKyAgICAjIERvY3VtZW50LmlkbCBpcyBzdXBwbGVt
ZW50ZWQgYnkgUy5pZGwsIGFuZCBFdmVudC5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IG5vIElETHMu
CisgICAgIyBUaGUgSURMIHRoYXQgc3VwcGxlbWVudHMgYW5vdGhlciBJREwgKGUuZy4gUC5pZGwp
IG5ldmVyIGFwcGVhcnMgaW4gdGhlIGRlcGVuZGVuY3kgZmlsZS4KKyAgICBvcGVuIEZILCAiPCAk
c3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUiIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHN1cHBsZW1l
bnRhbERlcGVuZGVuY3lGaWxlXG4iOworICAgIHdoaWxlIChteSAkbGluZSA9IDxGSD4pIHsKKyAg
ICAgICAgbXkgKCRpZGxGaWxlLCBAZm9sbG93aW5nSWRsRmlsZXMpID0gc3BsaXQoL1xzKy8sICRs
aW5lKTsKKyAgICAgICAgaWYgKCRpZGxGaWxlIGFuZCAkaWRsRmlsZSBlcSAkdGFyZ2V0SWRsRmls
ZSkgeworICAgICAgICAgICAgJGlkbEZvdW5kID0gMTsKKyAgICAgICAgICAgIEBzdXBwbGVtZW50
ZWRJZGxGaWxlcyA9IEBmb2xsb3dpbmdJZGxGaWxlczsKKyAgICAgICAgfQorICAgIH0KKyAgICBj
bG9zZSBGSDsKKworICAgIGlmICghJGlkbEZvdW5kKSB7CisgICAgICAgIGlmICgkdmVyYm9zZSkg
eworICAgICAgICAgICAgcHJpbnQgIiR0YXJnZXRJZGxGaWxlIGlzIHN1cHBsZW1lbnRpbmcgYW5v
dGhlciBJREwgZmlsZSwgYW5kIHRodXMgLmggYW5kIC5jcHAgZm9yICR0YXJnZXRJZGxGaWxlIGFy
ZSBub3QgZ2VuZXJhdGVkLlxuIjsKKyAgICAgICAgfQorICAgICAgICBleGl0IDA7CisgICAgfQor
fQorCisjIFBhcnNlIHRoZSB0YXJnZXQgSURMIGZpbGUuCitteSAkdGFyZ2V0UGFyc2VyID0gSURM
UGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKK215ICR0YXJnZXREb2N1bWVudCA9ICR0YXJnZXRQYXJz
ZXItPlBhcnNlKCR0YXJnZXRJZGxGaWxlLCAkZGVmaW5lcywgJHByZXByb2Nlc3Nvcik7CiAKLSMg
UGFyc2UgdGhlIGdpdmVuIElETCBmaWxlLgotbXkgJHBhcnNlciA9IElETFBhcnNlci0+bmV3KCEk
dmVyYm9zZSk7Ci1teSAkZG9jdW1lbnQgPSAkcGFyc2VyLT5QYXJzZSgkaWRsRmlsZSwgJGRlZmlu
ZXMsICRwcmVwcm9jZXNzb3IpOworZm9yZWFjaCBteSAkaWRsRmlsZSAoQHN1cHBsZW1lbnRlZElk
bEZpbGVzKSB7CisgICAgbmV4dCBpZiAkaWRsRmlsZSBlcSAkdGFyZ2V0SWRsRmlsZTsKKworICAg
IG15ICRpbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNlKGJhc2VuYW1lKCRpZGxGaWxlKSwgIi5pZGwi
KTsKKyAgICBteSAkcGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKKyAgICBteSAk
ZG9jdW1lbnQgPSAkcGFyc2VyLT5QYXJzZSgkaWRsRmlsZSwgJGRlZmluZXMsICRwcmVwcm9jZXNz
b3IpOworCisgICAgZm9yZWFjaCBteSAkZGF0YU5vZGUgKEB7JGRvY3VtZW50LT5jbGFzc2VzfSkg
eworICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3VwcGxlbWVu
dGFsIn0gYW5kICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN1cHBsZW1lbnRhbCJ9
IGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lKSB7CisgICAgICAgICAgICBteSAkdGFyZ2V0RGF0YU5v
ZGU7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRjbGFzcyAoQHskdGFyZ2V0RG9jdW1lbnQtPmNs
YXNzZXN9KSB7CisgICAgICAgICAgICAgICAgaWYgKCRjbGFzcy0+bmFtZSBlcSAkdGFyZ2V0SW50
ZXJmYWNlTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0RGF0YU5vZGUgPSAkY2xh
c3M7CisgICAgICAgICAgICAgICAgICAgIGxhc3Q7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZGllICJOb3QgZm91bmQgYW4gaW50ZXJmYWNlICR7dGFyZ2V0
SW50ZXJmYWNlTmFtZX0gaW4gJHt0YXJnZXRJbnRlcmZhY2VOYW1lfS5pZGwuIiB1bmxlc3MgZGVm
aW5lZCAkdGFyZ2V0RGF0YU5vZGU7CisKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0
ZSAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICAgICAgIyBSZWNvcmQg
dGhhdCB0aGlzIGF0dHJpYnV0ZSBpcyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNlTmFtZS4KKyAg
ICAgICAgICAgICAgICAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJJbXBsZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZTsKKworICAgICAgICAgICAgICAgICMg
QWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBhdHRyaWJ1dGUu
CisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlz
ICV7JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICAgICAgICAg
IG5leHQgaWYgKCRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgZXEgIlN1cHBsZW1lbnRhbCIpOworICAg
ICAgICAgICAgICAgICAgICAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgcHVzaChAeyR0YXJnZXREYXRhTm9kZS0+YXR0cmlidXRlc30sICRhdHRyaWJ1dGUp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQogCi0jIEdlbmVyYXRlIGRlc2ly
ZWQgb3V0cHV0IGZvciBnaXZlbiBJREwgZmlsZS4KKyMgR2VuZXJhdGUgZGVzaXJlZCBvdXRwdXQg
Zm9yIHRoZSB0YXJnZXQgSURMIGZpbGUuCiBteSAkY29kZUdlbiA9IENvZGVHZW5lcmF0b3ItPm5l
dyhcQGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0b3J5LCAkb3V0cHV0
SGVhZGVyc0RpcmVjdG9yeSwgMCwgJHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5kZW5jaWVzLCAk
dmVyYm9zZSk7Ci0kY29kZUdlbi0+UHJvY2Vzc0RvY3VtZW50KCRkb2N1bWVudCwgJGRlZmluZXMp
OworJGNvZGVHZW4tPlByb2Nlc3NEb2N1bWVudCgkdGFyZ2V0RG9jdW1lbnQsICRkZWZpbmVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcmVzb2x2ZS1zdXBw
bGVtZW50YWwucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Jlc29sdmUtc3Vw
cGxlbWVudGFsLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhYjE5MGQ1MzJmZmQwZmFmNWYxZDZhZmZlODc0M2E3
YWEwODkzY2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Jlc29sdmUtc3VwcGxlbWVudGFsLnBsCkBAIC0wLDAgKzEsOTMgQEAKKyMhL3Vzci9iaW4v
cGVybCAtdworIworIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisj
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIworCit1c2Ugc3Ry
aWN0OworCit1c2UgRmlsZTo6QmFzZW5hbWU7Cit1c2UgR2V0b3B0OjpMb25nOwordXNlIEN3ZDsK
KwordXNlIElETFBhcnNlcjsKKworbXkgJGRlZmluZXM7CitteSAkcHJlcHJvY2Vzc29yOworbXkg
JHZlcmJvc2U7CitteSAkaWRsRmlsZXNMaXN0OworbXkgJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lG
aWxlOworCitHZXRPcHRpb25zKCdkZWZpbmVzPXMnID0+IFwkZGVmaW5lcywKKyAgICAgICAgICAg
J3ByZXByb2Nlc3Nvcj1zJyA9PiBcJHByZXByb2Nlc3NvciwKKyAgICAgICAgICAgJ3ZlcmJvc2Un
ID0+IFwkdmVyYm9zZSwKKyAgICAgICAgICAgJ2lkbEZpbGVzTGlzdD1zJyA9PiBcJGlkbEZpbGVz
TGlzdCwKKyAgICAgICAgICAgJ3N1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlPXMnID0+IFwkc3Vw
cGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOworCitkaWUoJ011c3Qgc3BlY2lmeSAjZGVmaW5lIG1h
Y3JvcyB1c2luZyAtLWRlZmluZXMuJykgdW5sZXNzIGRlZmluZWQoJGRlZmluZXMpOworZGllKCdN
dXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS1zdXBwbGVtZW50YWxEZXBlbmRlbmN5
RmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOworZGll
KCdNdXN0IHNwZWNpZnkgdGhlIGZpbGUgbGlzdGluZyBhbGwgSURMcyB1c2luZyAtLWlkbEZpbGVz
TGlzdC4nKSB1bmxlc3MgZGVmaW5lZCgkaWRsRmlsZXNMaXN0KTsKKworaWYgKCR2ZXJib3NlKSB7
CisgICAgcHJpbnQgIlJlc29sdmluZyBbU3VwcGxlbWVudGFsPVhYWF0gZGVwZW5kZW5jaWVzIGlu
IGFsbCBJREwgZmlsZXMuXG4iOworfQorCitvcGVuIEZILCAiPCAkaWRsRmlsZXNMaXN0IiBvciBk
aWUgIkNhbm5vdCBvcGVuICRpZGxGaWxlc0xpc3RcbiI7CitteSBAaWRsRmlsZXMgPSA8Rkg+Owor
Y2hvbXAoQGlkbEZpbGVzKTsKK2Nsb3NlIEZIOworCisjIFBhcnNlIGFsbCBJREwgZmlsZXMuCitt
eSAlZG9jdW1lbnRzOworbXkgJWludGVyZmFjZU5hbWVUb0lkbEZpbGU7Citmb3JlYWNoIG15ICRp
ZGxGaWxlIChAaWRsRmlsZXMpIHsKKyAgICBteSAkZnVsbFBhdGggPSBDd2Q6OnJlYWxwYXRoKCRp
ZGxGaWxlKTsKKyAgICBteSAkcGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKKyAg
ICAkZG9jdW1lbnRzeyRmdWxsUGF0aH0gPSAkcGFyc2VyLT5QYXJzZSgkaWRsRmlsZSwgJGRlZmlu
ZXMsICRwcmVwcm9jZXNzb3IpOworICAgICRpbnRlcmZhY2VOYW1lVG9JZGxGaWxle2ZpbGVwYXJz
ZShiYXNlbmFtZSgkaWRsRmlsZSksICIuaWRsIil9ID0gJGZ1bGxQYXRoOworfQorCisjIFJlc29s
dmVzIFtTdXBwbGVtZW50YWw9WFhYXSBkZXBlbmRlbmNpZXMuCitteSAlc3VwcGxlbWVudGFsczsK
K2ZvcmVhY2ggbXkgJGlkbEZpbGUgKGtleXMgJWRvY3VtZW50cykgeworICAgICRzdXBwbGVtZW50
YWxzeyRpZGxGaWxlfSA9IFtdOworICAgIGZvcmVhY2ggbXkgJGRhdGFOb2RlIChAeyRkb2N1bWVu
dHN7JGlkbEZpbGV9LT5jbGFzc2VzfSkgeworICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiU3VwcGxlbWVudGFsIn0pIHsKKyAgICAgICAgICAgIG15ICR0YXJnZXRJ
ZGxGaWxlID0gJGludGVyZmFjZU5hbWVUb0lkbEZpbGV7JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiU3VwcGxlbWVudGFsIn19OworICAgICAgICAgICAgcHVzaChAeyRzdXBwbGVtZW50
YWxzeyR0YXJnZXRJZGxGaWxlfX0sICRpZGxGaWxlKTsKKyAgICAgICAgICAgICMgVHJlYXRzIGFz
IGlmIHRoaXMgSURMIGZpbGUgZG9lcyBub3QgZXhpc3QuCisgICAgICAgICAgICBkZWxldGUgJHN1
cHBsZW1lbnRhbHN7JGlkbEZpbGV9OworICAgICAgICB9CisgICAgfQorfQorCisjIE91dHB1dHMg
dGhlIGRlcGVuZGVuY3kuCisjIFRoZSBmb3JtYXQgb2YgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5j
eSBmaWxlOgorIworIyBET01XaW5kb3cuaWRsIFAuaWRsIFEuaWRsIFIuaWRsCisjIERvY3VtZW50
LmlkbCBTLmlkbAorIyBFdmVudC5pZGwKKyMgLi4uCisjCisjIFRoZSBhYm92ZSBpbmRpY2F0ZXMg
dGhhdCBET01XaW5kb3cuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBQLmlkbCwgUS5pZGwgYW5kIFIu
aWRsLAorIyBEb2N1bWVudC5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IFMuaWRsLCBhbmQgRXZlbnQu
aWRsIGlzIHN1cHBsZW1lbnRlZCBieSBubyBJRExzLgorIyBUaGUgSURMIHRoYXQgc3VwcGxlbWVu
dHMgYW5vdGhlciBJREwgKGUuZy4gUC5pZGwpIG5ldmVyIGFwcGVhcnMgaW4gdGhlIGRlcGVuZGVu
Y3kgZmlsZS4KK29wZW4gRkgsICI+ICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSIgb3IgZGll
ICJDYW5ub3Qgb3BlbiAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGVcbiI7Citmb3JlYWNoIG15
ICRpZGxGaWxlIChzb3J0IGtleXMgJXN1cHBsZW1lbnRhbHMpIHsKKyAgICBwcmludCBGSCAkaWRs
RmlsZSwgIiBAeyRzdXBwbGVtZW50YWxzeyRpZGxGaWxlfX1cbiI7Cit9CitjbG9zZSBGSDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9N
VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDdmYTRhZjM1MjkyNjdiYTcyYjBhOTQx
MDA3OGI2ZjUwMGQ1NzliM2QuLmYxMTRmOTA0ODIzOWMwOTcwM2ZmYjkzNzZmYjQ1MTc5ZThhNDI1
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmNwcApAQCAtMjQsOCArMjQsMTIgQEAK
IAogI2luY2x1ZGUgIldlYkRPTVRlc3RJbnRlcmZhY2UuaCIKIAorI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5o
IgorI2luY2x1ZGUgIldlYkRPTVN0cmluZy5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhhbmRs
ZXIuaCIKKyNpbmNsdWRlICJ3dGYvdGV4dC9BdG9taWNTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03NCw2ICs3OCwzNCBAQCBX
ZWJET01UZXN0SW50ZXJmYWNlOjp+V2ViRE9NVGVzdEludGVyZmFjZSgpCiAgICAgbV9pbXBsID0g
MDsKIH0KIAorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQor
V2ViRE9NU3RyaW5nIFdlYkRPTVRlc3RJbnRlcmZhY2U6OnN0cjEoKSBjb25zdAoreworICAgIGlm
ICghaW1wbCgpKQorICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nKCk7CisKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgV1RGOjpTdHJpbmcmPihUZXN0U3VwcGxlbWVudGFsOjpzdHIxKGlt
cGwoKSkpOworfQorCisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKK1dlYkRPTVN0cmluZyBXZWJET01UZXN0SW50ZXJmYWNlOjpzdHIyKCkgY29u
c3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIFdlYkRPTVN0cmluZygpOwor
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdURjo6U3RyaW5nJj4oVGVzdFN1cHBsZW1l
bnRhbDo6c3RyMihpbXBsKCkpKTsKK30KKwordm9pZCBXZWJET01UZXN0SW50ZXJmYWNlOjpzZXRT
dHIyKGNvbnN0IFdlYkRPTVN0cmluZyYgbmV3U3RyMikKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3RyMihpbXBsKCksIG5l
d1N0cjIpOworfQorCisjZW5kaWYKIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIHRvV2ViQ29yZShj
b25zdCBXZWJET01UZXN0SW50ZXJmYWNlJiB3cmFwcGVyKQogewogICAgIHJldHVybiB3cmFwcGVy
LmltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmgKaW5kZXggNWRiNWRiOGFlMDhlNWFl
Y2M5MmFjYWY3ZDY3MjA2ZjliOGQzN2M5Zi4uNWFhMDNjNzk1MDk4YzI3NGFmNjcwYzM0NzA1MTg3
ODJiYjE2ZTE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmgKQEAgLTQxLDYgKzQxLDEz
IEBAIHB1YmxpYzoKICAgICBXZWJET01UZXN0SW50ZXJmYWNlJiBvcGVyYXRvcj0oY29uc3QgV2Vi
RE9NVGVzdEludGVyZmFjZSYpOwogICAgIHZpcnR1YWwgfldlYkRPTVRlc3RJbnRlcmZhY2UoKTsK
IAorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIFdl
YkRPTVN0cmluZyBzdHIxKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICBXZWJET01TdHJpbmcgc3RyMigpIGNvbnN0Owor
ICAgIHZvaWQgc2V0U3RyMihjb25zdCBXZWJET01TdHJpbmcmKTsKKyNlbmRpZgogCiAgICAgV2Vi
Q29yZTo6VGVzdEludGVyZmFjZSogaW1wbCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJm
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDcwODZjODBhZmU2NzFhNDI3Y2I2YWU5OGMy
YjFkMTcwOTYzNTE0OWEuLjVmOGZhZmVkMzE2MjViZDJhYzBkYTZkMWE0NmZmZDYyODlmNDcxYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oIgogI2luY2x1ZGUgIlRlc3RJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJU
ZXN0U3VwcGxlbWVudGFsLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NQmluZGluZy5oIgogI2luY2x1
ZGUgImdvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJL
aXRET01UZXN0SW50ZXJmYWNlLmgiCkBAIC01MSw2ICs1Miw0NyBAQCBXZWJLaXRET01UZXN0SW50
ZXJmYWNlKiBraXQoV2ViQ29yZTo6VGVzdEludGVyZmFjZSogb2JqKQogICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0IC8vCiAKK2djaGFyKgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRf
c3RyMShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmKQoreworI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNl
bGYsIDApOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBX
ZWJDb3JlOjpUZXN0SW50ZXJmYWNlICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBn
Y2hhciogcmVzID0gY29udmVydFRvVVRGOFN0cmluZyhUZXN0U3VwcGxlbWVudGFsOjpzdHIxKGl0
ZW0pKTsKKyAgICByZXR1cm4gcmVzOworI2Vsc2UKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAv
KiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KK30KKworZ2No
YXIqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIyKFdlYktpdERPTVRlc3RJbnRl
cmZhY2UqIHNlbGYpCit7CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpCisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2Ug
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdjaGFyKiByZXMgPSBjb252ZXJ0VG9V
VEY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN0cjIoaXRlbSkpOworICAgIHJldHVybiByZXM7
CisjZWxzZQorICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3RfaW50
ZXJmYWNlX3NldF9zdHIyKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYsIGNvbnN0IGdjaGFy
KiB2YWx1ZSkKK3sKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlICogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKKyAgICBXVEY6
OlN0cmluZyBjb252ZXJ0ZWRfdmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwor
ICAgIFRlc3RTdXBwbGVtZW50YWw6OnNldFN0cjIoaXRlbSwgY29udmVydGVkX3ZhbHVlKTsKKyNl
bmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KK30K
KwogCiBHX0RFRklORV9UWVBFKFdlYktpdERPTVRlc3RJbnRlcmZhY2UsIHdlYmtpdF9kb21fdGVz
dF9pbnRlcmZhY2UsIFdFQktJVF9UWVBFX0RPTV9PQkpFQ1QpCiAKQEAgLTY5LDYgKzExMSwxMiBA
QCBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBjb3JlKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHJl
cXVlc3QpCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIGVudW0gewogICAgIFBST1BfMCwKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICBQUk9QX1NUUjEs
CisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICov
CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgUFJP
UF9TVFIyLAorI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKSAqLwogfTsKIAogCkBAIC05MSw3ICsxMzksMTYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV90ZXN0X2ludGVyZmFjZV9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiBzdGF0aWMgdm9pZCB3
ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJLaXRET01U
ZXN0SW50ZXJmYWNlKiBzZWxmID0gV0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRShvYmplY3QpOwor
ICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIHN3aXRjaCAocHJvcF9pZCkgeworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQorICAgIGNhc2UgUFJPUF9TVFIyOgorICAgIHsKKyAgICAgICAgVGVz
dFN1cHBsZW1lbnRhbDo6c2V0U3RyMihjb3JlU2VsZiwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGdf
dmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlm
IC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BfaWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDIsNyArMTU5LDIzIEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X3Byb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcF9pCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJm
YWNlX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmID0gV0VCS0lU
X0RPTV9URVNUX0lOVEVSRkFDRShvYmplY3QpOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2Uq
IGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIHN3aXRjaCAocHJvcF9pZCkgewor
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIGNhc2Ug
UFJPUF9TVFIxOgorICAgIHsKKyAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgY29u
dmVydFRvVVRGOFN0cmluZyhUZXN0U3VwcGxlbWVudGFsOjpzdHIxKGNvcmVTZWxmKSkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpICovCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCisgICAgY2FzZSBQUk9QX1NUUjI6CisgICAgeworICAgICAgICBnX3ZhbHVlX3Rh
a2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN0
cjIoY29yZVNlbGYpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyNlbmRpZiAvKiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KICAgICBkZWZhdWx0OgogICAg
ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBw
c3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTI1LDYgKzE5OCwyNCBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdEludGVyZmFj
ZUNsYXNzKiByZQogICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90
ZXN0X2ludGVyZmFjZV9nZXRfcHJvcGVydHk7CiAgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3Rl
ZCA9IHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfY29uc3RydWN0ZWQ7CiAKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBST1BfU1RSMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdfcGFyYW1fc3BlY19zdHJpbmcoInN0cjEiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X2ludGVyZmFj
ZV9zdHIxIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtb25seSAgZ2NoYXIqIFRl
c3RJbnRlcmZhY2Uuc3RyMSIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBleHRyYSBk
b2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiIiwgLyogZGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVB
REFCTEUpKTsKKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRp
b24xMikgKi8KKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
KyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfU1RSMiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoInN0cjIiLCAvKiBuYW1l
ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ0ZXN0X2ludGVyZmFjZV9zdHIyIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InJlYWQtd3JpdGUgIGdjaGFyKiBUZXN0SW50ZXJmYWNlLnN0cjIiLCAvKiBsb25nZXIgLSBjb3Vs
ZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsIC8qIGRlZmF1bHQg
Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworI2VuZGlmIC8qIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLwogCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RJbnRlcmZhY2UuaAppbmRleCBmOWFmODY2YWEwMWY4ZGNlMjM0OTMzODMzZjBh
YWJjYjdhMmQyYTRkLi43YzM2NTA1OGI5Yjg0NDEyYmViN2JkYmM3NThkNzA1NWM0MGVhY2YxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5oCkBAIC00Niw2ICs0Niwz
NyBAQCBzdHJ1Y3QgX1dlYktpdERPTVRlc3RJbnRlcmZhY2VDbGFzcyB7CiBXRUJLSVRfQVBJIEdU
eXBlCiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF90eXBlICh2b2lkKTsKIAorLyoqCisg
KiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdHIxOgorICogQHNlbGY6IEEgI1dlYktp
dERPTVRlc3RJbnRlcmZhY2UKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBn
Y2hhcioKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjEoV2ViS2l0RE9NVGVzdElu
dGVyZmFjZSogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRf
c3RyMjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0SW50ZXJmYWNlCisgKgorICogUmV0dXJu
czoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ2NoYXIqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNl
X2dldF9zdHIyKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpOworCisvKioKKyAqIHdlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X3N0cjI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVz
dEludGVyZmFjZQorICogQHZhbHVlOiBBICNnY2hhcgorICoKKyAqIFJldHVybnM6CisgKgorKiov
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X3N0cjIoV2Vi
S2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKKwogR19FTkRf
REVDTFMKIAogI2VuZGlmIC8qIFdlYktpdERPTVRlc3RJbnRlcmZhY2VfaCAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcAppbmRleCA4NWQ4MTAwZTI3N2Y1YjAzMDNmMTQ0YWZkZGIzZWU4YjRiZjRiNmE0
Li5hOTZjODM2MWM2MzU0NmRlOTYzYjIwNzhiODYxNmYzYTkxOTA3ZTFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcApAQCAtMjYsMTAgKzI2LDE3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNUZXN0U3VwcGxlbWVu
dGFsLmgiCiAjaW5jbHVkZSAiVGVzdEludGVyZmFjZS5oIgorI2luY2x1ZGUgIlRlc3RTdXBwbGVt
ZW50YWwuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisj
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNlbmRpZgor
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCwxMiAr
NTcsMjEgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Rlc3RJbnRlcmZhY2UpOwogCiBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmYWNlVGFibGVWYWx1ZXNbXSA9
CiB7CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAg
eyAic3RyMSIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VTdHIxKSwgKGludHB0cl90
KTAgVEhVTktfR0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9LAorI2Vu
ZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAg
eyAic3RyMiIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlU3RyMiksIChpbnRwdHJfdClzZXRKU1Rlc3RJ
bnRlcmZhY2VTdHIyIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZHOjpOb0ludHJpbnNp
YykgfSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQorICAgIHsgInN0cjMiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZVN0cjMpLCAoaW50cHRyX3Qp
c2V0SlNUZXN0SW50ZXJmYWNlU3RyMyBUSFVOS19HRU5FUkFUT1IoMCkgSU5UUklOU0lDKERGRzo6
Tm9JbnRyaW5zaWMpIH0sCisjZW5kaWYKICAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRFbnVtIHwg
UmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpMCBUSFVOS19HRU5FUkFU
T1IoMCkgSU5UUklOU0lDKERGRzo6Tm9JbnRyaW5zaWMpIH0sCiAgICAgeyAwLCAwLCAwLCAwIFRI
VU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZHOjpOb0ludHJpbnNpYykgfQogfTsKIAogI3Vu
ZGVmIFRIVU5LX0dFTkVSQVRPUgotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RJbnRlcmZh
Y2VUYWJsZSA9IHsgMiwgMSwgSlNUZXN0SW50ZXJmYWNlVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRp
YyBjb25zdCBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlVGFibGUgPSB7IDgsIDcsIEpTVGVzdElu
dGVyZmFjZVRhYmxlVmFsdWVzLCAwIH07CiAvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAq
LwogI2lmIEVOQUJMRShKSVQpCiAjZGVmaW5lIFRIVU5LX0dFTkVSQVRPUihnZW5lcmF0b3IpICwg
Z2VuZXJhdG9yCkBAIC0xODcsMTIgKzIwMyw3MCBAQCBib29sIEpTVGVzdEludGVyZmFjZTo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYwog
ICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0SW50ZXJmYWNlLCBCYXNl
PihleGVjLCAmSlNUZXN0SW50ZXJmYWNlVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcik7CiB9CiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25k
aXRpb24xMikKK0pTVmFsdWUganNUZXN0SW50ZXJmYWNlU3RyMShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQoreworICAgIEpTVGVzdEludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdEludGVyZmFjZSo+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIFRlc3RJbnRlcmZhY2UqIGlt
cCA9IHN0YXRpY19jYXN0PFRlc3RJbnRlcmZhY2UqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3RyMShp
bXApKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VT
dHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYp
Cit7CisgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0
SW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CisgICAgVGVzdEludGVyZmFjZSogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdEludGVyZmFjZSo+KGNh
c3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBU
ZXN0U3VwcGxlbWVudGFsOjpzdHIyKGltcCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNl
bmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCitK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZVN0cjMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJikKK3sKKyAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRo
aXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihhc09iamVjdChzbG90QmFzZSkpOwor
ICAgIHJldHVybiBKU1Rlc3RTdXBwbGVtZW50YWw6OnN0cjMoY2FzdGVkVGhpcywgZXhlYyk7Cit9
CisKKyNlbmRpZgorCiBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNU
ZXN0SW50ZXJmYWNlKiBkb21PYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihh
c09iamVjdChzbG90QmFzZSkpOwogICAgIHJldHVybiBKU1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0
cnVjdG9yKGV4ZWMsIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOwogfQogCit2b2lkIEpTVGVz
dEludGVyZmFjZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKK3sKKyAgICBKU1Rlc3RJbnRlcmZhY2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50
ZXJmYWNlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCAmc19pbmZvKTsKKyAgICBsb29rdXBQdXQ8SlNUZXN0SW50ZXJmYWNlLCBCYXNlPihleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCAmSlNUZXN0SW50ZXJmYWNlVGFibGUsIHRoaXNPYmplY3QsIHNs
b3QpOworfQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
Cit2b2lkIHNldEpTVGVzdEludGVyZmFjZVN0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3Rl
ZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzT2JqZWN0KTsKKyAgICBU
ZXN0SW50ZXJmYWNlKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0SW50ZXJmYWNlKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdHIyKGltcCwgdXN0cmluZ1Rv
U3RyaW5nKHZhbHVlLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMp
KSk7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCit2b2lkIHNldEpTVGVzdEludGVyZmFjZVN0cjMoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBKU1Rlc3RTdXBwbGVt
ZW50YWw6OnNldFN0cjMoc3RhdGljX2Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc09iamVjdCks
IGV4ZWMsIHZhbHVlKTsKK30KKworI2VuZGlmCisKIEpTVmFsdWUgSlNUZXN0SW50ZXJmYWNlOjpn
ZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEludGVyZmFjZUNvbnN0
cnVjdG9yPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5oCmluZGV4IGJjMmIwNjdhZDNhMGZjN2IxZmE4ZjFmN2JkYTk3
MjVkMWExZDgyMDMuLjVlNWQzNTcxNjU3NmJlMzAxOWE5MzI3ZDdmZmYyNmU2ZmEzOWIyZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlND
ZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAKICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQpAQCAtMTM0LDYgKzEzNSwxMSBAQCBwcm90ZWN0ZWQ6CiAKIC8vIEF0dHJpYnV0
ZXMKIAorSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN0cjEoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOworSlNDOjpKU1ZhbHVlIGpzVGVz
dEludGVyZmFjZVN0cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYpOwordm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdHIyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0SW50
ZXJmYWNlU3RyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdEludGVyZmFjZVN0cjMoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZh
Y2UuaAppbmRleCBkYjdiZTI4Y2I5YWQ0MDhjZDUyZDg4ZjcwYjE4OGRkZDgzODI1ZjkyLi4yMzQy
NTliNDU0MDljYTMzZTZhNzIyZDkyNzMxMGE4NmI1NTU0MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVy
ZmFjZS5oCkBAIC0yOCw3ICsyOCwyMCBAQAogCiAjaWYgV0VCS0lUX1ZFUlNJT05fTUFYX0FMTE9X
RUQgPj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCiAKK0BjbGFzcyBOU1N0cmluZzsKKwogQGludGVy
ZmFjZSBET01UZXN0SW50ZXJmYWNlIDogRE9NT2JqZWN0CisjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChOU1N0cmluZyAqKXN0cjE7CisjZW5kaWYKKyNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKy0gKE5TU3RyaW5n
ICopc3RyMjsKKy0gKHZvaWQpc2V0U3RyMjooTlNTdHJpbmcgKiluZXdTdHIyOworI2VuZGlmCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChOU1N0cmlu
ZyAqKXN0cjM7CistICh2b2lkKXNldFN0cjM6KE5TU3RyaW5nICopbmV3U3RyMzsKKyNlbmRpZgog
QGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCmluZGV4IGFiNTkzMzMwYzg3
MjBjYWU4ZTFmYmM0YTFiZjEzNDQzYzU4YjkwZTguLmY0NjljZjEwYWY4NGY1YjliMWEyYzY5OGIx
MzIxMWM3OTc5MGUxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQpAQCAtNDEsNyArNDEs
OSBAQAogI2ltcG9ydCAiRE9NVGVzdEludGVyZmFjZUludGVybmFsLmgiCiAjaW1wb3J0ICJFeGNl
cHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW1w
b3J0ICJLVVJMLmgiCiAjaW1wb3J0ICJUZXN0SW50ZXJmYWNlLmgiCisjaW1wb3J0ICJUZXN0U3Vw
cGxlbWVudGFsLmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgogI2ltcG9ydCAiV2ViQ29yZU9i
akNFeHRyYXMuaCIKICNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKQEAgLTY4LDYg
KzcwLDQyIEBACiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0KIAorI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorLSAoTlNTdHJpbmcgKilzdHIxCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBUZXN0U3Vw
cGxlbWVudGFsOjpzdHIxKElNUEwpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKy0gKE5TU3RyaW5nICopc3RyMgoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gVGVzdFN1cHBs
ZW1lbnRhbDo6c3RyMihJTVBMKTsKK30KKworLSAodm9pZClzZXRTdHIyOihOU1N0cmluZyAqKW5l
d1N0cjIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3RyMihJTVBMLCBuZXdTdHIyKTsKK30KKyNlbmRpZgorCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChOU1N0cmlu
ZyAqKXN0cjMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgcmV0dXJuIFRlc3RTdXBwbGVtZW50YWw6OnN0cjMoSU1QTCk7Cit9CisKKy0gKHZvaWQpc2V0
U3RyMzooTlNTdHJpbmcgKiluZXdTdHIzCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIFRlc3RTdXBwbGVtZW50YWw6OnNldFN0cjMoSU1QTCwgbmV3U3Ry
Myk7Cit9CisjZW5kaWYKKwogQGVuZAogCiBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBjb3JlKERP
TVRlc3RJbnRlcmZhY2UgKndyYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY2
ZmRkNTFhOGQ2ZTc4Y2YzMzIwZWFlZWYxODZiOWNmYjI2ZmYzMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFsLmlk
bApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtc3RyQXJnLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRXN0ckFyZywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgSURMIGZpbGUgaXMgZm9yIHRl
c3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIGFuZCBmb3IgdHJhY2tpbmcKKy8vIGNo
YW5nZXMgaW4gaXRzIG91cHV0LgorbW9kdWxlIHRlc3QgeworICAgIGludGVyZmFjZSBbCisgICAg
ICAgIENvbmRpdGlvbmFsPUNvbmRpdGlvbjExfENvbmRpdGlvbjEyLAorICAgICAgICBTdXBwbGVt
ZW50YWw9VGVzdEludGVyZmFjZQorICAgIF0gVGVzdFN1cHBsZW1lbnRhbCB7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc3RyMTsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0
cmluZyBzdHIyOworICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVy
XSBET01TdHJpbmcgc3RyMzsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA1
YjQ1YTZkZjMzYzE2OTJhM2FmN2Q0NTA1NzY1MzJlYzFhODZkM2Q5Li41NjliZTk4YTcwZjUxYjkz
OGEwZTM3YmJiZTQ4YjViOTk2NmZhNWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjUs
MTIgKzI1LDE0IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlRlc3RTdXBwbGVtZW50YWwuaCIKICNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1
ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUg
IlY4VGVzdFN1cHBsZW1lbnRhbC5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw4ICs0Myw1OCBAQCBuYW1lc3BhY2UgVGVzdEludGVy
ZmFjZUludGVybmFsIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsg
fQogCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NU
QVRTKCJET00uVGVzdEludGVyZmFjZS5zdHIxLl9nZXQiKTsKKyAgICBUZXN0SW50ZXJmYWNlKiBp
bXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVy
biB2OFN0cmluZyhUZXN0U3VwcGxlbWVudGFsOjpzdHIxKGltcCkpOworfQorCisjZW5kaWYgLy8g
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBzdHIyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50
ZXJmYWNlLnN0cjIuX2dldCIpOworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVy
ZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RT
dXBwbGVtZW50YWw6OnN0cjIoaW1wKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQorCitzdGF0aWMgdm9pZCBzdHIyQXR0clNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFj
ZS5zdHIyLl9zZXQiKTsKKyAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENF
UFRJT05fQkxPQ0tfVk9JRChWOFBhcmFtZXRlcjw+LCB2LCB2YWx1ZSk7CisgICAgVGVzdFN1cHBs
ZW1lbnRhbDo6c2V0U3RyMihpbXAsIHYpOworICAgIHJldHVybjsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0SW50ZXJmYWNlSW50ZXJuYWwKIAorc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUg
VGVzdEludGVyZmFjZUF0dHJzW10gPSB7CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCisgICAgLy8gQXR0cmlidXRlICdzdHIxJyAoVHlwZTogJ3JlYWRvbmx5
IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQorICAgIHsi
c3RyMSIsIFRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3RyMUF0dHJHZXR0ZXIsIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAg
IC8vIEF0dHJpYnV0ZSAnc3RyMicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRp
b25hbCBJbXBsZW1lbnRlZEJ5JykKKyAgICB7InN0cjIiLCBUZXN0SW50ZXJmYWNlSW50ZXJuYWw6
OnN0cjJBdHRyR2V0dGVyLCBUZXN0SW50ZXJmYWNlSW50ZXJuYWw6OnN0cjJBdHRyU2V0dGVyLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKyAgICAvLyBBdHRyaWJ1dGUgJ3N0cjMnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
Q3VzdG9tU2V0dGVyIEN1c3RvbUdldHRlciBDb25kaXRpb25hbCBJbXBsZW1lbnRlZEJ5JykKKyAg
ICB7InN0cjMiLCBWOFRlc3RTdXBwbGVtZW50YWw6OnN0cjNBY2Nlc3NvckdldHRlciwgVjhUZXN0
U3VwcGxlbWVudGFsOjpzdHIzQWNjZXNzb3JTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorI2VuZGlm
IC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorfTsKKwogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRl
cmZhY2UuQ29uc3RydWN0b3IiKTsKQEAgLTgxLDcgKzEzMyw3IEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxh
dGUodjg6CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsK
ICAgICBkZWZhdWx0U2lnbmF0dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RJbnRl
cmZhY2UiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0SW50
ZXJmYWNlOjppbnRlcm5hbEZpZWxkQ291bnQsCi0gICAgICAgIDAsIDAsCisgICAgICAgIFRlc3RJ
bnRlcmZhY2VBdHRycywgV1RGX0FSUkFZX0xFTkdUSChUZXN0SW50ZXJmYWNlQXR0cnMpLAogICAg
ICAgICAwLCAwKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNv
bWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIo
VjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZDNlNGFiZGNiNTI5MWIyMTFkOWI1
MTFkZTAwY2NlOGYxYjBiOTEwLi4yZWEzOTMyODA0YmY1MmM3YWEyZmNjN2Q2NTdmNTI4NDk4OTIx
NzZmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTEtMTEtMjggIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBbU3VwcGxlbWVudGFsXSBJREwgYW5kIHN1cHBv
cnQgaXQgaW4gcnVuLWJpbmRpbmdzLXRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MzE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCisKKyAgICAgICAgcnVuLWJpbmRpbmdzLXRlc3RzIHN1cHBvcnRzIHRoZSBbU3VwcGxlbWVu
dGFsXSBJREwgaW4gdGhlIGZvbGxvd2luZyB3YXkuCisgICAgICAgICAgICAoMSkgSXQgY3JlYXRl
cyBhIGZpbGUgfHh8IGxpc3RpbmcgYWxsIElETCBmaWxlcy4KKyAgICAgICAgICAgICgyKSBJdCBn
ZW5lcmF0ZXMgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBmaWxlIHx5fCB1c2luZyByZXNvbHZl
LXN1cHBsZW1lbnRhbC5wbCBhbmQgfHh8LgorICAgICAgICAgICAgKDMpIEZvciBlYWNoIElETCBm
aWxlIHx6fCwgaXQgcnVucyBnZW5lcmF0ZS1iaW5kaW5ncy5wbCB3aXRoIHx5fC4KKyAgICAgICAg
ICAgICAgICBUaGVuLCBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBnZW5lcmF0ZXMgLmggYW5kIC5jcHAg
ZmlsZXMgZm9yIHRoZSBJREwgZmlsZSB8enwsCisgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGFs
bCBhdHRyaWJ1dGVzIGluIElETCBmaWxlcyB0aGF0IGFyZSBzdXBwbGVtZW50aW5nIHRoZSBJREwg
ZmlsZSB8enwuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0czoKKyAgICAg
ICAgKGdlbmVyYXRlX2Zyb21faWRsKToKKyAgICAgICAgKGdlbmVyYXRlX3N1cHBsZW1lbnRhbF9k
ZXBlbmRlbmN5KToKKyAgICAgICAgKGRldGVjdF9jaGFuZ2VzKToKKyAgICAgICAgKHJ1bl90ZXN0
cyk6CisgICAgICAgIChtYWluKToKKwogMjAxMS0xMS0yOSAgT2phbiBWYWZhaSAgPG9qYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIExpc3Qgb2YgYnVpbGRlcnMgaW4gdGhlIGZsYWtpbmVzcyBk
YXNoYm9hcmQgaXMgb3V0IG9mIGRhdGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWJp
bmRpbmdzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tYmluZGluZ3MtdGVzdHMKaW5kZXggOWJl
N2I0MWU2OWEyMzE0ZTBiNGMxNmIwYWZhNjEwNDA3YmU2YzAzMi4uMTc0N2ViNTQ4ZDk1NWJiNzEz
NGM2ZjNhMjgyNjI3MDI5ZGY2ZDg1YSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tYmlu
ZGluZ3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tYmluZGluZ3MtdGVzdHMKQEAgLTM4
LDcgKzM4LDcgQEAgaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbQogCiAKLWRlZiBnZW5lcmF0
ZV9mcm9tX2lkbChnZW5lcmF0b3IsIGlkbF9maWxlLCBvdXRwdXRfZGlyZWN0b3J5KToKK2RlZiBn
ZW5lcmF0ZV9mcm9tX2lkbChnZW5lcmF0b3IsIGlkbF9maWxlLCBvdXRwdXRfZGlyZWN0b3J5LCBz
dXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlKToKICAgICBjbWQgPSBbJ3BlcmwnLCAnLXcnLAog
ICAgICAgICAgICAnLUlXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMnLAogICAgICAgICAgICAnV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKQEAgLTQ3LDYgKzQ3
LDcgQEAgZGVmIGdlbmVyYXRlX2Zyb21faWRsKGdlbmVyYXRvciwgaWRsX2ZpbGUsIG91dHB1dF9k
aXJlY3RvcnkpOgogICAgICAgICAgICAnLS1kZWZpbmVzJywgJ1RFU1RJTkdfJXMnICUgZ2VuZXJh
dG9yLAogICAgICAgICAgICAnLS1nZW5lcmF0b3InLCBnZW5lcmF0b3IsCiAgICAgICAgICAgICct
LW91dHB1dERpcicsIG91dHB1dF9kaXJlY3RvcnksCisgICAgICAgICAgICctLXN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlJywgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSwKICAgICAgICAg
ICAgaWRsX2ZpbGVdCiAKICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91
dCA9IHN1YnByb2Nlc3MuUElQRSwgc3RkZXJyID0gc3VicHJvY2Vzcy5TVERPVVQpCkBAIC01Nyw2
ICs1OCwzMSBAQCBkZWYgZ2VuZXJhdGVfZnJvbV9pZGwoZ2VuZXJhdG9yLCBpZGxfZmlsZSwgb3V0
cHV0X2RpcmVjdG9yeSk6CiAgICAgcmV0dXJuIGV4aXRfY29kZQogCiAKK2RlZiBnZW5lcmF0ZV9z
dXBwbGVtZW50YWxfZGVwZW5kZW5jeShpbnB1dF9kaXJlY3RvcnksIHN1cHBsZW1lbnRhbF9kZXBl
bmRlbmN5X2ZpbGUpOgorICAgIGlkbF9maWxlc19saXN0ID0gdGVtcGZpbGUubWtzdGVtcCgpCisg
ICAgZm9yIGlucHV0X2ZpbGUgaW4gb3MubGlzdGRpcihpbnB1dF9kaXJlY3RvcnkpOgorICAgICAg
ICAobmFtZSwgZXh0ZW5zaW9uKSA9IG9zLnBhdGguc3BsaXRleHQoaW5wdXRfZmlsZSkKKyAgICAg
ICAgaWYgZXh0ZW5zaW9uICE9ICcuaWRsJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
IG9zLndyaXRlKGlkbF9maWxlc19saXN0WzBdLCBvcy5wYXRoLmpvaW4oaW5wdXRfZGlyZWN0b3J5
LCBpbnB1dF9maWxlKSArICJcbiIpCisgICAgb3MuY2xvc2UoaWRsX2ZpbGVzX2xpc3RbMF0pCisK
KyAgICBjbWQgPSBbJ3BlcmwnLCAnLXcnLAorICAgICAgICAgICAnLUlXZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMnLAorICAgICAgICAgICAnV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Jlc29sdmUt
c3VwcGxlbWVudGFsLnBsJywKKyAgICAgICAgICAgJy0taWRsRmlsZXNMaXN0JywgaWRsX2ZpbGVz
X2xpc3RbMV0sCisgICAgICAgICAgICctLWRlZmluZXMnLCAnJywKKyAgICAgICAgICAgJy0tc3Vw
cGxlbWVudGFsRGVwZW5kZW5jeUZpbGUnLCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlXQor
ICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0ID0gc3VicHJvY2Vzcy5Q
SVBFLCBzdGRlcnIgPSBzdWJwcm9jZXNzLlNURE9VVCkKKyAgICBleGl0X2NvZGUgPSBwcm9jZXNz
LndhaXQoKQorICAgIG91dHB1dCA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKVswXQorICAgIGlmIG91
dHB1dDoKKyAgICAgICAgcHJpbnQgb3V0cHV0CisKKyAgICBvcy5yZW1vdmUoaWRsX2ZpbGVzX2xp
c3RbMV0pCisgICAgcmV0dXJuIGV4aXRfY29kZQorCisKIGRlZiBkZXRlY3RfY2hhbmdlcyhnZW5l
cmF0b3IsIHdvcmtfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKICAgICBjaGFuZ2Vz
X2ZvdW5kID0gRmFsc2UKICAgICBmb3Igb3V0cHV0X2ZpbGUgaW4gb3MubGlzdGRpcih3b3JrX2Rp
cmVjdG9yeSk6CkBAIC03OSw3ICsxMDUsNyBAQCBkZWYgZGV0ZWN0X2NoYW5nZXMoZ2VuZXJhdG9y
LCB3b3JrX2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CiAgICAgcmV0dXJuIGNoYW5n
ZXNfZm91bmQKIAogCi1kZWYgcnVuX3Rlc3RzKGdlbmVyYXRvciwgaW5wdXRfZGlyZWN0b3J5LCBy
ZWZlcmVuY2VfZGlyZWN0b3J5LCByZXNldF9yZXN1bHRzKToKK2RlZiBydW5fdGVzdHMoZ2VuZXJh
dG9yLCBpbnB1dF9kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3RvcnksIHJlc2V0X3Jlc3VsdHMs
IHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUpOgogICAgIHdvcmtfZGlyZWN0b3J5ID0gcmVm
ZXJlbmNlX2RpcmVjdG9yeQogCiAgICAgcGFzc2VkID0gVHJ1ZQpAQCAtOTQsNyArMTIwLDggQEAg
ZGVmIHJ1bl90ZXN0cyhnZW5lcmF0b3IsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVj
dG9yeSwgcmVzZXRfcmVzdWx0cyk6CiAKICAgICAgICAgaWYgZ2VuZXJhdGVfZnJvbV9pZGwoZ2Vu
ZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oaW5wdXRf
ZGlyZWN0b3J5LCBpbnB1dF9maWxlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29y
a19kaXJlY3RvcnkpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrX2RpcmVjdG9y
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lf
ZmlsZSk6CiAgICAgICAgICAgICBwYXNzZWQgPSBGYWxzZQogCiAgICAgICAgIGlmIHJlc2V0X3Jl
c3VsdHM6CkBAIC0xMzIsMTIgKzE1OSwyMCBAQCBkZWYgbWFpbihhcmd2KToKICAgICAgICAgJ0NQ
UCcKICAgICBdCiAKKyAgICBpbnB1dF9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ1dlYkNvcmUn
LCAnYmluZGluZ3MnLCAnc2NyaXB0cycsICd0ZXN0JykKKyAgICBzdXBwbGVtZW50YWxfZGVwZW5k
ZW5jeV9maWxlID0gdGVtcGZpbGUubWtzdGVtcCgpWzFdCisgICAgaWYgZ2VuZXJhdGVfc3VwcGxl
bWVudGFsX2RlcGVuZGVuY3koaW5wdXRfZGlyZWN0b3J5LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5j
eV9maWxlKToKKyAgICAgICAgcHJpbnQgJ0ZhaWxlZCB0byBnZW5lcmF0ZSBhIHN1cHBsZW1lbnRh
bCBkZXBlbmRlbmN5IGZpbGUuJworICAgICAgICBvcy5yZW1vdmUoc3VwcGxlbWVudGFsX2RlcGVu
ZGVuY3lfZmlsZSkKKyAgICAgICAgcmV0dXJuIC0xCisKICAgICBmb3IgZ2VuZXJhdG9yIGluIGdl
bmVyYXRvcnM6CiAgICAgICAgIGlucHV0X2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbignV2ViQ29y
ZScsICdiaW5kaW5ncycsICdzY3JpcHRzJywgJ3Rlc3QnKQogICAgICAgICByZWZlcmVuY2VfZGly
ZWN0b3J5ID0gb3MucGF0aC5qb2luKCdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ3NjcmlwdHMnLCAn
dGVzdCcsIGdlbmVyYXRvcikKLSAgICAgICAgaWYgbm90IHJ1bl90ZXN0cyhnZW5lcmF0b3IsIGlu
cHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSwgcmVzZXRfcmVzdWx0cyk6CisgICAg
ICAgIGlmIG5vdCBydW5fdGVzdHMoZ2VuZXJhdG9yLCBpbnB1dF9kaXJlY3RvcnksIHJlZmVyZW5j
ZV9kaXJlY3RvcnksIHJlc2V0X3Jlc3VsdHMsIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUp
OgogICAgICAgICAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9IEZhbHNlCiAKKyAgICBvcy5yZW1vdmUo
c3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSkKICAgICBwcmludCAnJwogICAgIGlmIGFsbF90
ZXN0c19wYXNzZWQ6CiAgICAgICAgIHByaW50ICdBbGwgdGVzdHMgUEFTUyEnCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>